#version 310 es precision highp float; struct atomic_compare_exchange_resulti32 { int old_value; bool exchanged; }; bool tint_discarded = false; struct tint_symbol_1 { int old_value; bool exchanged; }; layout(location = 0) out int value; layout(binding = 0, std430) buffer a_block_ssbo { int inner; } a; int foo() { tint_discarded = true; int x = 0; tint_symbol_1 tint_symbol = tint_symbol_1(0, false); if (!(tint_discarded)) { atomic_compare_exchange_resulti32 atomic_compare_result; atomic_compare_result.old_value = atomicCompSwap(a.inner, 0, 1); atomic_compare_result.exchanged = atomic_compare_result.old_value == 0; atomic_compare_exchange_resulti32 tint_symbol_2 = atomic_compare_result; tint_symbol.old_value = tint_symbol_2.old_value; tint_symbol.exchanged = tint_symbol_2.exchanged; } tint_symbol_1 result = tint_symbol; if (result.exchanged) { x = result.old_value; } return x; } void main() { int inner_result = foo(); value = inner_result; if (tint_discarded) { discard; } return; }