diff options
author | DianQK <dianqk@dianqk.net> | 2024-06-27 07:23:59 +0800 |
---|---|---|
committer | DianQK <dianqk@dianqk.net> | 2024-06-27 07:23:59 +0800 |
commit | 5a052ef76a95e525bc2fb0abdb68cefbe2d1a2ec (patch) | |
tree | 3d547ae396f65276ad661077948f5c4d13514c15 /llvm/lib/Transforms/Utils/SimplifyCFG.cpp | |
parent | f23a5f08f4b8d7734cf11342b2c1a405823e899e (diff) | |
download | llvm-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.cpp | 3 |
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) |