/*#pragma settings NoInline*/

uniform half4 colorGreen, colorRed;

half4 dead_fn(half4 a, half4 b) {
    return a * b;
}

half4 live_fn(half4 a, half4 b) {
    return a + b;
}

half4 main() {
    const bool TRUE = true, FALSE = false;
    half4 a, b;

    @if (FALSE) {
        // Dead stripping a user function.
        half4 unused = dead_fn(half4(0.5), half4(2));
    } else {
        // A live user function.
        a = live_fn(half4(3), half4(-5));
    }

    @if (TRUE) {
        // A live built-in function.
        b = unpremul(half4(1));
    } else {
        // Dead stripping a built-in function. (This is a separate overload of `unpremul`.)
        float4 unused = unpremul(float4(-1));
    }

    return (a != half4(0) && b != half4(0)) ? colorGreen : colorRed;
}
