Rollup merge of #72893 - RalfJung:unleash-tls, r=ecstatic-morse
test miri-unleash TLS accesses Finally gets rid of `IS_SUPPORTED_IN_MIRI`. :-) I also added a test for the new `asm!` while I am at it. r? @ecstatic-morse Cc @rust-lang/wg-const-eval
This commit is contained in:
commit
b7ec7bd5b7
7 changed files with 58 additions and 15 deletions
|
|
@ -1,15 +1,22 @@
|
|||
// compile-flags: -Zunleash-the-miri-inside-of-you
|
||||
// only-x86_64
|
||||
#![feature(llvm_asm)]
|
||||
#![feature(asm,llvm_asm)]
|
||||
#![allow(const_err)]
|
||||
|
||||
fn main() {}
|
||||
|
||||
// Make sure we catch executing inline assembly.
|
||||
static TEST_BAD: () = {
|
||||
static TEST_BAD1: () = {
|
||||
unsafe { llvm_asm!("xor %eax, %eax" ::: "eax"); }
|
||||
//~^ ERROR could not evaluate static initializer
|
||||
//~| NOTE inline assembly is not supported
|
||||
//~| NOTE in this expansion of llvm_asm!
|
||||
//~| NOTE in this expansion of llvm_asm!
|
||||
};
|
||||
|
||||
// Make sure we catch executing inline assembly.
|
||||
static TEST_BAD2: () = {
|
||||
unsafe { asm!("nop"); }
|
||||
//~^ ERROR could not evaluate static initializer
|
||||
//~| NOTE inline assembly is not supported
|
||||
};
|
||||
|
|
|
|||
|
|
@ -6,6 +6,12 @@ LL | unsafe { llvm_asm!("xor %eax, %eax" ::: "eax"); }
|
|||
|
|
||||
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error[E0080]: could not evaluate static initializer
|
||||
--> $DIR/inline_asm.rs:19:14
|
||||
|
|
||||
LL | unsafe { asm!("nop"); }
|
||||
| ^^^^^^^^^^^^ inline assembly is not supported
|
||||
|
||||
warning: skipping const checks
|
||||
|
|
||||
help: skipping check that does not even have a feature gate
|
||||
|
|
@ -13,8 +19,13 @@ help: skipping check that does not even have a feature gate
|
|||
|
|
||||
LL | unsafe { llvm_asm!("xor %eax, %eax" ::: "eax"); }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
help: skipping check that does not even have a feature gate
|
||||
--> $DIR/inline_asm.rs:19:14
|
||||
|
|
||||
LL | unsafe { asm!("nop"); }
|
||||
| ^^^^^^^^^^^^
|
||||
= note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error: aborting due to previous error; 1 warning emitted
|
||||
error: aborting due to 2 previous errors; 1 warning emitted
|
||||
|
||||
For more information about this error, try `rustc --explain E0080`.
|
||||
|
|
|
|||
17
src/test/ui/consts/miri_unleashed/tls.rs
Normal file
17
src/test/ui/consts/miri_unleashed/tls.rs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
// compile-flags: -Zunleash-the-miri-inside-of-you
|
||||
#![feature(thread_local)]
|
||||
#![allow(const_err)]
|
||||
|
||||
use std::thread;
|
||||
|
||||
#[thread_local]
|
||||
static A: u8 = 0;
|
||||
|
||||
// Make sure we catch accessing thread-local storage.
|
||||
static TEST_BAD: () = {
|
||||
unsafe { let _val = A; }
|
||||
//~^ ERROR could not evaluate static initializer
|
||||
//~| NOTE cannot access thread local static
|
||||
};
|
||||
|
||||
fn main() {}
|
||||
17
src/test/ui/consts/miri_unleashed/tls.stderr
Normal file
17
src/test/ui/consts/miri_unleashed/tls.stderr
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
error[E0080]: could not evaluate static initializer
|
||||
--> $DIR/tls.rs:12:25
|
||||
|
|
||||
LL | unsafe { let _val = A; }
|
||||
| ^ cannot access thread local static (DefId(0:4 ~ tls[317d]::A[0]))
|
||||
|
||||
warning: skipping const checks
|
||||
|
|
||||
help: skipping check that does not even have a feature gate
|
||||
--> $DIR/tls.rs:12:25
|
||||
|
|
||||
LL | unsafe { let _val = A; }
|
||||
| ^
|
||||
|
||||
error: aborting due to previous error; 1 warning emitted
|
||||
|
||||
For more information about this error, try `rustc --explain E0080`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue