about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2023-07-07 12:50:07 +0200
committerWesley Wiser <wesleywiser@microsoft.com>2023-07-26 13:31:54 -0400
commit9d3e35ceaaa6d38b0f5e2eb1b815fa0c2cf71262 (patch)
tree61bc78b754214be39d7b5b5af3df6a150051db9d
parent98dd81e4e306c85fc6e76893779e147ede0f3ddf (diff)
downloadrust-9d3e35ceaaa6d38b0f5e2eb1b815fa0c2cf71262.tar.gz
rust-9d3e35ceaaa6d38b0f5e2eb1b815fa0c2cf71262.zip
Add tests for #102403 and #113407
-rw-r--r--tests/ui/const_prop/apfloat-f64-roundtrip.rs9
-rw-r--r--tests/ui/const_prop/apfloat-remainder-regression.rs15
2 files changed, 24 insertions, 0 deletions
diff --git a/tests/ui/const_prop/apfloat-f64-roundtrip.rs b/tests/ui/const_prop/apfloat-f64-roundtrip.rs
new file mode 100644
index 00000000000..9fb2ac96beb
--- /dev/null
+++ b/tests/ui/const_prop/apfloat-f64-roundtrip.rs
@@ -0,0 +1,9 @@
+// run-pass
+// compile-flags: -O -Zmir-opt-level=3 -Cno-prepopulate-passes
+// min-llvm-version: 16.0 (requires APFloat fixes in LLVM)
+
+// Regression test for a broken MIR optimization (issue #113407).
+pub fn main() {
+    let f = f64::from_bits(0x19873cc2) as f32;
+    assert_eq!(f.to_bits(), 0);
+}
diff --git a/tests/ui/const_prop/apfloat-remainder-regression.rs b/tests/ui/const_prop/apfloat-remainder-regression.rs
new file mode 100644
index 00000000000..08932c333fd
--- /dev/null
+++ b/tests/ui/const_prop/apfloat-remainder-regression.rs
@@ -0,0 +1,15 @@
+// run-pass
+// compile-flags: -O -Zmir-opt-level=3 -Cno-prepopulate-passes
+
+// Regression test for a broken MIR optimization (issue #102403).
+pub fn f() -> f64 {
+    std::hint::black_box(-1.0) % std::hint::black_box(-1.0)
+}
+
+pub fn g() -> f64 {
+    -1.0 % -1.0
+}
+
+pub fn main() {
+    assert_eq!(f().signum(), g().signum());
+}