diff options
author | Misha Brukman <brukman+llvm@gmail.com> | 2003-07-29 16:02:28 +0000 |
---|---|---|
committer | Misha Brukman <brukman+llvm@gmail.com> | 2003-07-29 16:02:28 +0000 |
commit | de9720ffceb4101d5189ae5dd83e94acfa031e1e (patch) | |
tree | c378582e11340de32d14e6f2dacf10a3a8bb2a6e /tools | |
parent | 46721dde71cb1926cac9d7ef9e193590deb4ae05 (diff) | |
download | external_llvm-de9720ffceb4101d5189ae5dd83e94acfa031e1e.zip external_llvm-de9720ffceb4101d5189ae5dd83e94acfa031e1e.tar.gz external_llvm-de9720ffceb4101d5189ae5dd83e94acfa031e1e.tar.bz2 |
* Disambiguate symbols before we start splitting module by functions
* Moved DisambiguateGlobalSymbols() out of the ReduceMisCodegenFunctions class
* Added an assert to have a cleaner exit if `main' is not found in the module
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7380 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r-- | tools/bugpoint/CodeGeneratorBug.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/tools/bugpoint/CodeGeneratorBug.cpp b/tools/bugpoint/CodeGeneratorBug.cpp index 5d60bf2..597d580 100644 --- a/tools/bugpoint/CodeGeneratorBug.cpp +++ b/tools/bugpoint/CodeGeneratorBug.cpp @@ -41,8 +41,6 @@ public: bool TestFuncs(const std::vector<Function*> &CodegenTest, bool KeepFiles = false); - - void DisambiguateGlobalSymbols(Module *M); }; @@ -64,7 +62,6 @@ bool ReduceMisCodegenFunctions::TestFuncs(const std::vector<Function*> &Funcs, for (Module::giterator I=SafeModule->gbegin(),E = SafeModule->gend();I!=E;++I) I->setLinkage(GlobalValue::ExternalLinkage); - DisambiguateGlobalSymbols(SafeModule); Module *TestModule = CloneModule(SafeModule); // Make sure global initializers exist only in the safe module (CBE->.so) @@ -75,6 +72,7 @@ bool ReduceMisCodegenFunctions::TestFuncs(const std::vector<Function*> &Funcs, for (unsigned i = 0, e = Funcs.size(); i != e; ++i) { Function *TNOF = SafeModule->getFunction(Funcs[i]->getName(), Funcs[i]->getFunctionType()); + DEBUG(std::cerr << "Removing function " << Funcs[i]->getName() << "\n"); assert(TNOF && "Function doesn't exist in module!"); DeleteFunctionBody(TNOF); // Function is now external in this module! } @@ -96,6 +94,7 @@ bool ReduceMisCodegenFunctions::TestFuncs(const std::vector<Function*> &Funcs, if (BD.isExecutingJIT()) { // Must delete `main' from Safe module if it has it Function *safeMain = SafeModule->getNamedFunction("main"); + assert(safeMain && "`main' function not found in safe module!"); DeleteFunctionBody(safeMain); // Add an external function "getPointerToNamedFunction" that JIT provides @@ -283,7 +282,7 @@ namespace { }; } -void ReduceMisCodegenFunctions::DisambiguateGlobalSymbols(Module *M) { +void DisambiguateGlobalSymbols(Module *M) { // First, try not to cause collisions by minimizing chances of renaming an // already-external symbol, so take in external globals and functions as-is. Disambiguator D; @@ -317,6 +316,7 @@ bool BugDriver::debugCodeGenerator() { if (isExecutingJIT()) { // Get the `main' function Function *oldMain = Program->getNamedFunction("main"); + assert(oldMain && "`main' function not found in program!"); // Rename it oldMain->setName("old_main"); // Create a NEW `main' function with same type @@ -343,6 +343,8 @@ bool BugDriver::debugCodeGenerator() { BB->getInstList().push_back(ret); } + DisambiguateGlobalSymbols(Program); + // Do the reduction... ReduceMisCodegenFunctions(*this).reduceList(MisCodegenFunctions); @@ -355,4 +357,3 @@ bool BugDriver::debugCodeGenerator() { return false; } - |