Changes in src/CodeGen/Generate.cc [a54840b:9857e8d]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/CodeGen/Generate.cc
ra54840b r9857e8d 33 33 /// Removes misc. nodes that should not exist in CodeGen 34 34 struct TreeCleaner { 35 void previsit( CompoundStmt * stmt ); 35 void premutate( CompoundStmt * stmt ); 36 Statement * postmutate( ImplicitCtorDtorStmt * stmt ); 36 37 37 38 static bool shouldClean( Declaration * ); … … 41 42 PassVisitor<TreeCleaner> cleaner; 42 43 filter( translationUnit, [](Declaration * decl) { return TreeCleaner::shouldClean(decl); }, false ); 43 acceptAll( translationUnit, cleaner );44 mutateAll( translationUnit, cleaner ); 44 45 } // cleanTree 45 46 } // namespace … … 48 49 cleanTree( translationUnit ); 49 50 50 CodeGen::CodeGeneratorcgv( os, pretty, generateC, lineMarks );51 PassVisitor<CodeGenerator> cgv( os, pretty, generateC, lineMarks ); 51 52 for ( auto & dcl : translationUnit ) { 52 53 if ( LinkageSpec::isGeneratable( dcl->get_linkage() ) && (doIntrinsics || ! LinkageSpec::isBuiltin( dcl->get_linkage() ) ) ) { 53 cgv. updateLocation( dcl );54 cgv.pass.updateLocation( dcl ); 54 55 dcl->accept(cgv); 55 56 if ( doSemicolon( dcl ) ) { … … 65 66 os << CodeGen::genPrettyType( type, "" ); 66 67 } else { 67 CodeGen::CodeGeneratorcgv( os, true, false, false );68 PassVisitor<CodeGenerator> cgv( os, true, false, false ); 68 69 node->accept( cgv ); 69 70 } … … 72 73 73 74 namespace { 74 void TreeCleaner::pre visit( CompoundStmt * cstmt ) {75 void TreeCleaner::premutate( CompoundStmt * cstmt ) { 75 76 filter( cstmt->kids, [](Statement * stmt) { 76 77 if ( DeclStmt * declStmt = dynamic_cast< DeclStmt * >( stmt ) ) { … … 79 80 return false; 80 81 }, false ); 82 } 83 84 Statement * TreeCleaner::postmutate( ImplicitCtorDtorStmt * stmt ) { 85 Statement * callStmt = nullptr; 86 std::swap( stmt->callStmt, callStmt ); 87 delete stmt; 88 return callStmt; 81 89 } 82 90
Note: See TracChangeset
for help on using the changeset viewer.