struct S { float2 value; }; void testIn(in float2 a, in float2 b, in float2 c) { a = float2(1); } void testOut(out float2 a, out float2 b, out float2 c) { a = float2(1); } void testInout(inout float2 a, inout float2 b, inout float2 c) { a = float2(1); } void testSIn(in S a, in S b, in S c) { a.value = float2(1); } void testSOut(out S a, out S b, out S c) { a.value = float2(1); } void testSInout(inout S a, inout S b, inout S c) { a.value = float2(1); } void func(float2 p) { testIn(p, p, p); testOut(p, p, p); testInout(p, p, p); S s; testSIn(s, s, s); testSOut(s, s, s); testSInout(s, s, s); } /*%%* function 'testOut' never assigns a value to out parameter 'b' function 'testOut' never assigns a value to out parameter 'c' function 'testSOut' never assigns a value to out parameter 'b' function 'testSOut' never assigns a value to out parameter 'c' *%%*/