aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2022-07-27 12:32:38 +0000
committerGitHub <noreply@github.com>2022-07-27 12:32:38 +0000
commitd94d5b1ea23220d423fd40bd00cadb0e6ede751f (patch)
tree9a6292e682c843b6ee7c3f65f23e6f74fd6c0dca /gcc/testsuite
parentdec7ee4c5e703422ecb9bc94417645d66af7eaae (diff)
parent961468ed824a7b49f10ed597ba9dcc98177125ca (diff)
downloadgcc-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.rs29
-rw-r--r--gcc/testsuite/rust/compile/unsafe5.rs4
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" }
+}