SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
  injectionSwitch:vec2<f32> @offset(0)
}

main_out = struct @align(16) {
  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
}

%b1 = block {  # root
  %x_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%x_51 = func():void -> %b2 {
  %b2 = block {
    discard
    ret
  }
}
%main_1 = func():void -> %b3 {
  %b3 = block {
    loop [b: %b4, c: %b5] {  # loop_1
      %b4 = block {  # body
        %x_30:ptr<function, bool, read_write> = var
        %x_31:ptr<function, bool, read_write> = var
        store %x_30, false
        loop [b: %b6, c: %b7] {  # loop_2
          %b6 = block {  # body
            loop [b: %b8, c: %b9] {  # loop_3
              %b8 = block {  # body
                %x_52:ptr<function, vec4<f32>, read_write> = var
                %x_54:ptr<function, vec4<f32>, read_write> = var
                %x_55:ptr<function, vec4<f32>, read_write> = var
                %10:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
                %x_36:f32 = load_vector_element %10, 1u
                %12:bool = load %x_30
                store %x_31, %12
                %13:bool = gt %x_36, 0.0f
                if %13 [t: %b10, f: %b11] {  # if_1
                  %b10 = block {  # true
                    exit_if  # if_1
                  }
                  %b11 = block {  # false
                    exit_loop  # loop_3
                  }
                }
                loop [b: %b12, c: %b13] {  # loop_4
                  %b12 = block {  # body
                    %14:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
                    %x_46:f32 = load_vector_element %14, 0u
                    %16:bool = gt %x_46, 0.0f
                    if %16 [t: %b14] {  # if_2
                      %b14 = block {  # true
                        %17:void = call %x_51
                        store %x_52, vec4<f32>(0.0f)
                        %18:vec4<f32> = load %x_52
                        store %x_55, %18
                        exit_loop  # loop_4
                      }
                    }
                    %19:vec4<f32> = construct %x_46
                    %20:vec4<f32> = add vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), %19
                    store %x_54, %20
                    %21:vec4<f32> = load %x_54
                    store %x_55, %21
                    exit_loop  # loop_4
                  }
                  %b13 = block {  # continuing
                    next_iteration %b12
                  }
                }
                %22:vec4<f32> = load %x_55
                store %x_GLF_color, %22
                store %x_31, true
                exit_loop  # loop_3
              }
              %b9 = block {  # continuing
                next_iteration %b8
              }
            }
            %23:bool = load %x_31
            if %23 [t: %b15, f: %b16] {  # if_3
              %b15 = block {  # true
                exit_loop  # loop_2
              }
              %b16 = block {  # false
                continue %b7
              }
            }
            continue %b7
          }
          %b7 = block {  # continuing
            %24:bool = load %x_31
            store %x_30, %24
            next_iteration %b6
          }
        }
        %25:bool = load %x_31
        if %25 [t: %b17] {  # if_4
          %b17 = block {  # true
            exit_loop  # loop_1
          }
        }
        exit_loop  # loop_1
      }
      %b5 = block {  # continuing
        next_iteration %b4
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b18 {
  %b18 = block {
    %27:void = call %main_1
    %28:vec4<f32> = load %x_GLF_color
    %29:main_out = construct %28
    ret %29
  }
}

unhandled variable address space
********************************************************************
*  The tint shader compiler has encountered an unexpected error.   *
*                                                                  *
*  Please help us fix this issue by submitting a bug report at     *
*  crbug.com/tint with the source program that triggered the bug.  *
********************************************************************
