#![allow(unused_assignments, unused_variables)]

#[rustfmt::skip]
fn main() {
    // Initialize test constants in a way that cannot be determined at compile time, to ensure
    // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from
    // dependent conditions.
    let is_true = std::env::args().len() == 1;

    let (mut a, mut b, mut c) = (0, 0, 0);
    if is_true {
        a = 1;
        b = 10;
        c = 100;
    }
    let
        somebool
        =
            a < b
        ||
            b < c
    ;
    let
        somebool
        =
            b < a
        ||
            b < c
    ;
    let somebool = a < b && b < c;
    let somebool = b < a && b < c;

    if
        !
        is_true
    {
        a = 2
        ;
    }

    if
        is_true
    {
        b = 30
        ;
    }
    else
    {
        c = 400
        ;
    }

    if !is_true {
        a = 2;
    }

    if is_true {
        b = 30;
    } else {
        c = 400;
    }
}
