mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-12 13:30:51 +00:00
[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:
parent
cde587f359
commit
67d5257374
@ -22,7 +22,6 @@
|
|||||||
#include "llvm/IR/Operator.h"
|
#include "llvm/IR/Operator.h"
|
||||||
#include "llvm/IR/PatternMatch.h"
|
#include "llvm/IR/PatternMatch.h"
|
||||||
#include "llvm/Pass.h"
|
#include "llvm/Pass.h"
|
||||||
#include "llvm/Transforms/Utils/SimplifyLibCalls.h"
|
|
||||||
|
|
||||||
#define DEBUG_TYPE "instcombine"
|
#define DEBUG_TYPE "instcombine"
|
||||||
|
|
||||||
@ -111,7 +110,6 @@ class LLVM_LIBRARY_VISIBILITY InstCombiner
|
|||||||
DominatorTree *DT;
|
DominatorTree *DT;
|
||||||
LoopInfo *LI;
|
LoopInfo *LI;
|
||||||
bool MadeIRChange;
|
bool MadeIRChange;
|
||||||
LibCallSimplifier *Simplifier;
|
|
||||||
bool MinimizeSize;
|
bool MinimizeSize;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "llvm/IR/Statepoint.h"
|
#include "llvm/IR/Statepoint.h"
|
||||||
#include "llvm/Transforms/Utils/BuildLibCalls.h"
|
#include "llvm/Transforms/Utils/BuildLibCalls.h"
|
||||||
#include "llvm/Transforms/Utils/Local.h"
|
#include "llvm/Transforms/Utils/Local.h"
|
||||||
|
#include "llvm/Transforms/Utils/SimplifyLibCalls.h"
|
||||||
using namespace llvm;
|
using namespace llvm;
|
||||||
using namespace PatternMatch;
|
using namespace PatternMatch;
|
||||||
|
|
||||||
@ -1184,7 +1185,11 @@ static bool isSafeToEliminateVarargsCast(const CallSite CS,
|
|||||||
Instruction *InstCombiner::tryOptimizeCall(CallInst *CI, const DataLayout *DL) {
|
Instruction *InstCombiner::tryOptimizeCall(CallInst *CI, const DataLayout *DL) {
|
||||||
if (!CI->getCalledFunction()) return nullptr;
|
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;
|
++NumSimplified;
|
||||||
return CI->use_empty() ? CI : ReplaceInstUsesWith(*CI, With);
|
return CI->use_empty() ? CI : ReplaceInstUsesWith(*CI, With);
|
||||||
}
|
}
|
||||||
|
@ -2943,12 +2943,6 @@ bool InstCombiner::run(Function &F, AssumptionCache *AC, const DataLayout *DL,
|
|||||||
F.getContext(), TargetFolder(DL), InstCombineIRInserter(Worklist, AC));
|
F.getContext(), TargetFolder(DL), InstCombineIRInserter(Worklist, AC));
|
||||||
Builder = &TheBuilder;
|
Builder = &TheBuilder;
|
||||||
|
|
||||||
auto InstCombineRAUW = [this](Instruction *From, Value *With) {
|
|
||||||
ReplaceInstUsesWith(*From, With);
|
|
||||||
};
|
|
||||||
LibCallSimplifier TheSimplifier(DL, TLI, InstCombineRAUW);
|
|
||||||
Simplifier = &TheSimplifier;
|
|
||||||
|
|
||||||
bool EverMadeChange = false;
|
bool EverMadeChange = false;
|
||||||
|
|
||||||
// Lower dbg.declare intrinsics otherwise their value may be clobbered
|
// Lower dbg.declare intrinsics otherwise their value may be clobbered
|
||||||
|
Loading…
Reference in New Issue
Block a user