#include "cgstd.h" #include "codegen.h" #include "cgdebug.h" #include "cgallocregs.h" #include "cgmodule_x86.h" #include "cgmodule_ppc.h" void cgGenCode( ostream &o,const vector &funs ){ CGModule *mod; if( opt_arch=="x86" ) mod=new CGModule_X86(o); else if( opt_arch=="ppc" ) mod=new CGModule_PPC(o); else fail( "No backend available" ); for( int k=0;ksym->value<createFrame( fun ); // cout<fun; // cout<<"FindEscapes"<findEscapes(); //local escaping tmps //cout<<"RenameTmps"<renameTmps(); //rename tmps->regs //cout<<"Linearize"<linearize(); //remove SEQ and ESQ nodes //cout<<"fixInt64"<fixInt64(); //rewrite int_64 code //cout<<"fixSymbols"<fixSymbols(); //fix symbols depending on platform //cout<<"preOptimize"<preOptimize(); //do some opts before asm gen //cout<<"genAssem"<genAssem(); //cout<<"createFlow"<createFlow(); // cout<assem; //cout<<"optDeadCode"<optDeadCode(); //cout<<"optDupLoads"<optDupLoads(); // cout<fun; // cout<assem; //cout<<"allocRegs"<allocRegs(); frame->finish(); frame->deleteFlow(); // frame->peepOpt(); //BROKEN!!!!! //cout<assem; } mod->emitModule(); }