diff options
Diffstat (limited to 'src/mem/slicc')
-rw-r--r-- | src/mem/slicc/SConscript | 4 | ||||
-rw-r--r-- | src/mem/slicc/ast/Location.cc | 8 | ||||
-rw-r--r-- | src/mem/slicc/ast/Location.hh | 2 | ||||
-rw-r--r-- | src/mem/slicc/parser/parser.yy | 4 | ||||
-rw-r--r-- | src/mem/slicc/symbols/SymbolTable.cc | 10 |
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 |