diff options
author | Arthur Cohen <arthur.cohen@embecosm.com> | 2022-07-25 10:56:23 +0200 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2022-07-26 15:45:49 +0200 |
commit | 6b14b560bc25465f2e8465c087ecd9684fb5fb65 (patch) | |
tree | 6d635dee96f1f9cef556e18a41f7e13175cde105 /gcc | |
parent | 660460f92856d3d2e33b6df92452211d02a628f6 (diff) | |
download | gcc-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.cc | 5 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/unsafe5.rs | 4 |
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" } +} |