| #include <metal_stdlib> |
| |
| using namespace metal; |
| struct tint_private_vars_struct { |
| int a; |
| int b; |
| int c; |
| }; |
| |
| void uses_a(thread tint_private_vars_struct* const tint_private_vars) { |
| (*(tint_private_vars)).a = as_type<int>((as_type<uint>((*(tint_private_vars)).a) + as_type<uint>(1))); |
| } |
| |
| void uses_b(thread tint_private_vars_struct* const tint_private_vars) { |
| (*(tint_private_vars)).b = as_type<int>((as_type<uint>((*(tint_private_vars)).b) * as_type<uint>(2))); |
| } |
| |
| void uses_a_and_b(thread tint_private_vars_struct* const tint_private_vars) { |
| (*(tint_private_vars)).b = (*(tint_private_vars)).a; |
| } |
| |
| void no_uses() { |
| } |
| |
| void outer(thread tint_private_vars_struct* const tint_private_vars) { |
| (*(tint_private_vars)).a = 0; |
| uses_a(tint_private_vars); |
| uses_a_and_b(tint_private_vars); |
| uses_b(tint_private_vars); |
| no_uses(); |
| } |
| |
| kernel void main1() { |
| thread tint_private_vars_struct tint_private_vars = {}; |
| tint_private_vars.a = 42; |
| uses_a(&(tint_private_vars)); |
| return; |
| } |
| |
| kernel void main2() { |
| thread tint_private_vars_struct tint_private_vars = {}; |
| tint_private_vars.b = 7; |
| uses_b(&(tint_private_vars)); |
| return; |
| } |
| |
| kernel void main3() { |
| thread tint_private_vars_struct tint_private_vars = {}; |
| outer(&(tint_private_vars)); |
| no_uses(); |
| return; |
| } |
| |
| kernel void main4() { |
| no_uses(); |
| return; |
| } |
| |