-
-
Notifications
You must be signed in to change notification settings - Fork 14.8k
Possible regression for ui/match/issue-114691.rs #141340
Copy link
Copy link
Open
Labels
A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.C-bugCategory: This is a bug.Category: This is a bug.S-needs-reproStatus: This issue has no reproduction and needs a reproduction to make progress.Status: This issue has no reproduction and needs a reproduction to make progress.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.regression-untriagedUntriaged performance or correctness regression.Untriaged performance or correctness regression.
Metadata
Metadata
Assignees
Labels
A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.C-bugCategory: This is a bug.Category: This is a bug.S-needs-reproStatus: This issue has no reproduction and needs a reproduction to make progress.Status: This issue has no reproduction and needs a reproduction to make progress.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.regression-untriagedUntriaged performance or correctness regression.Untriaged performance or correctness regression.
Type
Fields
Give feedbackNo fields configured for issues without a type.
Copied code for the test in question here:
This test is regressing for us with a custom target, because the problematic transformation
foldBoolSelectToLogicstill runs on the IR forfn test. This is after updating to LLVM 19.To me, it's clear to see why the transformation is invalid, but for seemingly different reasons than the above fix addresses. The IR is:
Which represents a logical, short-circuiting
oroperation on%mode.0.valand%mode.1.val. And since%mode.1.valis not marked asnoundef, it shouldn't be valid to transform that operation into a bitwiseor, since%mode.1.valbeing undefined now has an effect on the result regardless of whether%mode.0.valis true or not.Does anyone have a theory as to why this fix used to work, but seems to no longer work? Frustratingly, the testcase still passes for x86_64, but that doesn't mean anything about this fix because they have switched to using GlobalISel.
Relates to issue #114691