[llvm] [DXIL] Consume Metadata Analysis information in passes (PR #108034)
Justin Bogner via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 23 10:52:08 PDT 2024
================
@@ -247,9 +247,10 @@ class DXILPrepareModule : public ModulePass {
DXILPrepareModule() : ModulePass(ID) {}
void getAnalysisUsage(AnalysisUsage &AU) const override {
+ AU.setPreservesAll();
AU.addPreserved<ShaderFlagsAnalysisWrapper>();
AU.addPreserved<DXILResourceMDWrapper>();
- AU.addPreserved<DXILMetadataAnalysisWrapperPass>();
+ AU.addRequired<DXILMetadataAnalysisWrapperPass>();
----------------
bogner wrote:
I'm not arguing that the `addRequired<DXILMetadataAnalysisWrapperPass>()` isn't necessary, it obviously is. I'm saying we shouldn't change the specific list of preserved passes to `setPreservesAll`. This pass does not preserve all analyses, since it modifies instructions. The code before your change looks correct to me:
```c++
AU.addPreserved<ShaderFlagsAnalysisWrapper>();
AU.addPreserved<DXILResourceMDWrapper>();
AU.addPreserved<DXILMetadataAnalysisWrapperPass>();
AU.addPreserved<DXILResourceWrapperPass>();
```
We can simply add `AU.addRequired<DXILMetadataAnalysisWrapperPass>();` after those calls instead of changing those calls to `setPreservesAll`, since that is incorrect.
https://github.com/llvm/llvm-project/pull/108034
More information about the llvm-commits
mailing list