diff options
| author | Florian Hahn <flo@fhahn.com> | 2025-09-10 11:20:48 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-10 10:20:48 +0000 |
| commit | c3e76b27709f93c9e945caa29dae596b581289e2 (patch) | |
| tree | f2f2d3a936507fc8a94ff9e438956e651d26df0d /llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp | |
| parent | 2fb29f8ee60305adfc2b7c8fb29a9379c1ebd184 (diff) | |
[VPlan] Keep common flags during CSE. (#157664)
During CSE, we don't have to drop all poison-generating flags on
mis-match, we can keep the ones common on both recipes.
PR: https://github.com/llvm/llvm-project/pull/157664
Diffstat (limited to 'llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp')
| -rw-r--r-- | llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp b/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp index 78211524973e..6b122e19c016 100644 --- a/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp +++ b/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp @@ -2043,9 +2043,9 @@ void VPlanTransforms::cse(VPlan &Plan) { // V must dominate Def for a valid replacement. if (!VPDT.dominates(V->getParent(), VPBB)) continue; - // Drop poison-generating flags when reusing a value. + // Only keep flags present on both V and Def. if (auto *RFlags = dyn_cast<VPRecipeWithIRFlags>(V)) - RFlags->dropPoisonGeneratingFlags(); + RFlags->intersectFlags(*cast<VPRecipeWithIRFlags>(Def)); Def->replaceAllUsesWith(V); continue; } |
