| //@ skip-filecheck | |
| //@ compile-flags: -O -Zmir-opt-level=2 -Cdebuginfo=2 | |
| #![crate_type = "lib"] | |
| pub struct Blueprint { | |
| pub fuel_tank_size: u32, | |
| pub payload: u32, | |
| pub wheel_diameter: u32, | |
| pub wheel_width: u32, | |
| pub storage: u32, | |
| } | |
| pub fn naive(a: &Blueprint, b: &Blueprint) -> bool { | |
| (a.fuel_tank_size == b.fuel_tank_size) | |
| && (a.payload == b.payload) | |
| && (a.wheel_diameter == b.wheel_diameter) | |
| && (a.wheel_width == b.wheel_width) | |
| && (a.storage == b.storage) | |
| } | |
| pub fn bitand(a: &Blueprint, b: &Blueprint) -> bool { | |
| (a.fuel_tank_size == b.fuel_tank_size) | |
| & (a.payload == b.payload) | |
| & (a.wheel_diameter == b.wheel_diameter) | |
| & (a.wheel_width == b.wheel_width) | |
| & (a.storage == b.storage) | |
| } | |
| pub fn returning(a: &Blueprint, b: &Blueprint) -> bool { | |
| if a.fuel_tank_size != b.fuel_tank_size { | |
| return false; | |
| } | |
| if a.payload != b.payload { | |
| return false; | |
| } | |
| if a.wheel_diameter != b.wheel_diameter { | |
| return false; | |
| } | |
| if a.wheel_width != b.wheel_width { | |
| return false; | |
| } | |
| if a.storage != b.storage { | |
| return false; | |
| } | |
| true | |
| } | |
| // EMIT_MIR chained_comparison.naive.runtime-optimized.after.mir | |
| // EMIT_MIR chained_comparison.bitand.runtime-optimized.after.mir | |
| // EMIT_MIR chained_comparison.returning.runtime-optimized.after.mir |