struct B { float a; float b; }; static const B _80 = { 10.0f, 20.0f }; cbuffer UBO : register(b0) { int _42_some_value : packoffset(c0); }; void partial_inout(inout float4 x) { x.x = 10.0f; } void complete_inout(out float4 x) { x = 50.0f.xxxx; } void branchy_inout(inout float4 v) { v.y = 20.0f; if (_42_some_value == 20) { v = 50.0f.xxxx; } } void branchy_inout_2(out float4 v) { if (_42_some_value == 20) { v = 50.0f.xxxx; } else { v = 70.0f.xxxx; } v.y = 20.0f; } void partial_inout(inout B b) { b.b = 40.0f; } void frag_main() { float4 a = 10.0f.xxxx; float4 param = a; partial_inout(param); a = param; float4 param_1; complete_inout(param_1); a = param_1; float4 param_2 = a; branchy_inout(param_2); a = param_2; float4 param_3; branchy_inout_2(param_3); a = param_3; B b = _80; B param_4 = b; partial_inout(param_4); b = param_4; } void main() { frag_main(); }