mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-14 02:49:40 +00:00
Add FileCheck directives to the new tests.
This commit is contained in:
parent
75d2e67ed2
commit
65efa5b3b9
@ -1,38 +1,24 @@
|
||||
// MIR for `disjoint_ranges` after SimplifyCfg-initial
|
||||
|
||||
fn disjoint_ranges() -> () {
|
||||
let mut _0: ();
|
||||
let _1: i32;
|
||||
let _3: i32;
|
||||
fn disjoint_ranges(_1: i32, _2: bool) -> u32 {
|
||||
debug x => _1;
|
||||
debug b => _2;
|
||||
let mut _0: u32;
|
||||
let mut _3: bool;
|
||||
let mut _4: bool;
|
||||
let mut _5: bool;
|
||||
let mut _6: bool;
|
||||
let mut _7: bool;
|
||||
let mut _8: &i32;
|
||||
let mut _9: bool;
|
||||
scope 1 {
|
||||
debug x => _1;
|
||||
let _2: bool;
|
||||
scope 2 {
|
||||
debug b => _2;
|
||||
}
|
||||
}
|
||||
let mut _7: &i32;
|
||||
let mut _8: bool;
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1);
|
||||
_1 = const 3_i32;
|
||||
FakeRead(ForLet(None), _1);
|
||||
StorageLive(_2);
|
||||
_2 = const true;
|
||||
FakeRead(ForLet(None), _2);
|
||||
StorageLive(_3);
|
||||
PlaceMention(_1);
|
||||
_6 = Le(const 0_i32, _1);
|
||||
switchInt(move _6) -> [0: bb3, otherwise: bb8];
|
||||
_5 = Le(const 0_i32, _1);
|
||||
switchInt(move _5) -> [0: bb3, otherwise: bb8];
|
||||
}
|
||||
|
||||
bb1: {
|
||||
_3 = const 3_i32;
|
||||
_0 = const 3_u32;
|
||||
goto -> bb14;
|
||||
}
|
||||
|
||||
@ -41,8 +27,8 @@ fn disjoint_ranges() -> () {
|
||||
}
|
||||
|
||||
bb3: {
|
||||
_4 = Le(const 10_i32, _1);
|
||||
switchInt(move _4) -> [0: bb5, otherwise: bb7];
|
||||
_3 = Le(const 10_i32, _1);
|
||||
switchInt(move _3) -> [0: bb5, otherwise: bb7];
|
||||
}
|
||||
|
||||
bb4: {
|
||||
@ -58,49 +44,45 @@ fn disjoint_ranges() -> () {
|
||||
}
|
||||
|
||||
bb7: {
|
||||
_5 = Le(_1, const 20_i32);
|
||||
switchInt(move _5) -> [0: bb5, otherwise: bb4];
|
||||
_4 = Le(_1, const 20_i32);
|
||||
switchInt(move _4) -> [0: bb5, otherwise: bb4];
|
||||
}
|
||||
|
||||
bb8: {
|
||||
_7 = Lt(_1, const 10_i32);
|
||||
switchInt(move _7) -> [0: bb3, otherwise: bb2];
|
||||
_6 = Lt(_1, const 10_i32);
|
||||
switchInt(move _6) -> [0: bb3, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb9: {
|
||||
_8 = &fake _1;
|
||||
StorageLive(_9);
|
||||
_9 = _2;
|
||||
switchInt(move _9) -> [0: bb11, otherwise: bb10];
|
||||
_7 = &fake _1;
|
||||
StorageLive(_8);
|
||||
_8 = _2;
|
||||
switchInt(move _8) -> [0: bb11, otherwise: bb10];
|
||||
}
|
||||
|
||||
bb10: {
|
||||
StorageDead(_9);
|
||||
FakeRead(ForMatchGuard, _8);
|
||||
_3 = const 0_i32;
|
||||
StorageDead(_8);
|
||||
FakeRead(ForMatchGuard, _7);
|
||||
_0 = const 0_u32;
|
||||
goto -> bb14;
|
||||
}
|
||||
|
||||
bb11: {
|
||||
StorageDead(_9);
|
||||
StorageDead(_8);
|
||||
falseEdge -> [real: bb1, imaginary: bb4];
|
||||
}
|
||||
|
||||
bb12: {
|
||||
_3 = const 1_i32;
|
||||
_0 = const 1_u32;
|
||||
goto -> bb14;
|
||||
}
|
||||
|
||||
bb13: {
|
||||
_3 = const 2_i32;
|
||||
_0 = const 2_u32;
|
||||
goto -> bb14;
|
||||
}
|
||||
|
||||
bb14: {
|
||||
StorageDead(_3);
|
||||
_0 = const ();
|
||||
StorageDead(_2);
|
||||
StorageDead(_1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,14 @@
|
||||
// skip-filecheck
|
||||
// Check specific cases of sorting candidates in match lowering.
|
||||
#![feature(exclusive_range_pattern)]
|
||||
|
||||
// EMIT_MIR sort_candidates.constant_eq.SimplifyCfg-initial.after.mir
|
||||
fn constant_eq(s: &str, b: bool) -> u32 {
|
||||
// Check that we only test "a" once
|
||||
|
||||
// CHECK-LABEL: fn constant_eq(
|
||||
// CHECK: bb0: {
|
||||
// CHECK: [[a:_.*]] = const "a";
|
||||
// CHECK-NOT: {{_.*}} = const "a";
|
||||
match (s, b) {
|
||||
("a", _) if true => 1,
|
||||
("b", true) => 2,
|
||||
@ -15,18 +19,23 @@ fn constant_eq(s: &str, b: bool) -> u32 {
|
||||
}
|
||||
|
||||
// EMIT_MIR sort_candidates.disjoint_ranges.SimplifyCfg-initial.after.mir
|
||||
fn disjoint_ranges() {
|
||||
let x = 3;
|
||||
let b = true;
|
||||
fn disjoint_ranges(x: i32, b: bool) -> u32 {
|
||||
// When `(0..=10).contains(x) && !b`, we should jump to the last arm without testing the two
|
||||
// other candidates.
|
||||
|
||||
// When `(0..=10).contains(x) && !b`, we should jump to the last arm
|
||||
// without testing two other candidates.
|
||||
// CHECK-LABEL: fn disjoint_ranges(
|
||||
// CHECK: debug b => _2;
|
||||
// CHECK: bb0: {
|
||||
// CHECK: switchInt(_2) -> [0: [[jump:bb.*]], otherwise: {{bb.*}}];
|
||||
// CHECK: [[jump]]: {
|
||||
// CHECK-NEXT: _0 = const 3_u32;
|
||||
// CHECK-NEXT: return;
|
||||
match x {
|
||||
0..10 if b => 0,
|
||||
10..=20 => 1,
|
||||
-1 => 2,
|
||||
_ => 3,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
Loading…
Reference in New Issue
Block a user