Skip to content

Commit 09b8502

Browse files
committed
Fortify test.
1 parent 706f244 commit 09b8502

File tree

3 files changed

+81
-50
lines changed

3 files changed

+81
-50
lines changed

tests/mir-opt/jump_threading.aggregate.JumpThreading.panic-abort.diff

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,50 @@
11
- // MIR for `aggregate` before JumpThreading
22
+ // MIR for `aggregate` after JumpThreading
33

4-
fn aggregate(_1: u8) -> u8 {
5-
debug x => _1;
4+
fn aggregate() -> u8 {
65
let mut _0: u8;
6+
let _1: u8;
77
let _2: u8;
8-
let _3: u8;
9-
let mut _4: (u8, u8);
10-
let mut _5: bool;
11-
let mut _6: u8;
8+
let mut _3: (u8, u8);
9+
let mut _4: bool;
10+
let mut _5: u8;
1211
scope 1 {
13-
debug a => _2;
14-
debug b => _3;
12+
debug a => _1;
13+
debug b => _2;
1514
}
1615

1716
bb0: {
18-
StorageLive(_4);
19-
_4 = const aggregate::FOO;
20-
StorageLive(_2);
21-
_2 = copy (_4.0: u8);
2217
StorageLive(_3);
23-
_3 = copy (_4.1: u8);
24-
StorageDead(_4);
18+
_3 = const aggregate::FOO;
19+
StorageLive(_1);
20+
_1 = copy (_3.0: u8);
21+
StorageLive(_2);
22+
_2 = copy (_3.1: u8);
23+
StorageDead(_3);
24+
StorageLive(_4);
2525
StorageLive(_5);
26-
StorageLive(_6);
27-
_6 = copy _2;
28-
_5 = Eq(move _6, const 7_u8);
29-
- switchInt(move _5) -> [0: bb2, otherwise: bb1];
26+
_5 = copy _1;
27+
_4 = Eq(move _5, const 7_u8);
28+
- switchInt(move _4) -> [0: bb2, otherwise: bb1];
3029
+ goto -> bb2;
3130
}
3231

3332
bb1: {
34-
StorageDead(_6);
35-
_0 = copy _3;
33+
StorageDead(_5);
34+
_0 = copy _2;
3635
goto -> bb3;
3736
}
3837

3938
bb2: {
40-
StorageDead(_6);
41-
_0 = copy _2;
39+
StorageDead(_5);
40+
_0 = copy _1;
4241
goto -> bb3;
4342
}
4443

4544
bb3: {
46-
StorageDead(_5);
47-
StorageDead(_3);
45+
StorageDead(_4);
4846
StorageDead(_2);
47+
StorageDead(_1);
4948
return;
5049
}
5150
}

tests/mir-opt/jump_threading.aggregate.JumpThreading.panic-unwind.diff

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,50 @@
11
- // MIR for `aggregate` before JumpThreading
22
+ // MIR for `aggregate` after JumpThreading
33

4-
fn aggregate(_1: u8) -> u8 {
5-
debug x => _1;
4+
fn aggregate() -> u8 {
65
let mut _0: u8;
6+
let _1: u8;
77
let _2: u8;
8-
let _3: u8;
9-
let mut _4: (u8, u8);
10-
let mut _5: bool;
11-
let mut _6: u8;
8+
let mut _3: (u8, u8);
9+
let mut _4: bool;
10+
let mut _5: u8;
1211
scope 1 {
13-
debug a => _2;
14-
debug b => _3;
12+
debug a => _1;
13+
debug b => _2;
1514
}
1615

1716
bb0: {
18-
StorageLive(_4);
19-
_4 = const aggregate::FOO;
20-
StorageLive(_2);
21-
_2 = copy (_4.0: u8);
2217
StorageLive(_3);
23-
_3 = copy (_4.1: u8);
24-
StorageDead(_4);
18+
_3 = const aggregate::FOO;
19+
StorageLive(_1);
20+
_1 = copy (_3.0: u8);
21+
StorageLive(_2);
22+
_2 = copy (_3.1: u8);
23+
StorageDead(_3);
24+
StorageLive(_4);
2525
StorageLive(_5);
26-
StorageLive(_6);
27-
_6 = copy _2;
28-
_5 = Eq(move _6, const 7_u8);
29-
- switchInt(move _5) -> [0: bb2, otherwise: bb1];
26+
_5 = copy _1;
27+
_4 = Eq(move _5, const 7_u8);
28+
- switchInt(move _4) -> [0: bb2, otherwise: bb1];
3029
+ goto -> bb2;
3130
}
3231

3332
bb1: {
34-
StorageDead(_6);
35-
_0 = copy _3;
33+
StorageDead(_5);
34+
_0 = copy _2;
3635
goto -> bb3;
3736
}
3837

3938
bb2: {
40-
StorageDead(_6);
41-
_0 = copy _2;
39+
StorageDead(_5);
40+
_0 = copy _1;
4241
goto -> bb3;
4342
}
4443

4544
bb3: {
46-
StorageDead(_5);
47-
StorageDead(_3);
45+
StorageDead(_4);
4846
StorageDead(_2);
47+
StorageDead(_1);
4948
return;
5049
}
5150
}

tests/mir-opt/jump_threading.rs

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -449,9 +449,17 @@ fn disappearing_bb(x: u8) -> u8 {
449449
}
450450

451451
/// Verify that we can thread jumps when we assign from an aggregate constant.
452-
fn aggregate(x: u8) -> u8 {
452+
fn aggregate() -> u8 {
453453
// CHECK-LABEL: fn aggregate(
454+
// CHECK: debug a => [[a:_.*]];
455+
// CHECK: debug b => [[b:_.*]];
454456
// CHECK-NOT: switchInt(
457+
// CHECK: [[a2:_.*]] = copy [[a]];
458+
// CHECK: {{_.*}} = Eq(move [[a2]], const 7_u8);
459+
// CHECK-NEXT: goto -> [[bb:bb.*]];
460+
// CHECK: [[bb]]: {
461+
// CHECK-NOT: }
462+
// CHECK: _0 = copy [[a]];
455463

456464
const FOO: (u8, u8) = (5, 13);
457465

@@ -508,7 +516,16 @@ fn assume(a: u8, b: bool) -> u8 {
508516
/// Verify that jump threading succeeds seeing through copies of aggregates.
509517
fn aggregate_copy() -> u32 {
510518
// CHECK-LABEL: fn aggregate_copy(
519+
// CHECK: debug a => [[a:_.*]];
520+
// CHECK: debug b => [[b:_.*]];
521+
// CHECK: debug c => [[c:_.*]];
511522
// CHECK-NOT: switchInt(
523+
// CHECK: [[c2:_.*]] = copy [[c]];
524+
// CHECK: {{_.*}} = Eq(move [[c2]], const 2_u32);
525+
// CHECK-NEXT: goto -> [[bb:bb.*]];
526+
// CHECK: [[bb]]: {
527+
// CHECK-NOT: }
528+
// CHECK: _0 = const 13_u32;
512529

513530
const Foo: (u32, u32) = (5, 3);
514531

@@ -532,6 +549,14 @@ fn floats() -> u32 {
532549

533550
pub fn bitwise_not() -> i32 {
534551
// CHECK-LABEL: fn bitwise_not(
552+
// CHECK: debug a => [[a:_.*]];
553+
// CHECK: [[a2:_.*]] = copy [[a]];
554+
// CHECK: [[not:_.*]] = Not(move [[a2]]);
555+
// CHECK: {{_.*}} = Eq(move [[not]], const 0_i32);
556+
// CHECK-NEXT: goto -> [[bb:bb.*]];
557+
// CHECK: [[bb]]: {
558+
// CHECK-NOT: }
559+
// CHECK: _0 = const 0_i32;
535560

536561
// Test for #131195, which was optimizing `!a == b` into `a != b`.
537562
let a = 1;
@@ -540,6 +565,14 @@ pub fn bitwise_not() -> i32 {
540565

541566
pub fn logical_not() -> i32 {
542567
// CHECK-LABEL: fn logical_not(
568+
// CHECK: debug a => [[a:_.*]];
569+
// CHECK: [[a2:_.*]] = copy [[a]];
570+
// CHECK: [[not:_.*]] = Not(move [[a2]]);
571+
// CHECK: {{_.*}} = Eq(move [[not]], const true);
572+
// CHECK-NEXT: goto -> [[bb:bb.*]];
573+
// CHECK: [[bb]]: {
574+
// CHECK-NOT: }
575+
// CHECK: _0 = const 1_i32;
543576

544577
let a = false;
545578
if !a == true { 1 } else { 0 }
@@ -557,7 +590,7 @@ fn main() {
557590
mutable_ref();
558591
renumbered_bb(true);
559592
disappearing_bb(7);
560-
aggregate(7);
593+
aggregate();
561594
assume(7, false);
562595
floats();
563596
bitwise_not();

0 commit comments

Comments
 (0)