SKIP: FAILED

#include <metal_stdlib>
using namespace metal;
struct Communicators {
  float alice;
  float4 bob;
};
struct main_out {
  float4 x_2_1 [[position]];
};

thread Communicators x_1 = {};
thread float4 x_2 = 0.0f;
void main_1() {
}
vertex main_out tint_symbol(float x_1_param, float4 x_1_param_1) {
  x_1.alice = x_1_param;
  x_1.bob = x_1_param_1;
  main_1();
  return {.x_2_1=x_2};
}
program_source:11:22: error: program scope variable must reside in constant address space
thread Communicators x_1 = {};
                     ^
program_source:12:15: error: program scope variable must reside in constant address space
thread float4 x_2 = 0.0f;
              ^
program_source:15:29: error: invalid type 'float' for input declaration in a vertex function
vertex main_out tint_symbol(float x_1_param, float4 x_1_param_1) {
                            ^~~~~~~~~~~~~~~
program_source:15:46: error: invalid type 'float4' (vector of 4 'float' values) for input declaration in a vertex function
vertex main_out tint_symbol(float x_1_param, float4 x_1_param_1) {
                                             ^~~~~~~~~~~~~~~~~~

