From 67d52573742da2951054df93aae3d1132352d4f7 Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Wed, 21 Jan 2015 11:23:40 +0000 Subject: [PATCH] [PM] Simplify (ha! ha!) the way that instcombine calls the SimplifyLibCalls utility by sinking it into the specific call part of the combiner. This will avoid us needing to do any contortions to build this object in a subsequent refactoring I'm doing and seems generally better factored. We don't need this utility everywhere and it carries no interesting state so we might as well build it on demand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226654 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/InstCombine/InstCombine.h | 2 -- lib/Transforms/InstCombine/InstCombineCalls.cpp | 7 ++++++- lib/Transforms/InstCombine/InstructionCombining.cpp | 6 ------ 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/lib/Transforms/InstCombine/InstCombine.h b/lib/Transforms/InstCombine/InstCombine.h index e404581bd91..5aaba2c17e2 100644 --- a/lib/Transforms/InstCombine/InstCombine.h +++ b/lib/Transforms/InstCombine/InstCombine.h @@ -22,7 +22,6 @@ #include "llvm/IR/Operator.h" #include "llvm/IR/PatternMatch.h" #include "llvm/Pass.h" -#include "llvm/Transforms/Utils/SimplifyLibCalls.h" #define DEBUG_TYPE "instcombine" @@ -111,7 +110,6 @@ class LLVM_LIBRARY_VISIBILITY InstCombiner DominatorTree *DT; LoopInfo *LI; bool MadeIRChange; - LibCallSimplifier *Simplifier; bool MinimizeSize; public: diff --git a/lib/Transforms/InstCombine/InstCombineCalls.cpp b/lib/Transforms/InstCombine/InstCombineCalls.cpp index dab2c4b47ad..40f288c175c 100644 --- a/lib/Transforms/InstCombine/InstCombineCalls.cpp +++ b/lib/Transforms/InstCombine/InstCombineCalls.cpp @@ -21,6 +21,7 @@ #include "llvm/IR/Statepoint.h" #include "llvm/Transforms/Utils/BuildLibCalls.h" #include "llvm/Transforms/Utils/Local.h" +#include "llvm/Transforms/Utils/SimplifyLibCalls.h" using namespace llvm; using namespace PatternMatch; @@ -1184,7 +1185,11 @@ static bool isSafeToEliminateVarargsCast(const CallSite CS, Instruction *InstCombiner::tryOptimizeCall(CallInst *CI, const DataLayout *DL) { if (!CI->getCalledFunction()) return nullptr; - if (Value *With = Simplifier->optimizeCall(CI)) { + auto InstCombineRAUW = [this](Instruction *From, Value *With) { + ReplaceInstUsesWith(*From, With); + }; + LibCallSimplifier Simplifier(DL, TLI, InstCombineRAUW); + if (Value *With = Simplifier.optimizeCall(CI)) { ++NumSimplified; return CI->use_empty() ? CI : ReplaceInstUsesWith(*CI, With); } diff --git a/lib/Transforms/InstCombine/InstructionCombining.cpp b/lib/Transforms/InstCombine/InstructionCombining.cpp index 33f024b2729..9436f23345b 100644 --- a/lib/Transforms/InstCombine/InstructionCombining.cpp +++ b/lib/Transforms/InstCombine/InstructionCombining.cpp @@ -2943,12 +2943,6 @@ bool InstCombiner::run(Function &F, AssumptionCache *AC, const DataLayout *DL, F.getContext(), TargetFolder(DL), InstCombineIRInserter(Worklist, AC)); Builder = &TheBuilder; - auto InstCombineRAUW = [this](Instruction *From, Value *With) { - ReplaceInstUsesWith(*From, With); - }; - LibCallSimplifier TheSimplifier(DL, TLI, InstCombineRAUW); - Simplifier = &TheSimplifier; - bool EverMadeChange = false; // Lower dbg.declare intrinsics otherwise their value may be clobbered -- 2.34.1