SKIP: FAILED

#include <metal_stdlib>
using namespace metal;

threadgroup float2x3 v;
kernel void tint_symbol(uint tint_local_index [[thread_index_in_threadgroup]]) {
  if ((tint_local_index == 0u)) {
    v = float2x3(float3(0.0f), float3(0.0f));
  }
  threadgroup_barrier(mem_flags::mem_threadgroup);
}
program_source:4:22: error: program scope variable must reside in constant address space
threadgroup float2x3 v;
                     ^
program_source:6:25: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
  if ((tint_local_index == 0u)) {
       ~~~~~~~~~~~~~~~~~^~~~~
program_source:6:25: note: remove extraneous parentheses around the comparison to silence this warning
  if ((tint_local_index == 0u)) {
      ~                 ^    ~
program_source:6:25: note: use '=' to turn this equality comparison into an assignment
  if ((tint_local_index == 0u)) {
                        ^~
                        =

