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 x_4 = 0u;
          if (x_102) {
            break;
          }
          x_4 = (x_2 + 1u);
          uint const x_3_c30 = x_3;
          x_2 = x_4;
          x_3 = x_3_c30;
          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;
            ^

