summaryrefslogtreecommitdiff
path: root/src/mem/slicc
diff options
context:
space:
mode:
Diffstat (limited to 'src/mem/slicc')
-rw-r--r--src/mem/slicc/SConscript4
-rw-r--r--src/mem/slicc/ast/Location.cc8
-rw-r--r--src/mem/slicc/ast/Location.hh2
-rw-r--r--src/mem/slicc/parser/parser.yy4
-rw-r--r--src/mem/slicc/symbols/SymbolTable.cc10
5 files changed, 16 insertions, 12 deletions
diff --git a/src/mem/slicc/SConscript b/src/mem/slicc/SConscript
index 64a199347..677ee33ec 100644
--- a/src/mem/slicc/SConscript
+++ b/src/mem/slicc/SConscript
@@ -51,8 +51,8 @@ common_dir = Dir('../gems_common')
slicc_env = env.Clone()
slicc_env['CPPDEFINES'] = ''
slicc_env['CPPPATH'] = Dir('../..')
-slicc_env['CCFLAGS'] = ''
-slicc_env['CXXFLAGS'] = '-Wall -W -Wwrite-strings -Woverloaded-virtual -Wno-unused -Wno-deprecated'
+slicc_env.Append(CCFLAGS=['-g', '-O0'])
+slicc_env.Append(CPPDEFINES=['DEBUG', 'TRACING_ON=1'])
slicc_env['LIBS'] = ''
slicc_env['LIBPATH'] = ''
all_slicc_sources = []
diff --git a/src/mem/slicc/ast/Location.cc b/src/mem/slicc/ast/Location.cc
index 6209ccdb7..23d1dba0f 100644
--- a/src/mem/slicc/ast/Location.cc
+++ b/src/mem/slicc/ast/Location.cc
@@ -39,11 +39,15 @@
#include "mem/slicc/ast/Location.hh"
int g_line_number = 0;
-string g_file_name("");
+string &g_file_name()
+{
+ static string the_string;
+ return the_string;
+}
Location::Location()
{
- m_file_name = g_file_name;
+ m_file_name = g_file_name();
m_line_number = g_line_number;
ostringstream sstr;
diff --git a/src/mem/slicc/ast/Location.hh b/src/mem/slicc/ast/Location.hh
index f070efc46..3233bdb3b 100644
--- a/src/mem/slicc/ast/Location.hh
+++ b/src/mem/slicc/ast/Location.hh
@@ -42,7 +42,7 @@
#include "mem/slicc/slicc_global.hh"
extern int g_line_number;
-extern string g_file_name;
+extern string &g_file_name();
class Location {
public:
diff --git a/src/mem/slicc/parser/parser.yy b/src/mem/slicc/parser/parser.yy
index 8090b88f7..724184665 100644
--- a/src/mem/slicc/parser/parser.yy
+++ b/src/mem/slicc/parser/parser.yy
@@ -337,7 +337,7 @@ DeclListAST* parse(string filename)
exit(1);
}
g_line_number = 1;
- g_file_name = filename;
+ g_file_name() = filename;
yyin = file;
g_decl_list_ptr = NULL;
yyparse();
@@ -346,7 +346,7 @@ DeclListAST* parse(string filename)
extern "C" void yyerror(char* s)
{
- fprintf(stderr, "%s:%d: %s at %s\n", g_file_name.c_str(), g_line_number, s, yytext);
+ fprintf(stderr, "%s:%d: %s at %s\n", g_file_name().c_str(), g_line_number, s, yytext);
exit(1);
}
diff --git a/src/mem/slicc/symbols/SymbolTable.cc b/src/mem/slicc/symbols/SymbolTable.cc
index 70391f838..e598ffcb4 100644
--- a/src/mem/slicc/symbols/SymbolTable.cc
+++ b/src/mem/slicc/symbols/SymbolTable.cc
@@ -477,8 +477,8 @@ void SymbolTable::writeChipFiles(string path) const
string child_types = var->lookupPair("child_types");
string::iterator it = child_types.begin();
- uint num_types = 0;
- for(uint t=0;t<child_types.size();t++){
+ unsigned num_types = 0;
+ for(unsigned t=0;t<child_types.size();t++){
if(child_types.at(t) == '<'){
num_types++;
}
@@ -488,10 +488,10 @@ void SymbolTable::writeChipFiles(string path) const
string* ids = new string[num_types];
int type_idx = 0;
bool id_done = false;
- for(uint t=0;t<child_types.size();t++){
+ for(unsigned t=0;t<child_types.size();t++){
if(child_types[t] == '<'){
id_done = false;
- uint r;
+ unsigned r;
for(r=t+1;child_types.at(r)!='>';r++){
if(r == child_types.size()){
cerr << "Parse error in child_types" << endl;
@@ -509,7 +509,7 @@ void SymbolTable::writeChipFiles(string path) const
}
}
- for(uint t=0;t<num_types;t++){
+ for(unsigned t=0;t<num_types;t++){
if(t==0)
sstr << " if(strcmp(" << child_selector << ", \"" << ids[t] << "\") == 0)" << endl;
else