File tree 7 files changed +60
-10
lines changed
7 files changed +60
-10
lines changed Original file line number Diff line number Diff line change 1
1
#![ feature( core_intrinsics) ]
2
2
#![ feature( rustc_attrs) ]
3
3
4
- use std:: intrinsics:: typed_swap ;
4
+ use std:: intrinsics:: typed_swap_nonoverlapping ;
5
5
use std:: ptr:: addr_of_mut;
6
6
7
7
fn invalid_array ( ) {
@@ -10,7 +10,7 @@ fn invalid_array() {
10
10
unsafe {
11
11
let a = addr_of_mut ! ( a) . cast :: < [ bool ; 100 ] > ( ) ;
12
12
let b = addr_of_mut ! ( b) . cast :: < [ bool ; 100 ] > ( ) ;
13
- typed_swap ( a, b) ; //~ERROR: constructing invalid value
13
+ typed_swap_nonoverlapping ( a, b) ; //~ERROR: constructing invalid value
14
14
}
15
15
}
16
16
Original file line number Diff line number Diff line change 1
1
error: Undefined Behavior: constructing invalid value at [0]: encountered 0x02, but expected a boolean
2
2
--> tests/fail/intrinsics/typed-swap-invalid-array.rs:LL:CC
3
3
|
4
- LL | typed_swap (a, b);
5
- | ^^^^^^^^^^^^^^^^ constructing invalid value at [0]: encountered 0x02, but expected a boolean
4
+ LL | typed_swap_nonoverlapping (a, b);
5
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at [0]: encountered 0x02, but expected a boolean
6
6
|
7
7
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
8
8
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
Original file line number Diff line number Diff line change 1
1
error: Undefined Behavior: constructing invalid value: encountered 0x02, but expected a boolean
2
2
--> tests/fail/intrinsics/typed-swap-invalid-scalar.rs:LL:CC
3
3
|
4
- LL | typed_swap (a, b);
5
- | ^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0x02, but expected a boolean
4
+ LL | typed_swap_nonoverlapping (a, b);
5
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0x02, but expected a boolean
6
6
|
7
7
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
8
8
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
Original file line number Diff line number Diff line change
1
+ error: Undefined Behavior: constructing invalid value: encountered 0x03, but expected a boolean
2
+ --> tests/fail/intrinsics/typed-swap-invalid-scalar.rs:LL:CC
3
+ |
4
+ LL | typed_swap_nonoverlapping(a, b);
5
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered 0x03, 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 tests/fail/intrinsics/typed-swap-invalid-scalar.rs:LL:CC
11
+ note: inside `main`
12
+ --> tests/fail/intrinsics/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
+
Original file line number Diff line number Diff line change
1
+ //@revisions: left right
1
2
#![ feature( core_intrinsics) ]
2
3
#![ feature( rustc_attrs) ]
3
4
4
- use std:: intrinsics:: typed_swap ;
5
+ use std:: intrinsics:: typed_swap_nonoverlapping ;
5
6
use std:: ptr:: addr_of_mut;
6
7
7
8
fn invalid_scalar ( ) {
8
- let mut a = 1_u8 ;
9
- let mut b = 2_u8 ;
9
+ // We run the test twice, with either the left or the right side being invalid.
10
+ let mut a = if cfg ! ( left) { 2_u8 } else { 1_u8 } ;
11
+ let mut b = if cfg ! ( right) { 3_u8 } else { 1_u8 } ;
10
12
unsafe {
11
13
let a = addr_of_mut ! ( a) . cast :: < bool > ( ) ;
12
14
let b = addr_of_mut ! ( b) . cast :: < bool > ( ) ;
13
- typed_swap ( a, b) ; //~ERROR: constructing invalid value
15
+ typed_swap_nonoverlapping ( a, b) ; //~ERROR: constructing invalid value
14
16
}
15
17
}
16
18
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_nonoverlapping;
5
+ use std:: ptr:: addr_of_mut;
6
+
7
+ fn main ( ) {
8
+ let mut a = 0_u8 ;
9
+ unsafe {
10
+ let a = addr_of_mut ! ( a) ;
11
+ typed_swap_nonoverlapping ( a, a) ; //~ERROR: called on overlapping ranges
12
+ }
13
+ }
Original file line number Diff line number Diff line change
1
+ error: Undefined Behavior: `copy_nonoverlapping` called on overlapping ranges
2
+ --> tests/fail/intrinsics/typed-swap-overlap.rs:LL:CC
3
+ |
4
+ LL | typed_swap_nonoverlapping(a, a);
5
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `copy_nonoverlapping` called on overlapping ranges
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 `main` at tests/fail/intrinsics/typed-swap-overlap.rs:LL:CC
11
+
12
+ note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` for a verbose backtrace
13
+
14
+ error: aborting due to 1 previous error
15
+
You can’t perform that action at this time.
0 commit comments