about summary refs log tree commit diff
path: root/tests/codegen/issues
diff options
context:
space:
mode:
authorMatthias Krüger <476013+matthiaskrgr@users.noreply.github.com>2025-03-03 06:41:36 +0100
committerGitHub <noreply@github.com>2025-03-03 06:41:36 +0100
commit15e97bd45eb83bc4114149702899bba97072bbb6 (patch)
treee6e4bc4c66b1b59c0235b6b387c7870ac340f7a3 /tests/codegen/issues
parentd818c1da17d8f2bda6284c472560eed30c1aba9d (diff)
parent107d7ef767b1d4585515cc17db103a03d7a9364e (diff)
downloadrust-15e97bd45eb83bc4114149702899bba97072bbb6.tar.gz
rust-15e97bd45eb83bc4114149702899bba97072bbb6.zip
Rollup merge of #137826 - karolzwolak:looping_over_ne_bytes_133528, r=DianQK
test(codegen): add looping_over_ne_bytes test for #133528

Adds test for #133528.
I renamed the function to `looping_over_ne_bytes` to better reflect that it is doing.
I also set the min llvm version to 20 as this was presumably a llvm bug that was fixed in version 20.
I didn't tie the test to any specific architecture, as we are testing llvm output.
Diffstat (limited to 'tests/codegen/issues')
-rw-r--r--tests/codegen/issues/looping-over-ne-bytes-133528.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/codegen/issues/looping-over-ne-bytes-133528.rs b/tests/codegen/issues/looping-over-ne-bytes-133528.rs
new file mode 100644
index 00000000000..35acf765d69
--- /dev/null
+++ b/tests/codegen/issues/looping-over-ne-bytes-133528.rs
@@ -0,0 +1,17 @@
+//@ compile-flags: -Copt-level=3
+//@ min-llvm-version: 20
+#![crate_type = "lib"]
+
+/// Ensure the function is properly optimized
+/// In the issue #133528, the function was not getting optimized
+/// whereas, a version with `bytes` wrapped into a `black_box` was optimized
+/// It was probably a LLVM bug that was fixed in LLVM 20
+
+// CHECK-LABEL: @looping_over_ne_bytes
+// CHECK: icmp eq i64 %input, -1
+// CHECK-NEXT: ret i1
+#[no_mangle]
+fn looping_over_ne_bytes(input: u64) -> bool {
+    let bytes = input.to_ne_bytes();
+    bytes.iter().all(|x| *x == !0)
+}