4848#include " llvm/Analysis/GlobalsModRef.h"
4949#include " llvm/Analysis/InstructionSimplify.h"
5050#include " llvm/Analysis/LazyBlockFrequencyInfo.h"
51+ #include " llvm/Analysis/LazyValueInfo.h"
5152#include " llvm/Analysis/MemoryBuiltins.h"
5253#include " llvm/Analysis/OptimizationRemarkEmitter.h"
5354#include " llvm/Analysis/ProfileSummaryInfo.h"
@@ -3317,8 +3318,9 @@ Instruction *InstCombinerImpl::visitAllocSite(Instruction &MI) {
33173318 if (IntrinsicInst *II = dyn_cast<IntrinsicInst>(I)) {
33183319 if (II->getIntrinsicID () == Intrinsic::objectsize) {
33193320 SmallVector<Instruction *> InsertedInstructions;
3320- Value *Result = lowerObjectSizeCall (
3321- II, DL, &TLI, AA, /* MustSucceed=*/ true , &InsertedInstructions);
3321+ Value *Result =
3322+ lowerObjectSizeCall (II, DL, &TLI, AA, &LVI, /* MustSucceed=*/ true ,
3323+ &InsertedInstructions);
33223324 for (Instruction *Inserted : InsertedInstructions)
33233325 Worklist.add (Inserted);
33243326 replaceInstUsesWith (*I, Result);
@@ -5460,9 +5462,9 @@ void InstCombiner::computeBackEdges() {
54605462static bool combineInstructionsOverFunction (
54615463 Function &F, InstructionWorklist &Worklist, AliasAnalysis *AA,
54625464 AssumptionCache &AC, TargetLibraryInfo &TLI, TargetTransformInfo &TTI,
5463- DominatorTree &DT, OptimizationRemarkEmitter &ORE, BlockFrequencyInfo *BFI ,
5464- BranchProbabilityInfo *BPI, ProfileSummaryInfo *PSI ,
5465- const InstCombineOptions &Opts) {
5465+ LazyValueInfo &LVI, DominatorTree &DT, OptimizationRemarkEmitter &ORE,
5466+ BlockFrequencyInfo *BFI, BranchProbabilityInfo *BPI ,
5467+ ProfileSummaryInfo *PSI, const InstCombineOptions &Opts) {
54665468 auto &DL = F.getDataLayout ();
54675469 bool VerifyFixpoint = Opts.VerifyFixpoint &&
54685470 !F.hasFnAttribute (" instcombine-no-verify-fixpoint" );
@@ -5501,8 +5503,8 @@ static bool combineInstructionsOverFunction(
55015503 LLVM_DEBUG (dbgs () << " \n\n INSTCOMBINE ITERATION #" << Iteration << " on "
55025504 << F.getName () << " \n " );
55035505
5504- InstCombinerImpl IC (Worklist, Builder, F.hasMinSize (), AA, AC, TLI, TTI, DT,
5505- ORE, BFI, BPI, PSI, DL, RPOT);
5506+ InstCombinerImpl IC (Worklist, Builder, F.hasMinSize (), AA, AC, TLI, TTI,
5507+ LVI, DT, ORE, BFI, BPI, PSI, DL, RPOT);
55065508 IC.MaxArraySizeForCombine = MaxArraySize;
55075509 bool MadeChangeInThisIteration = IC.prepareWorklist (F);
55085510 MadeChangeInThisIteration |= IC.run ();
@@ -5552,6 +5554,7 @@ PreservedAnalyses InstCombinePass::run(Function &F,
55525554 auto &TLI = AM.getResult <TargetLibraryAnalysis>(F);
55535555 auto &ORE = AM.getResult <OptimizationRemarkEmitterAnalysis>(F);
55545556 auto &TTI = AM.getResult <TargetIRAnalysis>(F);
5557+ auto &LVI = AM.getResult <LazyValueAnalysis>(F);
55555558
55565559 auto *AA = &AM.getResult <AAManager>(F);
55575560 auto &MAMProxy = AM.getResult <ModuleAnalysisManagerFunctionProxy>(F);
@@ -5561,8 +5564,8 @@ PreservedAnalyses InstCombinePass::run(Function &F,
55615564 &AM.getResult <BlockFrequencyAnalysis>(F) : nullptr ;
55625565 auto *BPI = AM.getCachedResult <BranchProbabilityAnalysis>(F);
55635566
5564- if (!combineInstructionsOverFunction (F, Worklist, AA, AC, TLI, TTI, DT, ORE ,
5565- BFI, BPI, PSI, Options))
5567+ if (!combineInstructionsOverFunction (F, Worklist, AA, AC, TLI, TTI, LVI, DT ,
5568+ ORE, BFI, BPI, PSI, Options))
55665569 // No changes, all analyses are preserved.
55675570 return PreservedAnalyses::all ();
55685571
@@ -5580,6 +5583,7 @@ void InstructionCombiningPass::getAnalysisUsage(AnalysisUsage &AU) const {
55805583 AU.addRequired <TargetTransformInfoWrapperPass>();
55815584 AU.addRequired <DominatorTreeWrapperPass>();
55825585 AU.addRequired <OptimizationRemarkEmitterWrapperPass>();
5586+ AU.addRequired <LazyValueInfoWrapperPass>();
55835587 AU.addPreserved <DominatorTreeWrapperPass>();
55845588 AU.addPreserved <AAResultsWrapperPass>();
55855589 AU.addPreserved <BasicAAWrapperPass>();
@@ -5597,6 +5601,7 @@ bool InstructionCombiningPass::runOnFunction(Function &F) {
55975601 auto &AC = getAnalysis<AssumptionCacheTracker>().getAssumptionCache (F);
55985602 auto &TLI = getAnalysis<TargetLibraryInfoWrapperPass>().getTLI (F);
55995603 auto &TTI = getAnalysis<TargetTransformInfoWrapperPass>().getTTI (F);
5604+ auto &LVI = getAnalysis<LazyValueInfoWrapperPass>().getLVI ();
56005605 auto &DT = getAnalysis<DominatorTreeWrapperPass>().getDomTree ();
56015606 auto &ORE = getAnalysis<OptimizationRemarkEmitterWrapperPass>().getORE ();
56025607
@@ -5612,8 +5617,9 @@ bool InstructionCombiningPass::runOnFunction(Function &F) {
56125617 getAnalysisIfAvailable<BranchProbabilityInfoWrapperPass>())
56135618 BPI = &WrapperPass->getBPI ();
56145619
5615- return combineInstructionsOverFunction (F, Worklist, AA, AC, TLI, TTI, DT, ORE,
5616- BFI, BPI, PSI, InstCombineOptions ());
5620+ return combineInstructionsOverFunction (F, Worklist, AA, AC, TLI, TTI, LVI, DT,
5621+ ORE, BFI, BPI, PSI,
5622+ InstCombineOptions ());
56175623}
56185624
56195625char InstructionCombiningPass::ID = 0 ;
@@ -5630,6 +5636,7 @@ INITIALIZE_PASS_DEPENDENCY(TargetTransformInfoWrapperPass)
56305636INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass)
56315637INITIALIZE_PASS_DEPENDENCY(AAResultsWrapperPass)
56325638INITIALIZE_PASS_DEPENDENCY(GlobalsAAWrapperPass)
5639+ INITIALIZE_PASS_DEPENDENCY(LazyValueInfoWrapperPass)
56335640INITIALIZE_PASS_DEPENDENCY(OptimizationRemarkEmitterWrapperPass)
56345641INITIALIZE_PASS_DEPENDENCY(LazyBlockFrequencyInfoPass)
56355642INITIALIZE_PASS_DEPENDENCY(ProfileSummaryInfoWrapperPass)
0 commit comments