SKIP: FAILED

#include <metal_stdlib>
using namespace metal;

threadgroup float2x4 S;
float4 func(threadgroup float4* const pointer) {
  return pointer;
}
kernel void tint_symbol(uint tint_local_index [[thread_index_in_threadgroup]]) {
  if ((tint_local_index == 0u)) {
    S = float2x4(float4(0.0f), float4(0.0f));
  }
  threadgroup_barrier(mem_flags::mem_threadgroup);
  float4 const r = func(S[1]);
}
program_source:4:22: error: program scope variable must reside in constant address space
threadgroup float2x4 S;
                     ^
program_source:6:10: error: cannot initialize return object of type 'float4' (vector of 4 'float' values) with an lvalue of type 'threadgroup float4 *const'
  return pointer;
         ^~~~~~~
program_source:9:25: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
  if ((tint_local_index == 0u)) {
       ~~~~~~~~~~~~~~~~~^~~~~
program_source:9:25: note: remove extraneous parentheses around the comparison to silence this warning
  if ((tint_local_index == 0u)) {
      ~                 ^    ~
program_source:9:25: note: use '=' to turn this equality comparison into an assignment
  if ((tint_local_index == 0u)) {
                        ^~
                        =
program_source:13:16: warning: unused variable 'r' [-Wunused-variable]
  float4 const r = func(S[1]);
               ^

