[llvm] 2f15319 - [AMDGPU] Fix running ResourceUsageAnalysis

Sebastian Neubauer via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 23 00:34:31 PDT 2021


Author: Sebastian Neubauer
Date: 2021-07-23T09:25:15+02:00
New Revision: 2f15319968ec38314a28570bb978726b288bd7cc

URL: https://github.com/llvm/llvm-project/commit/2f15319968ec38314a28570bb978726b288bd7cc
DIFF: https://github.com/llvm/llvm-project/commit/2f15319968ec38314a28570bb978726b288bd7cc.diff

LOG: [AMDGPU] Fix running ResourceUsageAnalysis

Clear the map when running the analysis multiple times.
The assertion that should ensure that every function is only
analyzed once triggered sometimes (once every ~70 compiles of some
graphics pipelines) when two functions of subsequent runs were allocated
at the same address.

Differential Revision: https://reviews.llvm.org/D106452

Added: 
    

Modified: 
    llvm/lib/Target/AMDGPU/AMDGPUResourceUsageAnalysis.h

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/AMDGPU/AMDGPUResourceUsageAnalysis.h b/llvm/lib/Target/AMDGPU/AMDGPUResourceUsageAnalysis.h
index b6a55f21c9f7..832e8119e444 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUResourceUsageAnalysis.h
+++ b/llvm/lib/Target/AMDGPU/AMDGPUResourceUsageAnalysis.h
@@ -51,13 +51,21 @@ struct AMDGPUResourceUsageAnalysis : public CallGraphSCCPass {
 
   bool runOnSCC(CallGraphSCC &SCC) override;
 
+  bool doInitialization(CallGraph &CG) override {
+    CallGraphResourceInfo.clear();
+    return CallGraphSCCPass::doInitialization(CG);
+  }
+
   void getAnalysisUsage(AnalysisUsage &AU) const override {
     AU.addRequired<MachineModuleInfoWrapperPass>();
     AU.setPreservesAll();
   }
 
   const SIFunctionResourceInfo &getResourceInfo(const Function *F) const {
-    return CallGraphResourceInfo.find(F)->getSecond();
+    auto Info = CallGraphResourceInfo.find(F);
+    assert(Info != CallGraphResourceInfo.end() &&
+           "Failed to find resource info for function");
+    return Info->getSecond();
   }
 
 private:


        


More information about the llvm-commits mailing list