From 6b14b560bc25465f2e8465c087ecd9684fb5fb65 Mon Sep 17 00:00:00 2001 From: Arthur Cohen Date: Mon, 25 Jul 2022 10:56:23 +0200 Subject: session-manager: Do not go through with compilation on privacy/unsafe errors --- gcc/rust/rust-session-manager.cc | 5 +++++ gcc/testsuite/rust/compile/unsafe5.rs | 4 ++++ 2 files changed, 9 insertions(+) create mode 100644 gcc/testsuite/rust/compile/unsafe5.rs (limited to 'gcc') 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" } +} -- cgit v1.1