diff --git a/llvm/include/llvm/ADT/GenericUniformityImpl.h b/llvm/include/llvm/ADT/GenericUniformityImpl.h index b7d0a1228ebfc..d397b937d78cc 100644 --- a/llvm/include/llvm/ADT/GenericUniformityImpl.h +++ b/llvm/include/llvm/ADT/GenericUniformityImpl.h @@ -33,6 +33,12 @@ /// the propagation of the impact of divergent control flow on the divergence of /// values (sync dependencies). /// +/// NOTE: In general, no interface exists for a transform to update +/// (Machine)UniformityInfo. Additionally, (Machine)CycleAnalysis is a +/// transitive dependence, but it also does not provide an interface for +/// updating itself. Given that, transforms should not preserve uniformity in +/// their getAnalysisUsage() callback. +/// //===----------------------------------------------------------------------===// #ifndef LLVM_ADT_GENERICUNIFORMITYIMPL_H diff --git a/llvm/lib/Target/AMDGPU/AMDGPURewriteUndefForPHI.cpp b/llvm/lib/Target/AMDGPU/AMDGPURewriteUndefForPHI.cpp index 459400e3359ca..79e9312034da4 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPURewriteUndefForPHI.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPURewriteUndefForPHI.cpp @@ -85,7 +85,6 @@ class AMDGPURewriteUndefForPHILegacy : public FunctionPass { AU.addRequired(); AU.addPreserved(); - AU.addPreserved(); AU.setPreservesCFG(); } }; diff --git a/llvm/lib/Target/AMDGPU/AMDGPUUnifyDivergentExitNodes.cpp b/llvm/lib/Target/AMDGPU/AMDGPUUnifyDivergentExitNodes.cpp index 9bc3ba161c9eb..1bfb7c0edd80a 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUUnifyDivergentExitNodes.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUUnifyDivergentExitNodes.cpp @@ -109,9 +109,6 @@ void AMDGPUUnifyDivergentExitNodes::getAnalysisUsage(AnalysisUsage &AU) const { // FIXME: preserve PostDominatorTreeWrapperPass } - // No divergent values are changed, only blocks and branch edges. - AU.addPreserved(); - // We preserve the non-critical-edgeness property AU.addPreservedID(BreakCriticalEdgesID);