[llvm] 34fb780 - GlobalISel: Pass through AssumptionCache

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 19 16:11:01 PDT 2022


Author: Matt Arsenault
Date: 2022-09-19T19:10:51-04:00
New Revision: 34fb7803f8f50c347c9ab531850391a911c7cbc6

URL: https://github.com/llvm/llvm-project/commit/34fb7803f8f50c347c9ab531850391a911c7cbc6
DIFF: https://github.com/llvm/llvm-project/commit/34fb7803f8f50c347c9ab531850391a911c7cbc6.diff

LOG: GlobalISel: Pass through AssumptionCache

Added: 
    

Modified: 
    llvm/include/llvm/CodeGen/GlobalISel/IRTranslator.h
    llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/CodeGen/GlobalISel/IRTranslator.h b/llvm/include/llvm/CodeGen/GlobalISel/IRTranslator.h
index a1c07b05397af..67e884038b478 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 @@ class IRTranslator : public MachineFunctionPass {
   std::unique_ptr<OptimizationRemarkEmitter> 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 714f563894d67..c6871724da8d2 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<StackProtector>();
   AU.addRequired<TargetPassConfig>();
   AU.addRequired<GISelCSEAnalysisWrapperPass>();
+  AU.addRequired<AssumptionCacheTracker>();
   if (OptLevel != CodeGenOpt::None) {
     AU.addRequired<BranchProbabilityInfoWrapperPass>();
     AU.addRequired<AAResultsWrapperPass>();
@@ -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<AssumptionCacheTracker>().getAssumptionCache(
+      MF->getFunction());
   LibInfo = &getAnalysis<TargetLibraryInfoWrapperPass>().getTLI(F);
   FuncInfo.CanLowerReturn = CLI->checkReturnTypeForCallConv(*MF);
 


        


More information about the llvm-commits mailing list