From 4cb3422daf5e6e94d82c6be8afcef914de259b21 Mon Sep 17 00:00:00 2001 From: Nilstrieb <48135649+Nilstrieb@users.noreply.github.com> Date: Tue, 30 May 2023 18:50:39 +0200 Subject: [PATCH] ub --- .gitignore | 1 + checkllvm.sh | 4 ++-- code.rs | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index b6394d6..0ed7548 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ /bad *.ll *.s +*.bc a.out # Added by cargo diff --git a/checkllvm.sh b/checkllvm.sh index 0954842..13de3b5 100755 --- a/checkllvm.sh +++ b/checkllvm.sh @@ -2,7 +2,7 @@ set -eu -# rustc code.rs --crate-name ll -Zmir-enable-passes=-ConstProp --emit llvm-ir -Cno-prepopulate-passes --crate-type=lib +rustc code.rs --crate-name ll -Zmir-enable-passes=-ConstProp --emit llvm-ir -Cno-prepopulate-passes --crate-type=lib d=$(mktemp -d) @@ -18,4 +18,4 @@ if [ "$good" != "$bad" ]; then else echo "no repro" exit 1 -fi \ No newline at end of file +fi diff --git a/code.rs b/code.rs index f67856a..74a9468 100644 --- a/code.rs +++ b/code.rs @@ -19,7 +19,7 @@ pub unsafe extern "C" fn fn12_rs() { 'l0: loop { let mut v20 = [197_u8; 8]; let v20_ptr = ptr::addr_of_mut!(v20); - let mut v12: *mut u8 = core::ptr::addr_of_mut!((*v20_ptr)[v9]); + let mut v12: *mut u8 = v20_ptr.cast::().add(v9); v9 = 2_usize; // unused but necessary write loop { // only runs once, but necessary @@ -64,7 +64,7 @@ pub unsafe extern "C" fn fn12_rs() { } _ => { // Dead code but necessary - v12 = core::ptr::addr_of_mut!((*v20_ptr)[2]); + v12 = (*v20_ptr).as_mut_ptr().add(2); } } }