diff options
author | Anand Shukla <ashukla@cs.uiuc.edu> | 2002-08-27 22:47:33 +0000 |
---|---|---|
committer | Anand Shukla <ashukla@cs.uiuc.edu> | 2002-08-27 22:47:33 +0000 |
commit | bcba516097ae122dc33d8615acdabbe8757988e4 (patch) | |
tree | 7337d94fa639111797480b786acbc8e9233490b4 /llvm/lib/CodeGen/Mapping/FInfo.cpp | |
parent | 2762328f9eaeab60160698b96a7e821a555b33e8 (diff) | |
download | bcm5719-llvm-bcba516097ae122dc33d8615acdabbe8757988e4.tar.gz bcm5719-llvm-bcba516097ae122dc33d8615acdabbe8757988e4.zip |
moved this file from lib/Reoptimizer/Mapping
llvm-svn: 3519
Diffstat (limited to 'llvm/lib/CodeGen/Mapping/FInfo.cpp')
-rwxr-xr-x | llvm/lib/CodeGen/Mapping/FInfo.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/Mapping/FInfo.cpp b/llvm/lib/CodeGen/Mapping/FInfo.cpp new file mode 100755 index 00000000000..504baec154f --- /dev/null +++ b/llvm/lib/CodeGen/Mapping/FInfo.cpp @@ -0,0 +1,75 @@ +#include "llvm/Reoptimizer/Mapping/FInfo.h" +#include "llvm/Pass.h" +#include "llvm/Module.h" + + +namespace { + class FunctionInfo : public Pass { + std::ostream &Out; + public: + FunctionInfo(std::ostream &out) : Out(out){} + const char* getPassName() const{return "Sparc FunctionInfo";} + bool run(Module &M); + private: + void FunctionInfo::writePrologue(const char *area, + const char *label); + void FunctionInfo::writeEpilogue(const char *area, + const char *label); + }; +} + +Pass *getFunctionInfo(std::ostream &out){ + return new FunctionInfo(out); +} + +bool FunctionInfo::run(Module &M){ + unsigned f; + + writePrologue("FUNCTION MAP", "FunctionBB"); + f=0; + for(Module::iterator FI=M.begin(), FE=M.end(); FE!=FI; ++FI){ + if(FI->isExternal()) continue; + Out << "\t.xword BBMIMap"<<f<<"\n"; + ++f; + } + writeEpilogue("FUNCTION MAP", "FunctionBB"); + + writePrologue("FUNCTION MAP", "FunctionLI"); + f=0; + for(Module::iterator FI=M.begin(), FE=M.end(); FE!=FI; ++FI){ + if(FI->isExternal()) continue; + Out << "\t.xword LMIMap"<<f<<"\n"; + ++f; + } + writeEpilogue("FUNCTION MAP", "FunctionLI"); + + + return false; +} + + +void FunctionInfo::writePrologue(const char *area, + const char *label){ + Out << "\n\n\n!"<<area<<"\n"; + Out << "\t.section \".rodata\"\n\t.align 8\n"; + Out << "\t.global "<<label<<"\n"; + Out << "\t.type "<<label<<",#object\n"; + Out << label<<":\n"; + //Out << "\t.word .end_"<<label<<"-"<<label<<"\n"; +} + +void FunctionInfo::writeEpilogue(const char *area, + const char *label){ + Out << ".end_" << label << ":\n"; + Out << "\t.size " << label << ", .end_" + << label << "-" << label << "\n\n\n\n"; + + //Out << "\n\n!" << area << " Length\n"; + //Out << "\t.section \".bbdata\",#alloc,#write\n"; + //Out << "\t.global " << label << "_length\n"; + //Out << "\t.align 4\n"; + //Out << "\t.type " << label << "_length,#object\n"; + //Out << "\t.size "<< label <<"_length,4\n"; + //Out << label <<" _length:\n"; + //Out << "\t.word\t.end_"<<label<<"-"<<label<<"\n\n\n\n"; +} |