about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2022-02-06 04:13:33 +0100
committerGitHub <noreply@github.com>2022-02-06 04:13:33 +0100
commit520bd359a38a266f7823112b27cade0b470a4815 (patch)
treec3dfad32735a867bfba546cc3783096ce2158d1f
parent59baf4db0f73e60702d1b4b101a0789e63ddce8f (diff)
parenta3b1bc13882197900f4a6858c465f67ffb75f1fe (diff)
downloadrust-520bd359a38a266f7823112b27cade0b470a4815.tar.gz
rust-520bd359a38a266f7823112b27cade0b470a4815.zip
Rollup merge of #93649 - WaffleLapkin:regression_test_80309, r=oli-obk
Add regression tests for issue 80309

Closes #80309 😝

I'm not sure where to put the tests, is `ui/issues` the right place for this kind of tests?
-rw-r--r--src/test/ui/ptr_ops/issue-80309-safe.rs17
-rw-r--r--src/test/ui/ptr_ops/issue-80309.rs14
2 files changed, 31 insertions, 0 deletions
diff --git a/src/test/ui/ptr_ops/issue-80309-safe.rs b/src/test/ui/ptr_ops/issue-80309-safe.rs
new file mode 100644
index 00000000000..ca3778aab2d
--- /dev/null
+++ b/src/test/ui/ptr_ops/issue-80309-safe.rs
@@ -0,0 +1,17 @@
+// run-pass
+// min-llvm-version: 13.0
+// compiler-flags: -O
+
+// Regression test for issue #80309
+
+pub fn zero(x: usize) -> usize {
+    std::ptr::null::<i8>().wrapping_add(x) as usize - x
+}
+pub fn qux(x: &[i8]) -> i8 {
+    x[zero(x.as_ptr() as usize)]
+}
+
+fn main() {
+    let z = vec![42, 43];
+    println!("{}", qux(&z));
+}
diff --git a/src/test/ui/ptr_ops/issue-80309.rs b/src/test/ui/ptr_ops/issue-80309.rs
new file mode 100644
index 00000000000..bbec1012082
--- /dev/null
+++ b/src/test/ui/ptr_ops/issue-80309.rs
@@ -0,0 +1,14 @@
+// run-pass
+// min-llvm-version: 13.0
+// compiler-flags: -O
+
+// Regression test for issue #80309
+
+pub unsafe fn foo(x: *const i8) -> i8 {
+    *x.wrapping_sub(x as _).wrapping_add(x as _)
+}
+
+fn main() {
+    let x = 42;
+    println!("{}", unsafe { foo(&x) });
+}