diff options
author | Roman Divacky <rdivacky@FreeBSD.org> | 2010-01-23 11:09:33 +0000 |
---|---|---|
committer | Roman Divacky <rdivacky@FreeBSD.org> | 2010-01-23 11:09:33 +0000 |
commit | 989df958a10f0beb90b89ccadd8351cbe51d90b1 (patch) | |
tree | 74eecbae571601ec6a626a53374b1eddc7b164a5 /tools/bugpoint | |
parent | 829000e035f46f2a227a5466e4e427a2f3cc00a9 (diff) | |
download | src-989df958a10f0beb90b89ccadd8351cbe51d90b1.tar.gz src-989df958a10f0beb90b89ccadd8351cbe51d90b1.zip |
Update LLVM to r94309.
Notes
Notes:
svn path=/vendor/llvm/dist/; revision=202878
Diffstat (limited to 'tools/bugpoint')
-rw-r--r-- | tools/bugpoint/Miscompilation.cpp | 37 |
1 files changed, 7 insertions, 30 deletions
diff --git a/tools/bugpoint/Miscompilation.cpp b/tools/bugpoint/Miscompilation.cpp index a5914178f12e..c2b002f9dd5c 100644 --- a/tools/bugpoint/Miscompilation.cpp +++ b/tools/bugpoint/Miscompilation.cpp @@ -22,7 +22,6 @@ #include "llvm/Module.h" #include "llvm/Pass.h" #include "llvm/Analysis/Verifier.h" -#include "llvm/Support/Mangler.h" #include "llvm/Transforms/Utils/Cloning.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/FileUtilities.h" @@ -235,30 +234,16 @@ bool ReduceMiscompilingFunctions::TestFuncs(const std::vector<Function*>&Funcs){ return TestFn(BD, ToOptimize, ToNotOptimize); } -/// DisambiguateGlobalSymbols - Mangle symbols to guarantee uniqueness by -/// modifying predominantly internal symbols rather than external ones. +/// DisambiguateGlobalSymbols - Give anonymous global values names. /// static void DisambiguateGlobalSymbols(Module *M) { - // Try not to cause collisions by minimizing chances of renaming an - // already-external symbol, so take in external globals and functions as-is. - // The code should work correctly without disambiguation (assuming the same - // mangler is used by the two code generators), but having symbols with the - // same name causes warnings to be emitted by the code generator. - Mangler Mang(*M); - // Agree with the CBE on symbol naming - Mang.markCharUnacceptable('.'); for (Module::global_iterator I = M->global_begin(), E = M->global_end(); - I != E; ++I) { - // Don't mangle asm names. - if (!I->hasName() || I->getName()[0] != 1) - I->setName(Mang.getMangledName(I)); - } - for (Module::iterator I = M->begin(), E = M->end(); I != E; ++I) { - // Don't mangle asm names or intrinsics. - if ((!I->hasName() || I->getName()[0] != 1) && - I->getIntrinsicID() == 0) - I->setName(Mang.getMangledName(I)); - } + I != E; ++I) + if (!I->hasName()) + I->setName("anon_global"); + for (Module::iterator I = M->begin(), E = M->end(); I != E; ++I) + if (!I->hasName()) + I->setName("anon_fn"); } /// ExtractLoops - Given a reduced list of functions that still exposed the bug, @@ -548,10 +533,6 @@ DebugAMiscompilation(BugDriver &BD, ExtractLoops(BD, TestFn, MiscompiledFunctions)) { // Okay, we extracted some loops and the problem still appears. See if we // can eliminate some of the created functions from being candidates. - - // Loop extraction can introduce functions with the same name (foo_code). - // Make sure to disambiguate the symbols so that when the program is split - // apart that we can link it back together again. DisambiguateGlobalSymbols(BD.getProgram()); // Do the reduction... @@ -569,10 +550,6 @@ DebugAMiscompilation(BugDriver &BD, ExtractBlocks(BD, TestFn, MiscompiledFunctions)) { // Okay, we extracted some blocks and the problem still appears. See if we // can eliminate some of the created functions from being candidates. - - // Block extraction can introduce functions with the same name (foo_code). - // Make sure to disambiguate the symbols so that when the program is split - // apart that we can link it back together again. DisambiguateGlobalSymbols(BD.getProgram()); // Do the reduction... |