SKIP: FAILED

#include <metal_stdlib>
using namespace metal;

thread uint x_1 = 0u;
thread bool x_7 = false;
thread bool x_8 = false;
void main_1() {
  {
    while(true) {
      uint x_2 = 0u;
      uint x_3 = 0u;
      bool const x_101 = x_7;
      bool const x_102 = x_8;
      x_2 = 0u;
      x_3 = 1u;
      if (x_101) {
        break;
      }
      {
        while(true) {
          uint const x_3_c20 = x_3;
          x_2 = (x_2 + 1u);
          x_3 = x_3_c20;
          if (x_102) {
            break;
          }
          continue;
        }
      }
      continue;
    }
  }
}
fragment void tint_symbol() {
  main_1();
}
program_source:4:13: error: program scope variable must reside in constant address space
thread uint x_1 = 0u;
            ^
program_source:5:13: error: program scope variable must reside in constant address space
thread bool x_7 = false;
            ^
program_source:6:13: error: program scope variable must reside in constant address space
thread bool x_8 = false;
            ^

