[llvm] [IPO] Prevent removal of some convergent attr (PR #134863)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 8 08:42:16 PDT 2025


================
@@ -1967,7 +1980,9 @@ static void inferConvergent(const SCCNodeSet &SCCNodes,
   AI.registerAttrInference(AttributeInferer::InferenceDescriptor{
       Attribute::Convergent,
       // Skip non-convergent functions.
-      [](const Function &F) { return !F.isConvergent(); },
+      [](const Function &F) {
+        return !F.isConvergent() || FunctionRequiresConvergence(F);
+      },
----------------
arsenm wrote:

Does FunctionAttrs run in a bottom up and top down phase? Ideally we wouldn't need to inspect the users of the function, and strip convergent from call sites when possible 

https://github.com/llvm/llvm-project/pull/134863


More information about the llvm-commits mailing list