aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorArthur Cohen <arthur.cohen@embecosm.com>2022-07-25 10:56:23 +0200
committerArthur Cohen <arthur.cohen@embecosm.com>2022-07-26 15:45:49 +0200
commit6b14b560bc25465f2e8465c087ecd9684fb5fb65 (patch)
tree6d635dee96f1f9cef556e18a41f7e13175cde105 /gcc
parent660460f92856d3d2e33b6df92452211d02a628f6 (diff)
downloadgcc-6b14b560bc25465f2e8465c087ecd9684fb5fb65.zip
gcc-6b14b560bc25465f2e8465c087ecd9684fb5fb65.tar.gz
gcc-6b14b560bc25465f2e8465c087ecd9684fb5fb65.tar.bz2
session-manager: Do not go through with compilation on privacy/unsafe
errors
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/rust-session-manager.cc5
-rw-r--r--gcc/testsuite/rust/compile/unsafe5.rs4
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/rust/rust-session-manager.cc b/gcc/rust/rust-session-manager.cc
index e533706..6a2c1b6 100644
--- a/gcc/rust/rust-session-manager.cc
+++ b/gcc/rust/rust-session-manager.cc
@@ -792,7 +792,12 @@ Session::parse_file (const char *filename)
// Various HIR error passes. The privacy pass happens before the unsafe checks
Privacy::Resolver::resolve (hir);
+ if (saw_errors ())
+ return;
+
HIR::UnsafeChecker ().go (hir);
+ if (saw_errors ())
+ return;
// do compile to gcc generic
Compile::Context ctx (backend);
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" }
+}