diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2022-07-27 12:32:38 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-27 12:32:38 +0000 |
commit | d94d5b1ea23220d423fd40bd00cadb0e6ede751f (patch) | |
tree | 9a6292e682c843b6ee7c3f65f23e6f74fd6c0dca /gcc/testsuite | |
parent | dec7ee4c5e703422ecb9bc94417645d66af7eaae (diff) | |
parent | 961468ed824a7b49f10ed597ba9dcc98177125ca (diff) | |
download | gcc-d94d5b1ea23220d423fd40bd00cadb0e6ede751f.zip gcc-d94d5b1ea23220d423fd40bd00cadb0e6ede751f.tar.gz gcc-d94d5b1ea23220d423fd40bd00cadb0e6ede751f.tar.bz2 |
Merge #1410
1410: unsafe: Add UnsafeCheck visitor r=CohenArthur a=CohenArthur
This visitor takes care of checking for unsafe expressions in safe
contexts. This first iteration reports the dereferencing of raw
pointers.
Co-authored-by: Arthur Cohen <arthur.cohen@embecosm.com>
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/rust/compile/unsafe4.rs | 29 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/unsafe5.rs | 4 |
2 files changed, 33 insertions, 0 deletions
diff --git a/gcc/testsuite/rust/compile/unsafe4.rs b/gcc/testsuite/rust/compile/unsafe4.rs new file mode 100644 index 0000000..7d1356b --- /dev/null +++ b/gcc/testsuite/rust/compile/unsafe4.rs @@ -0,0 +1,29 @@ +fn foo() -> i32 { + let a = 15; + let p_a = &a as *const i32; + + unsafe { *p_a } +} + +unsafe fn bar() -> i32 { + let a = 15; + let p_a = &a as *const i32; + + *p_a +} + +fn baz() -> i32 { + let a = 15; + let p_a = &a as *const i32; + + *p_a // { dg-error "dereference of raw pointer" } +} + +unsafe fn qux() -> i32 { + let a = 15; + let p_a = &a as *const i32; + + unsafe {} + + *p_a +} diff --git a/gcc/testsuite/rust/compile/unsafe5.rs b/gcc/testsuite/rust/compile/unsafe5.rs new file mode 100644 index 0000000..35990f6 --- /dev/null +++ b/gcc/testsuite/rust/compile/unsafe5.rs @@ -0,0 +1,4 @@ +fn main() { + let b = 15; + let c = *(&b as *const i32); // { dg-error "dereference of raw pointer" } +} |