-
Notifications
You must be signed in to change notification settings - Fork 13.4k
datetime
tests fail in release mode since 1.73 on powerpc64le
#116582
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Comments
Doesn't happen when calling |
opt-bisect points towards a backend issue:
IR for the function looks like this: https://gist.github.com/nikic/6752e057cf4f933e592277e4a9211d6a |
The issue is already introduced during the SDAG layer by a custom combine: https://github.com/llvm/llvm-project/blob/12a4757b0fa25baac853498671a34e2f34f92b80/llvm/lib/Target/PowerPC/PPCISelLowering.cpp#L15570-L15591 This is interchanging |
That case is new in 17, llvm/llvm-project@b0e249d, so it would seem to be a true regression, not just something that we were lucky to miss before due to other perturbations. |
Indeed, all diff --git a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
index 3ed0a261eb76..d4d2da55160e 100644
--- a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
+++ b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
@@ -15527,7 +15527,7 @@ SDValue PPCTargetLowering::PerformDAGCombine(SDNode *N,
break;
SDValue ConstOp = DAG.getConstant(Imm, dl, MVT::i32);
SDValue NarrowAnd = DAG.getNode(ISD::AND, dl, MVT::i32, NarrowOp, ConstOp);
- return DAG.getAnyExtOrTrunc(NarrowAnd, dl, N->getValueType(0));
+ return DAG.getZExtOrTrunc(NarrowAnd, dl, N->getValueType(0));
}
case ISD::SHL:
return combineSHL(N, DCI); This also passes all |
Upstream issue: llvm/llvm-project#68783 |
WG-prioritization assigning priority (Zulip discussion). @rustbot label -I-prioritize +P-high |
The datetime tests have regressed on Fedora
ppc64le
since upgrading to Rust 1.73.0, and I can also reproduce this onrustup
toolchains.https://koschei.fedoraproject.org/build/16447830
I expected to see this happen: all tests pass
Instead, this happened: it passes in debug mode, but fails multiple tests in
--release
. For example:Version it worked on
It most recently worked on: 1.72.1
Version with regression
rustc --version --verbose
:It's no better on
rustc 1.74.0-beta.1 (b5c050feb 2023-10-03)
orrustc 1.75.0-nightly (bf9a1c8a1 2023-10-08)
.As noted above, it also fails on Fedora rawhide's Rust 1.73.0 with LLVM 17. However, it passes on Fedora 38 with Rust 1.73.0 and LLVM 16, so it definitely seems like a codegen regression in 17.
@rustbot modify labels: +A-LLVM +T-compiler +regression-from-stable-to-stable -regression-untriaged
The text was updated successfully, but these errors were encountered: