From 34fb7803f8f50c347c9ab531850391a911c7cbc6 Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Mon, 19 Sep 2022 15:25:29 -0400 Subject: [PATCH] GlobalISel: Pass through AssumptionCache --- llvm/include/llvm/CodeGen/GlobalISel/IRTranslator.h | 2 ++ llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/llvm/include/llvm/CodeGen/GlobalISel/IRTranslator.h b/llvm/include/llvm/CodeGen/GlobalISel/IRTranslator.h index a1c07b05..67e8840 100644 --- a/llvm/include/llvm/CodeGen/GlobalISel/IRTranslator.h +++ b/llvm/include/llvm/CodeGen/GlobalISel/IRTranslator.h @@ -34,6 +34,7 @@ namespace llvm { class AllocaInst; +class AssumptionCache; class BasicBlock; class CallInst; class CallLowering; @@ -571,6 +572,7 @@ private: std::unique_ptr ORE; AAResults *AA; + AssumptionCache *AC; const TargetLibraryInfo *LibInfo; FunctionLoweringInfo FuncInfo; diff --git a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp index 714f563..c687172 100644 --- a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp +++ b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp @@ -16,6 +16,7 @@ #include "llvm/ADT/SmallSet.h" #include "llvm/ADT/SmallVector.h" #include "llvm/Analysis/AliasAnalysis.h" +#include "llvm/Analysis/AssumptionCache.h" #include "llvm/Analysis/BranchProbabilityInfo.h" #include "llvm/Analysis/Loads.h" #include "llvm/Analysis/OptimizationRemarkEmitter.h" @@ -169,6 +170,7 @@ void IRTranslator::getAnalysisUsage(AnalysisUsage &AU) const { AU.addRequired(); AU.addRequired(); AU.addRequired(); + AU.addRequired(); if (OptLevel != CodeGenOpt::None) { AU.addRequired(); AU.addRequired(); @@ -1313,7 +1315,7 @@ bool IRTranslator::translateLoad(const User &U, MachineIRBuilder &MIRBuilder) { if (!(Flags & MachineMemOperand::MODereferenceable)) { if (isDereferenceableAndAlignedPointer(Ptr, LI.getType(), LI.getAlign(), - *DL, &LI, nullptr, nullptr, LibInfo)) + *DL, &LI, AC, nullptr, LibInfo)) Flags |= MachineMemOperand::MODereferenceable; } @@ -3397,6 +3399,8 @@ bool IRTranslator::runOnMachineFunction(MachineFunction &CurMF) { FuncInfo.BPI = nullptr; } + AC = &getAnalysis().getAssumptionCache( + MF->getFunction()); LibInfo = &getAnalysis().getTLI(F); FuncInfo.CanLowerReturn = CLI->checkReturnTypeForCallConv(*MF); -- 2.7.4