[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
This commit is contained in:
Chandler Carruth 2015-01-21 11:23:40 +00:00
parent cde587f359
commit 67d5257374
3 changed files with 6 additions and 9 deletions

View File

@ -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:

View File

@ -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);
}

View File

@ -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