#include using namespace metal; void uses_a(threadgroup int* const tint_symbol) { *(tint_symbol) = (*(tint_symbol) + 1); } void uses_b(threadgroup int* const tint_symbol_1) { *(tint_symbol_1) = (*(tint_symbol_1) * 2); } void uses_a_and_b(threadgroup int* const tint_symbol_2, threadgroup int* const tint_symbol_3) { *(tint_symbol_2) = *(tint_symbol_3); } void no_uses() { } void outer(threadgroup int* const tint_symbol_4, threadgroup int* const tint_symbol_5) { *(tint_symbol_4) = 0; uses_a(tint_symbol_4); uses_a_and_b(tint_symbol_5, tint_symbol_4); uses_b(tint_symbol_5); no_uses(); } kernel void main1() { threadgroup int tint_symbol_7 = 0; threadgroup int* const tint_symbol_6 = &(tint_symbol_7); *(tint_symbol_6) = 42; uses_a(tint_symbol_6); return; } kernel void main2() { threadgroup int tint_symbol_9 = 0; threadgroup int* const tint_symbol_8 = &(tint_symbol_9); *(tint_symbol_8) = 7; uses_b(tint_symbol_8); return; } kernel void main3() { threadgroup int tint_symbol_11 = 0; threadgroup int* const tint_symbol_10 = &(tint_symbol_11); threadgroup int tint_symbol_13 = 0; threadgroup int* const tint_symbol_12 = &(tint_symbol_13); outer(tint_symbol_10, tint_symbol_12); no_uses(); return; } kernel void main4() { no_uses(); return; }