Changes in src/CodeGen/CodeGenerator.cc [bf2438c:f7cb0bc]
- File:
-
- 1 edited
-
src/CodeGen/CodeGenerator.cc (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/CodeGen/CodeGenerator.cc
rbf2438c rf7cb0bc 14 14 // 15 15 16 #include <cassert> // for assert, assertf 17 #include <list> // for _List_iterator, list, list<>::it... 16 #include <algorithm> 17 #include <iostream> 18 #include <cassert> 19 #include <list> 20 21 #include "Parser/ParseNode.h" 22 23 #include "SynTree/Declaration.h" 24 #include "SynTree/Expression.h" 25 #include "SynTree/Initializer.h" 26 #include "SynTree/Statement.h" 27 #include "SynTree/Type.h" 28 #include "SynTree/Attribute.h" 29 30 #include "Common/utility.h" 31 #include "Common/UnimplementedError.h" 18 32 19 33 #include "CodeGenerator.h" 20 #include "Common/SemanticError.h" // for SemanticError 21 #include "Common/UniqueName.h" // for UniqueName 22 #include "Common/utility.h" // for CodeLocation, toString 23 #include "GenType.h" // for genType 24 #include "InitTweak/InitTweak.h" // for getPointerBase 25 #include "OperatorTable.h" // for OperatorInfo, operatorLookup 26 #include "Parser/LinkageSpec.h" // for Spec, Intrinsic 27 #include "SynTree/Attribute.h" // for Attribute 28 #include "SynTree/BaseSyntaxNode.h" // for BaseSyntaxNode 29 #include "SynTree/Constant.h" // for Constant 30 #include "SynTree/Declaration.h" // for DeclarationWithType, TypeDecl 31 #include "SynTree/Expression.h" // for Expression, UntypedExpr, Applica... 32 #include "SynTree/Initializer.h" // for Initializer, ListInit, Designation 33 #include "SynTree/Label.h" // for Label, operator<< 34 #include "SynTree/Statement.h" // for Statement, AsmStmt, BranchStmt 35 #include "SynTree/Type.h" // for Type, Type::StorageClasses, Func... 34 #include "OperatorTable.h" 35 #include "GenType.h" 36 37 #include "InitTweak/InitTweak.h" 36 38 37 39 using namespace std; … … 63 65 } // if 64 66 } // extension 65 66 ostream & CodeGenerator::Indenter::operator()( ostream & output ) const {67 return output << string( cg.cur_indent, ' ' );68 }69 70 ostream & operator<<( ostream & output, const CodeGenerator::Indenter &indent ) {71 return indent( output );72 }73 67 74 68 CodeGenerator::LabelPrinter & CodeGenerator::LabelPrinter::operator()( std::list< Label > & l ) { … … 109 103 } 110 104 111 CodeGenerator::CodeGenerator( std::ostream & os, bool pretty, bool genC, bool lineMarks ) : indent( *this), cur_indent( 0), insideFunction( false ), output( os ), printLabels( *this ), pretty( pretty ), genC( genC ), lineMarks( lineMarks ) {}105 CodeGenerator::CodeGenerator( std::ostream & os, bool pretty, bool genC, bool lineMarks ) : indent( CodeGenerator::tabsize ), insideFunction( false ), output( os ), printLabels( *this ), pretty( pretty ), genC( genC ), lineMarks( lineMarks ) {} 112 106 113 107 string CodeGenerator::mangleName( DeclarationWithType * decl ) { … … 200 194 output << " {" << endl; 201 195 202 cur_indent += CodeGenerator::tabsize;196 ++indent; 203 197 for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end(); i++ ) { 204 198 output << lineDirective( *i ) << indent; … … 207 201 } // for 208 202 209 cur_indent -= CodeGenerator::tabsize;203 --indent; 210 204 211 205 output << indent << "}"; … … 237 231 output << " {" << endl; 238 232 239 cur_indent += CodeGenerator::tabsize;233 ++indent; 240 234 for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end(); i++) { 241 235 ObjectDecl * obj = dynamic_cast< ObjectDecl* >( *i ); … … 249 243 } // for 250 244 251 cur_indent -= CodeGenerator::tabsize;245 --indent; 252 246 253 247 output << indent << "}"; … … 753 747 std::list< Statement * > & stmts = stmtExpr->get_statements()->get_kids(); 754 748 output << lineDirective( stmtExpr) << "({" << std::endl; 755 cur_indent += CodeGenerator::tabsize;749 ++indent; 756 750 unsigned int numStmts = stmts.size(); 757 751 unsigned int i = 0; … … 776 770 ++i; 777 771 } 778 cur_indent -= CodeGenerator::tabsize;772 --indent; 779 773 output << indent << "})"; 780 774 } … … 785 779 output << "{" << endl; 786 780 787 cur_indent += CodeGenerator::tabsize;781 ++indent; 788 782 789 783 for ( std::list<Statement *>::iterator i = ks.begin(); i != ks.end(); i++ ) { … … 796 790 } // if 797 791 } // for 798 cur_indent -= CodeGenerator::tabsize;792 --indent; 799 793 800 794 output << indent << "}"; … … 864 858 865 859 output << "{" << std::endl; 866 cur_indent += CodeGenerator::tabsize;860 ++indent; 867 861 acceptAll( switchStmt->get_statements(), *this ); 868 cur_indent -= CodeGenerator::tabsize;862 --indent; 869 863 output << indent << "}"; 870 864 } … … 883 877 std::list<Statement *> sts = caseStmt->get_statements(); 884 878 885 cur_indent += CodeGenerator::tabsize;879 ++indent; 886 880 for ( std::list<Statement *>::iterator i = sts.begin(); i != sts.end(); i++) { 887 881 output << indent << printLabels( (*i)->get_labels() ) ; … … 889 883 output << endl; 890 884 } // for 891 cur_indent -= CodeGenerator::tabsize;885 --indent; 892 886 } 893 887
Note:
See TracChangeset
for help on using the changeset viewer.