From 0644a84a5fd9622cfd4d215a77080175c4dbda8e Mon Sep 17 00:00:00 2001 From: Mehwish Nagda Date: Fri, 19 Jul 2002 22:54:08 +0000 Subject: [PATCH] changed size computation llvm-svn: 2974 --- .../CodeGen/InstrSelection/MappingInfo.cpp | 92 ++++++++++++------- 1 file changed, 57 insertions(+), 35 deletions(-) diff --git a/llvm/lib/CodeGen/InstrSelection/MappingInfo.cpp b/llvm/lib/CodeGen/InstrSelection/MappingInfo.cpp index f019e8db679b..0260c6711901 100644 --- a/llvm/lib/CodeGen/InstrSelection/MappingInfo.cpp +++ b/llvm/lib/CodeGen/InstrSelection/MappingInfo.cpp @@ -24,19 +24,19 @@ namespace { class getMappingInfoForFunction : public Pass { std::ostream &Out; private: - std::map Fkey; //key of function to num - std::map BBkey; //key basic block to num - std::map MIkey; //key machine instruction to num - vector > BBmap; - vector > MImap; - + std::map Fkey; //key of function to num + std::map BBkey; //key basic block to num + std::map MIkey; //key machine instruction to num + vector > BBmap; + vector > MImap; + void createFunctionKey(Module &M); void createBasicBlockKey(Module &M); void createMachineInstructionKey(Module &M); void createBBToMImap(Module &M); void createLLVMToMImap(Module &M); - void writeNumber(int X); - + unsigned writeNumber(unsigned X); + public: getMappingInfoForFunction(std::ostream &out) : Out(out){} @@ -57,6 +57,7 @@ Pass *MappingInfoForFunction(std::ostream &out){ //function definitions : //create and output maps to the .s file bool getMappingInfoForFunction::run(Module &M) { + // Module *M = &m; //map for Function to Function number @@ -75,7 +76,20 @@ bool getMappingInfoForFunction::run(Module &M) { //map of LLVM Instruction to Machine Instruction createLLVMToMImap(M); - + //unsigned r =0; + //for (Module::iterator FI = M.begin(), FE = M.end(); + //FI != FE; ++FI){ + //unsigned r = 0; + // if(FI->isExternal()) continue; + //for (Function::iterator BI = FI->begin(), BE = FI->end(); + // BI != BE; ++BI){ + //r++; + //} + //Out <<"#BB in F: "< >::iterator BBmapI = + //int x=0; + unsigned sizeBBmap=0; + unsigned sizeLImap=0; + for (vector >::iterator BBmapI = BBmap.begin(), BBmapE = BBmap.end(); BBmapI != BBmapE; ++BBmapI){ - writeNumber((*BBmapI)[0]); - writeNumber((*BBmapI)[1]); - writeNumber((*BBmapI)[2]); - writeNumber((*BBmapI)[3]); + sizeBBmap += writeNumber((*BBmapI)[0]); + sizeBBmap += writeNumber((*BBmapI)[1]); + sizeBBmap += writeNumber((*BBmapI)[2]); + sizeBBmap += writeNumber((*BBmapI)[3]); + //x++; } + //Out <<"sizeOutputed = "< >::iterator MImapI = + for (vector >::iterator MImapI = MImap.begin(), MImapE = MImap.end(); MImapI != MImapE; ++MImapI){ - writeNumber((*MImapI)[0]); - writeNumber((*MImapI)[1]); - writeNumber((*MImapI)[2]); - writeNumber((*MImapI)[3]); + sizeLImap += writeNumber((*MImapI)[0]); + sizeLImap += writeNumber((*MImapI)[1]); + sizeLImap += writeNumber((*MImapI)[2]); + sizeLImap += writeNumber((*MImapI)[3]); } Out << "\t.type LMIMap,#object\n"; Out << "\t.size LMIMap,"<>= 7; if (X) tmp |= 128; - Out << "\t.byte " << tmp << "\n"; + Out << "\t.byte " << tmp << "\n"; + ++i; } while(X); + return i; } //Assign a number to each Function void getMappingInfoForFunction::createFunctionKey(Module &M){ - int i = 0; - int j = 0; + unsigned i = 0; + unsigned j = 0; for (Module::iterator FI = M.begin(), FE = M.end(); FI != FE; ++FI){ //dont count F with 0 BBs @@ -156,10 +178,10 @@ void getMappingInfoForFunction::createFunctionKey(Module &M){ //Assign a Number to each BB void getMappingInfoForFunction::createBasicBlockKey(Module &M){ - //int i = 0; + //unsigned i = 0; for (Module::iterator FI = M.begin(), FE = M.end(); FI != FE; ++FI){ - int i = 0; + unsigned i = 0; if(FI->isExternal()) continue; for (Function::iterator BI = FI->begin(), BE = FI->end(); BI != BE; ++BI){ @@ -178,7 +200,7 @@ void getMappingInfoForFunction::createMachineInstructionKey(Module &M){ for (Function::iterator BI=FI->begin(), BE=FI->end(); BI != BE; ++BI){ MachineCodeForBasicBlock &miBB = MachineCodeForBasicBlock::get(BI); - int j = 0; + unsigned j = 0; for (MachineCodeForBasicBlock::iterator miI = miBB.begin(), miE = miBB.end(); miI != miE; ++miI, ++j){ MIkey[*miI] = j; @@ -194,13 +216,13 @@ void getMappingInfoForFunction::createBBToMImap(Module &M){ for (Module::iterator FI = M.begin(), FE = M.end(); FI != FE; ++FI){ if(FI->isExternal())continue; - int i = 0; + unsigned i = 0; for (Function::iterator BI = FI->begin(), BE = FI->end(); BI != BE; ++BI){ MachineCodeForBasicBlock &miBB = MachineCodeForBasicBlock::get(BI); //add record into the map - BBmap.push_back(vector()); - vector &oneBB = BBmap.back(); + BBmap.push_back(vector()); + vector &oneBB = BBmap.back(); oneBB.reserve(4); //add F# @@ -224,10 +246,10 @@ void getMappingInfoForFunction::createLLVMToMImap(Module &M){ for (Module::iterator FI = M.begin(), FE = M.end(); FI != FE; ++FI){ if(FI->isExternal()) continue; - int i =0; + unsigned i =0; for (Function::iterator BI = FI->begin(), BE = FI->end(); BI != BE; ++BI, ++i){ - int j = 0; + unsigned j = 0; for (BasicBlock::iterator II = BI->begin(), IE = BI->end(); II != IE; ++II, ++j){ MachineCodeForInstruction& miI = @@ -236,8 +258,8 @@ void getMappingInfoForFunction::createLLVMToMImap(Module &M){ for (MachineCodeForInstruction::iterator miII = miI.begin(), miIE = miI.end(); miII != miIE; ++miII){ - MImap.push_back(vector()); - vector &oneMI = MImap.back(); + MImap.push_back(vector()); + vector &oneMI = MImap.back(); oneMI.reserve(4); //add F#