diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-12-09 00:34:10 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-12-09 00:34:10 +0000 |
commit | 50102c29f09bfe38ca862036d5a6e5f54a5beff8 (patch) | |
tree | f0a450a3d3940504fc00f0d6331fbbce8cfd0848 | |
parent | 278a6c952b3276e7db61f578ab66f067064cad36 (diff) | |
download | bcm5719-llvm-50102c29f09bfe38ca862036d5a6e5f54a5beff8.tar.gz bcm5719-llvm-50102c29f09bfe38ca862036d5a6e5f54a5beff8.zip |
Return std::unique_ptr from SplitFunctionsOutOfModule. NFC.
llvm-svn: 255084
-rw-r--r-- | llvm/tools/bugpoint/BugDriver.h | 10 | ||||
-rw-r--r-- | llvm/tools/bugpoint/ExtractFunction.cpp | 17 | ||||
-rw-r--r-- | llvm/tools/bugpoint/Miscompilation.cpp | 28 |
3 files changed, 25 insertions, 30 deletions
diff --git a/llvm/tools/bugpoint/BugDriver.h b/llvm/tools/bugpoint/BugDriver.h index 45fcf74aa6b..20efff3fda5 100644 --- a/llvm/tools/bugpoint/BugDriver.h +++ b/llvm/tools/bugpoint/BugDriver.h @@ -331,11 +331,11 @@ void DeleteGlobalInitializer(GlobalVariable *GV); // void DeleteFunctionBody(Function *F); -/// SplitFunctionsOutOfModule - Given a module and a list of functions in the -/// 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, - ValueToValueMapTy &VMap); +/// Given a module and a list of functions in the module, split the functions +/// OUT of the specified module, and place them in the new module. +std::unique_ptr<Module> +SplitFunctionsOutOfModule(Module *M, const std::vector<Function *> &F, + ValueToValueMapTy &VMap); } // End llvm namespace diff --git a/llvm/tools/bugpoint/ExtractFunction.cpp b/llvm/tools/bugpoint/ExtractFunction.cpp index 62c3f3e9f25..fe0ab69dc16 100644 --- a/llvm/tools/bugpoint/ExtractFunction.cpp +++ b/llvm/tools/bugpoint/ExtractFunction.cpp @@ -303,13 +303,8 @@ static void SplitStaticCtorDtor(const char *GlobalName, Module *M1, Module *M2, } } - -/// SplitFunctionsOutOfModule - Given a module and a list of functions in the -/// module, split the functions OUT of the specified module, and place them in -/// the new module. -Module * -llvm::SplitFunctionsOutOfModule(Module *M, - const std::vector<Function*> &F, +std::unique_ptr<Module> +llvm::SplitFunctionsOutOfModule(Module *M, const std::vector<Function *> &F, ValueToValueMapTy &VMap) { // Make sure functions & globals are all external so that linkage // between the two modules will work. @@ -323,7 +318,7 @@ llvm::SplitFunctionsOutOfModule(Module *M, } ValueToValueMapTy NewVMap; - Module *New = CloneModule(M, NewVMap).release(); + std::unique_ptr<Module> New = CloneModule(M, NewVMap); // Remove the Test functions from the Safe module std::set<Function *> TestFunctions; @@ -364,9 +359,9 @@ 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, NewVMap); - SplitStaticCtorDtor("llvm.global_dtors", M, New, NewVMap); - + SplitStaticCtorDtor("llvm.global_ctors", M, New.get(), NewVMap); + SplitStaticCtorDtor("llvm.global_dtors", M, New.get(), NewVMap); + return New; } diff --git a/llvm/tools/bugpoint/Miscompilation.cpp b/llvm/tools/bugpoint/Miscompilation.cpp index d2aba92c7c9..0c8b313c6a8 100644 --- a/llvm/tools/bugpoint/Miscompilation.cpp +++ b/llvm/tools/bugpoint/Miscompilation.cpp @@ -280,8 +280,8 @@ bool ReduceMiscompilingFunctions::TestFuncs(const std::vector<Function*> &Funcs, // Split the module into the two halves of the program we want. VMap.clear(); Module *ToNotOptimize = CloneModule(BD.getProgram(), VMap).release(); - Module *ToOptimize = SplitFunctionsOutOfModule(ToNotOptimize, FuncsOnClone, - VMap); + Module *ToOptimize = + SplitFunctionsOutOfModule(ToNotOptimize, FuncsOnClone, VMap).release(); // Run the predicate, note that the predicate will delete both input modules. bool Broken = TestFn(BD, ToOptimize, ToNotOptimize, Error); @@ -319,8 +319,8 @@ static bool ExtractLoops(BugDriver &BD, ValueToValueMapTy VMap; std::unique_ptr<Module> ToNotOptimize = CloneModule(BD.getProgram(), VMap); Module *ToOptimize = SplitFunctionsOutOfModule(ToNotOptimize.get(), - MiscompiledFunctions, - VMap); + MiscompiledFunctions, VMap) + .release(); std::unique_ptr<Module> ToOptimizeLoopExtracted = BD.extractLoop(ToOptimize); if (!ToOptimizeLoopExtracted) { @@ -519,9 +519,8 @@ bool ReduceMiscompiledBlocks::TestFuncs(const std::vector<BasicBlock*> &BBs, VMap.clear(); Module *ToNotOptimize = CloneModule(BD.getProgram(), VMap).release(); - Module *ToOptimize = SplitFunctionsOutOfModule(ToNotOptimize, - FuncsOnClone, - VMap); + Module *ToOptimize = + SplitFunctionsOutOfModule(ToNotOptimize, FuncsOnClone, VMap).release(); // 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. @@ -580,9 +579,9 @@ static bool ExtractBlocks(BugDriver &BD, ValueToValueMapTy VMap; Module *ProgClone = CloneModule(BD.getProgram(), VMap).release(); - Module *ToExtract = SplitFunctionsOutOfModule(ProgClone, - MiscompiledFunctions, - VMap); + Module *ToExtract = + SplitFunctionsOutOfModule(ProgClone, MiscompiledFunctions, VMap) + .release(); std::unique_ptr<Module> Extracted = BD.extractMappedBlocksFromModule(Blocks, ToExtract); if (!Extracted) { @@ -762,9 +761,9 @@ void BugDriver::debugMiscompilation(std::string *Error) { outs() << "Outputting reduced bitcode files which expose the problem:\n"; ValueToValueMapTy VMap; Module *ToNotOptimize = CloneModule(getProgram(), VMap).release(); - Module *ToOptimize = SplitFunctionsOutOfModule(ToNotOptimize, - MiscompiledFunctions, - VMap); + Module *ToOptimize = + SplitFunctionsOutOfModule(ToNotOptimize, MiscompiledFunctions, VMap) + .release(); outs() << " Non-optimized portion: "; EmitProgressBitcode(ToNotOptimize, "tonotoptimize", true); @@ -1038,7 +1037,8 @@ bool BugDriver::debugCodeGenerator(std::string *Error) { // Split the module into the two halves of the program we want. ValueToValueMapTy VMap; Module *ToNotCodeGen = CloneModule(getProgram(), VMap).release(); - Module *ToCodeGen = SplitFunctionsOutOfModule(ToNotCodeGen, Funcs, VMap); + Module *ToCodeGen = + SplitFunctionsOutOfModule(ToNotCodeGen, Funcs, VMap).release(); // Condition the modules CleanupAndPrepareModules(*this, ToCodeGen, ToNotCodeGen); |