diff options
author | Devang Patel <dpatel@apple.com> | 2010-06-24 00:33:28 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2010-06-24 00:33:28 +0000 |
commit | e9916a302f1bacad234d7dafc1df3dc968a6ba0f (patch) | |
tree | fa1c0857309e99b16b5b5691b33bd69afbb5004f /tools | |
parent | 6539dc6e6cb247de6960b2b1b3b8b01badb90728 (diff) | |
download | external_llvm-e9916a302f1bacad234d7dafc1df3dc968a6ba0f.zip external_llvm-e9916a302f1bacad234d7dafc1df3dc968a6ba0f.tar.gz external_llvm-e9916a302f1bacad234d7dafc1df3dc968a6ba0f.tar.bz2 |
Use ValueMap instead of DenseMap.
The ValueMapper used by various cloning utility maps MDNodes also.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106706 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r-- | tools/bugpoint/BugDriver.h | 4 | ||||
-rw-r--r-- | tools/bugpoint/CrashDebugger.cpp | 24 | ||||
-rw-r--r-- | tools/bugpoint/ExtractFunction.cpp | 18 | ||||
-rw-r--r-- | tools/bugpoint/Miscompilation.cpp | 36 |
4 files changed, 41 insertions, 41 deletions
diff --git a/tools/bugpoint/BugDriver.h b/tools/bugpoint/BugDriver.h index e5b7373..4681ac4 100644 --- a/tools/bugpoint/BugDriver.h +++ b/tools/bugpoint/BugDriver.h @@ -16,7 +16,7 @@ #ifndef BUGDRIVER_H #define BUGDRIVER_H -#include "llvm/ADT/DenseMap.h" +#include "llvm/ADT/ValueMap.h" #include <vector> #include <string> @@ -325,7 +325,7 @@ void DeleteFunctionBody(Function *F); /// module, split the functions OUT of the specified module, and place them in /// the new module. Module *SplitFunctionsOutOfModule(Module *M, const std::vector<Function*> &F, - DenseMap<const Value*, Value*> &ValueMap); + ValueMap<const Value*, Value*> &VMap); } // End llvm namespace diff --git a/tools/bugpoint/CrashDebugger.cpp b/tools/bugpoint/CrashDebugger.cpp index 67ceaa9..2d0631c 100644 --- a/tools/bugpoint/CrashDebugger.cpp +++ b/tools/bugpoint/CrashDebugger.cpp @@ -130,14 +130,14 @@ bool ReduceCrashingGlobalVariables::TestGlobalVariables( std::vector<GlobalVariable*> &GVs) { // Clone the program to try hacking it apart... - DenseMap<const Value*, Value*> ValueMap; - Module *M = CloneModule(BD.getProgram(), ValueMap); + ValueMap<const Value*, Value*> VMap; + Module *M = CloneModule(BD.getProgram(), VMap); // Convert list to set for fast lookup... std::set<GlobalVariable*> GVSet; for (unsigned i = 0, e = GVs.size(); i != e; ++i) { - GlobalVariable* CMGV = cast<GlobalVariable>(ValueMap[GVs[i]]); + GlobalVariable* CMGV = cast<GlobalVariable>(VMap[GVs[i]]); assert(CMGV && "Global Variable not in module?!"); GVSet.insert(CMGV); } @@ -204,13 +204,13 @@ bool ReduceCrashingFunctions::TestFuncs(std::vector<Function*> &Funcs) { return false; // Clone the program to try hacking it apart... - DenseMap<const Value*, Value*> ValueMap; - Module *M = CloneModule(BD.getProgram(), ValueMap); + ValueMap<const Value*, Value*> VMap; + Module *M = CloneModule(BD.getProgram(), VMap); // Convert list to set for fast lookup... std::set<Function*> Functions; for (unsigned i = 0, e = Funcs.size(); i != e; ++i) { - Function *CMF = cast<Function>(ValueMap[Funcs[i]]); + Function *CMF = cast<Function>(VMap[Funcs[i]]); assert(CMF && "Function not in module?!"); assert(CMF->getFunctionType() == Funcs[i]->getFunctionType() && "wrong ty"); assert(CMF->getName() == Funcs[i]->getName() && "wrong name"); @@ -270,13 +270,13 @@ namespace { bool ReduceCrashingBlocks::TestBlocks(std::vector<const BasicBlock*> &BBs) { // Clone the program to try hacking it apart... - DenseMap<const Value*, Value*> ValueMap; - Module *M = CloneModule(BD.getProgram(), ValueMap); + ValueMap<const Value*, Value*> VMap; + Module *M = CloneModule(BD.getProgram(), VMap); // Convert list to set for fast lookup... SmallPtrSet<BasicBlock*, 8> Blocks; for (unsigned i = 0, e = BBs.size(); i != e; ++i) - Blocks.insert(cast<BasicBlock>(ValueMap[BBs[i]])); + Blocks.insert(cast<BasicBlock>(VMap[BBs[i]])); outs() << "Checking for crash with only these blocks:"; unsigned NumPrint = Blocks.size(); @@ -371,14 +371,14 @@ namespace { bool ReduceCrashingInstructions::TestInsts(std::vector<const Instruction*> &Insts) { // Clone the program to try hacking it apart... - DenseMap<const Value*, Value*> ValueMap; - Module *M = CloneModule(BD.getProgram(), ValueMap); + ValueMap<const Value*, Value*> VMap; + Module *M = CloneModule(BD.getProgram(), VMap); // Convert list to set for fast lookup... SmallPtrSet<Instruction*, 64> Instructions; for (unsigned i = 0, e = Insts.size(); i != e; ++i) { assert(!isa<TerminatorInst>(Insts[i])); - Instructions.insert(cast<Instruction>(ValueMap[Insts[i]])); + Instructions.insert(cast<Instruction>(VMap[Insts[i]])); } outs() << "Checking for crash with only " << Instructions.size(); diff --git a/tools/bugpoint/ExtractFunction.cpp b/tools/bugpoint/ExtractFunction.cpp index c5aa6b4..d5611b5 100644 --- a/tools/bugpoint/ExtractFunction.cpp +++ b/tools/bugpoint/ExtractFunction.cpp @@ -201,7 +201,7 @@ static Constant *GetTorInit(std::vector<std::pair<Function*, int> > &TorList) { /// static ctors/dtors, we need to add an llvm.global_[cd]tors global to M2, and /// prune appropriate entries out of M1s list. static void SplitStaticCtorDtor(const char *GlobalName, Module *M1, Module *M2, - DenseMap<const Value*, Value*> ValueMap) { + ValueMap<const Value*, Value*> VMap) { GlobalVariable *GV = M1->getNamedGlobal(GlobalName); if (!GV || GV->isDeclaration() || GV->hasLocalLinkage() || !GV->use_empty()) return; @@ -229,7 +229,7 @@ static void SplitStaticCtorDtor(const char *GlobalName, Module *M1, Module *M2, M1Tors.push_back(std::make_pair(F, Priority)); else { // Map to M2's version of the function. - F = cast<Function>(ValueMap[F]); + F = cast<Function>(VMap[F]); M2Tors.push_back(std::make_pair(F, Priority)); } } @@ -264,7 +264,7 @@ static void SplitStaticCtorDtor(const char *GlobalName, Module *M1, Module *M2, Module * llvm::SplitFunctionsOutOfModule(Module *M, const std::vector<Function*> &F, - DenseMap<const Value*, Value*> &ValueMap) { + ValueMap<const Value*, Value*> &VMap) { // Make sure functions & globals are all external so that linkage // between the two modules will work. for (Module::iterator I = M->begin(), E = M->end(); I != E; ++I) @@ -276,8 +276,8 @@ llvm::SplitFunctionsOutOfModule(Module *M, I->setLinkage(GlobalValue::ExternalLinkage); } - DenseMap<const Value*, Value*> NewValueMap; - Module *New = CloneModule(M, NewValueMap); + ValueMap<const Value*, Value*> NewVMap; + Module *New = CloneModule(M, NewVMap); // Make sure global initializers exist only in the safe module (CBE->.so) for (Module::global_iterator I = New->global_begin(), E = New->global_end(); @@ -287,11 +287,11 @@ llvm::SplitFunctionsOutOfModule(Module *M, // Remove the Test functions from the Safe module std::set<Function *> TestFunctions; for (unsigned i = 0, e = F.size(); i != e; ++i) { - Function *TNOF = cast<Function>(ValueMap[F[i]]); + Function *TNOF = cast<Function>(VMap[F[i]]); DEBUG(errs() << "Removing function "); DEBUG(WriteAsOperand(errs(), TNOF, false)); DEBUG(errs() << "\n"); - TestFunctions.insert(cast<Function>(NewValueMap[TNOF])); + TestFunctions.insert(cast<Function>(NewVMap[TNOF])); DeleteFunctionBody(TNOF); // Function is now external in this module! } @@ -304,8 +304,8 @@ llvm::SplitFunctionsOutOfModule(Module *M, // Make sure that there is a global ctor/dtor array in both halves of the // module if they both have static ctor/dtor functions. - SplitStaticCtorDtor("llvm.global_ctors", M, New, NewValueMap); - SplitStaticCtorDtor("llvm.global_dtors", M, New, NewValueMap); + SplitStaticCtorDtor("llvm.global_ctors", M, New, NewVMap); + SplitStaticCtorDtor("llvm.global_dtors", M, New, NewVMap); return New; } diff --git a/tools/bugpoint/Miscompilation.cpp b/tools/bugpoint/Miscompilation.cpp index b2581d1..47ac3c5 100644 --- a/tools/bugpoint/Miscompilation.cpp +++ b/tools/bugpoint/Miscompilation.cpp @@ -251,10 +251,10 @@ int ReduceMiscompilingFunctions::TestFuncs(const std::vector<Function*> &Funcs, outs() << '\n'; // Split the module into the two halves of the program we want. - DenseMap<const Value*, Value*> ValueMap; - Module *ToNotOptimize = CloneModule(BD.getProgram(), ValueMap); + ValueMap<const Value*, Value*> VMap; + Module *ToNotOptimize = CloneModule(BD.getProgram(), VMap); Module *ToOptimize = SplitFunctionsOutOfModule(ToNotOptimize, Funcs, - ValueMap); + VMap); // Run the predicate, note that the predicate will delete both input modules. return TestFn(BD, ToOptimize, ToNotOptimize, Error); @@ -285,11 +285,11 @@ static bool ExtractLoops(BugDriver &BD, while (1) { if (BugpointIsInterrupted) return MadeChange; - DenseMap<const Value*, Value*> ValueMap; - Module *ToNotOptimize = CloneModule(BD.getProgram(), ValueMap); + ValueMap<const Value*, Value*> VMap; + Module *ToNotOptimize = CloneModule(BD.getProgram(), VMap); Module *ToOptimize = SplitFunctionsOutOfModule(ToNotOptimize, MiscompiledFunctions, - ValueMap); + VMap); Module *ToOptimizeLoopExtracted = BD.ExtractLoop(ToOptimize); if (!ToOptimizeLoopExtracted) { // If the loop extractor crashed or if there were no extractible loops, @@ -448,11 +448,11 @@ bool ReduceMiscompiledBlocks::TestFuncs(const std::vector<BasicBlock*> &BBs, outs() << '\n'; // Split the module into the two halves of the program we want. - DenseMap<const Value*, Value*> ValueMap; - Module *ToNotOptimize = CloneModule(BD.getProgram(), ValueMap); + ValueMap<const Value*, Value*> VMap; + Module *ToNotOptimize = CloneModule(BD.getProgram(), VMap); Module *ToOptimize = SplitFunctionsOutOfModule(ToNotOptimize, FunctionsBeingTested, - ValueMap); + VMap); // Try the extraction. If it doesn't work, then the block extractor crashed // or something, in which case bugpoint can't chase down this possibility. @@ -505,11 +505,11 @@ static bool ExtractBlocks(BugDriver &BD, return false; } - DenseMap<const Value*, Value*> ValueMap; - Module *ProgClone = CloneModule(BD.getProgram(), ValueMap); + ValueMap<const Value*, Value*> VMap; + Module *ProgClone = CloneModule(BD.getProgram(), VMap); Module *ToExtract = SplitFunctionsOutOfModule(ProgClone, MiscompiledFunctions, - ValueMap); + VMap); Module *Extracted = BD.ExtractMappedBlocksFromModule(Blocks, ToExtract); if (Extracted == 0) { // Weird, extraction should have worked. @@ -687,11 +687,11 @@ void BugDriver::debugMiscompilation(std::string *Error) { // Output a bunch of bitcode files for the user... outs() << "Outputting reduced bitcode files which expose the problem:\n"; - DenseMap<const Value*, Value*> ValueMap; - Module *ToNotOptimize = CloneModule(getProgram(), ValueMap); + ValueMap<const Value*, Value*> VMap; + Module *ToNotOptimize = CloneModule(getProgram(), VMap); Module *ToOptimize = SplitFunctionsOutOfModule(ToNotOptimize, MiscompiledFunctions, - ValueMap); + VMap); outs() << " Non-optimized portion: "; ToNotOptimize = swapProgramIn(ToNotOptimize); @@ -960,9 +960,9 @@ bool BugDriver::debugCodeGenerator(std::string *Error) { return true; // Split the module into the two halves of the program we want. - DenseMap<const Value*, Value*> ValueMap; - Module *ToNotCodeGen = CloneModule(getProgram(), ValueMap); - Module *ToCodeGen = SplitFunctionsOutOfModule(ToNotCodeGen, Funcs, ValueMap); + ValueMap<const Value*, Value*> VMap; + Module *ToNotCodeGen = CloneModule(getProgram(), VMap); + Module *ToCodeGen = SplitFunctionsOutOfModule(ToNotCodeGen, Funcs, VMap); // Condition the modules CleanupAndPrepareModules(*this, ToCodeGen, ToNotCodeGen); |