|  | //@ compile-flags: -Zmir-opt-level=0 -C no-prepopulate-passes -Copt-level=0 | 
|  | // make sure that branching on a constant does not emit a conditional | 
|  | // branch or a switch | 
|  |  | 
|  | #![crate_type = "lib"] | 
|  |  | 
|  | // CHECK-LABEL: @if_bool | 
|  | #[no_mangle] | 
|  | pub fn if_bool() { | 
|  | // CHECK-NOT: br i1 | 
|  | // CHECK-NOT: switch | 
|  | _ = if true { 0 } else { 1 }; | 
|  |  | 
|  | _ = if false { 0 } else { 1 }; | 
|  | } | 
|  |  | 
|  | // CHECK-LABEL: @if_constant_int_eq | 
|  | #[no_mangle] | 
|  | pub fn if_constant_int_eq() { | 
|  | // CHECK-NOT: br i1 | 
|  | // CHECK-NOT: switch | 
|  | let val = 0; | 
|  | _ = if val == 0 { 0 } else { 1 }; | 
|  |  | 
|  | // CHECK: br label %{{.+}} | 
|  | _ = if val == 1 { 0 } else { 1 }; | 
|  | } | 
|  |  | 
|  | // CHECK-LABEL: @if_constant_match | 
|  | #[no_mangle] | 
|  | pub fn if_constant_match() { | 
|  | // CHECK-NOT: br i1 | 
|  | // CHECK-NOT: switch | 
|  | _ = match 1 { | 
|  | 1 => 2, | 
|  | 2 => 3, | 
|  | _ => 4, | 
|  | }; | 
|  |  | 
|  | _ = match 1 { | 
|  | 2 => 3, | 
|  | _ => 4, | 
|  | }; | 
|  |  | 
|  | _ = match -1 { | 
|  | -1 => 1, | 
|  | _ => 0, | 
|  | } | 
|  | } |