[llvm] IROutliner: Do not look at use lists of constant phi inputs (PR #135019)
    Matt Arsenault via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Thu Apr 10 13:32:54 PDT 2025
    
    
  
https://github.com/arsenm updated https://github.com/llvm/llvm-project/pull/135019
>From 4d6e7485870864c6a1fe2b553d953f171b0a7bde Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Wed, 9 Apr 2025 13:28:19 +0800
Subject: [PATCH] IROutliner: Do not look at use lists of constant phi inputs
Theoretically this does a worse job with globals but this is not
covered by existing tests
---
 llvm/lib/Transforms/IPO/IROutliner.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/llvm/lib/Transforms/IPO/IROutliner.cpp b/llvm/lib/Transforms/IPO/IROutliner.cpp
index 8c5946fb07c65..eec869d57a6db 100644
--- a/llvm/lib/Transforms/IPO/IROutliner.cpp
+++ b/llvm/lib/Transforms/IPO/IROutliner.cpp
@@ -1126,7 +1126,8 @@ static void analyzeExitPHIsForOutputUses(
     // outside of the single PHINode we should not skip over it.
     for (unsigned Idx : IncomingVals) {
       Value *V = PN.getIncomingValue(Idx);
-      if (outputHasNonPHI(V, Idx, PN, PotentialExitsFromRegion, RegionBlocks)) {
+      if (!isa<Constant>(V) &&
+          outputHasNonPHI(V, Idx, PN, PotentialExitsFromRegion, RegionBlocks)) {
         OutputsWithNonPhiUses.insert(V);
         OutputsReplacedByPHINode.erase(V);
         continue;
    
    
More information about the llvm-commits
mailing list