#include 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((as_type((*(tint_private_vars)).a) + as_type(1))); } void uses_b(thread tint_private_vars_struct* const tint_private_vars) { (*(tint_private_vars)).b = as_type((as_type((*(tint_private_vars)).b) * as_type(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; }