aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
diff options
context:
space:
mode:
authorDianQK <dianqk@dianqk.net>2024-06-27 07:23:59 +0800
committerDianQK <dianqk@dianqk.net>2024-06-27 07:23:59 +0800
commit5a052ef76a95e525bc2fb0abdb68cefbe2d1a2ec (patch)
tree3d547ae396f65276ad661077948f5c4d13514c15 /llvm/lib/Transforms/Utils/SimplifyCFG.cpp
parentf23a5f08f4b8d7734cf11342b2c1a405823e899e (diff)
downloadllvm-5a052ef76a95e525bc2fb0abdb68cefbe2d1a2ec.zip
llvm-5a052ef76a95e525bc2fb0abdb68cefbe2d1a2ec.tar.gz
llvm-5a052ef76a95e525bc2fb0abdb68cefbe2d1a2ec.tar.bz2
Reapply "[SimplifyCFG] Forward indirect switch condition value if it can help fold the PHI (#95932)"
This reverts commit c7adfb5e715334c9de176f434088bd9f89aa9eb3.
Diffstat (limited to 'llvm/lib/Transforms/Utils/SimplifyCFG.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/SimplifyCFG.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
index 4e2dc7f..c52c4dc 100644
--- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
@@ -5818,7 +5818,8 @@ static bool ForwardSwitchConditionToPHI(SwitchInst *SI) {
for (auto &ForwardingNode : ForwardingNodes) {
PHINode *Phi = ForwardingNode.first;
SmallVectorImpl<int> &Indexes = ForwardingNode.second;
- if (Indexes.size() < 2)
+ // Check if it helps to fold PHI.
+ if (Indexes.size() < 2 && !llvm::is_contained(Phi->incoming_values(), SI->getCondition()))
continue;
for (int Index : Indexes)