File tree Expand file tree Collapse file tree 4 files changed +78
-0
lines changed
src/tools/miri/tests/fail/intrinsics Expand file tree Collapse file tree 4 files changed +78
-0
lines changed Original file line number Diff line number Diff line change 1+ #![ feature( core_intrinsics) ]
2+ #![ feature( rustc_attrs) ]
3+
4+ use std:: intrinsics:: typed_swap;
5+ use std:: ptr:: addr_of_mut;
6+
7+ fn invalid_array ( ) {
8+ let mut a = [ 1_u8 ; 100 ] ;
9+ let mut b = [ 2_u8 ; 100 ] ;
10+ unsafe {
11+ let a = addr_of_mut ! ( a) . cast :: < [ bool ; 100 ] > ( ) ;
12+ let b = addr_of_mut ! ( b) . cast :: < [ bool ; 100 ] > ( ) ;
13+ typed_swap ( a, b) ; //~ERROR: constructing invalid value
14+ }
15+ }
16+
17+ fn main ( ) {
18+ invalid_array ( ) ;
19+ }
Original file line number Diff line number Diff line change 1+ error: Undefined Behavior: constructing invalid value at [0]: encountered 0x02, but expected a boolean
2+ --> $DIR/typed-swap-invalid-array.rs:LL:CC
3+ |
4+ LL | typed_swap(a, b);
5+ | ^^^^^^^^^^^^^^^^ constructing invalid value at [0]: encountered 0x02, but expected a boolean
6+ |
7+ = help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
8+ = help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
9+ = note: BACKTRACE:
10+ = note: inside `invalid_array` at $DIR/typed-swap-invalid-array.rs:LL:CC
11+ note: inside `main`
12+ --> $DIR/typed-swap-invalid-array.rs:LL:CC
13+ |
14+ LL | invalid_array();
15+ | ^^^^^^^^^^^^^^^
16+
17+ note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
18+
19+ error: aborting due to 1 previous error
20+
Original file line number Diff line number Diff line change 1+ #![ feature( core_intrinsics) ]
2+ #![ feature( rustc_attrs) ]
3+
4+ use std:: intrinsics:: typed_swap;
5+ use std:: ptr:: addr_of_mut;
6+
7+ fn invalid_scalar ( ) {
8+ let mut a = 1_u8 ;
9+ let mut b = 2_u8 ;
10+ unsafe {
11+ let a = addr_of_mut ! ( a) . cast :: < bool > ( ) ;
12+ let b = addr_of_mut ! ( b) . cast :: < bool > ( ) ;
13+ typed_swap ( a, b) ; //~ERROR: constructing invalid value
14+ }
15+ }
16+
17+ fn main ( ) {
18+ invalid_scalar ( ) ;
19+ }
Original file line number Diff line number Diff line change 1+ error: Undefined Behavior: constructing invalid value: encountered 0x02, but expected a boolean
2+ --> $DIR/typed-swap-invalid-scalar.rs:LL:CC
3+ |
4+ LL | typed_swap(a, b);
5+ | ^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0x02, but expected a boolean
6+ |
7+ = help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
8+ = help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
9+ = note: BACKTRACE:
10+ = note: inside `invalid_scalar` at $DIR/typed-swap-invalid-scalar.rs:LL:CC
11+ note: inside `main`
12+ --> $DIR/typed-swap-invalid-scalar.rs:LL:CC
13+ |
14+ LL | invalid_scalar();
15+ | ^^^^^^^^^^^^^^^^
16+
17+ note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
18+
19+ error: aborting due to 1 previous error
20+
You can’t perform that action at this time.
0 commit comments