SKIP: FAILED

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

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
  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
  %x_6:ptr<uniform, buf1, read> = var @binding_point(0, 1)
  %x_9:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void -> %b2 {
  %b2 = block {
    %data:ptr<function, array<f32, 10>, read_write> = var
    %x_41:ptr<function, i32, read_write> = var
    %x_53:ptr<function, i32, read_write> = var
    store %x_41, 0i
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %x_42:ptr<function, i32, read_write> = var
        %10:i32 = load %x_41
        %11:bool = lt %10, 10i
        if %11 [t: %b5, f: %b6] {  # if_1
          %b5 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # false
            exit_loop  # loop_1
          }
        }
        continue %b4
      }
      %b4 = block {  # continuing
        %12:i32 = load %x_41
        %13:ptr<function, f32, read_write> = access %data, %12
        %14:i32 = load %x_41
        %15:i32 = sub 10i, %14
        %16:f32 = convert %15
        %17:ptr<uniform, vec2<f32>, read> = access %x_9, 0u
        %18:f32 = load_vector_element %17, 1u
        %19:f32 = mul %16, %18
        store %13, %19
        %20:i32 = load %x_41
        %21:i32 = add %20, 1i
        store %x_42, %21
        %22:i32 = load %x_42
        store %x_41, %22
        next_iteration %b3
      }
    }
    store %x_53, 0i
    loop [b: %b7, c: %b8] {  # loop_2
      %b7 = block {  # body
        %x_60:ptr<function, i32, read_write> = var
        %x_54:ptr<function, i32, read_write> = var
        %25:i32 = load %x_53
        %26:bool = lt %25, 9i
        if %26 [t: %b9, f: %b10] {  # if_2
          %b9 = block {  # true
            exit_if  # if_2
          }
          %b10 = block {  # false
            exit_loop  # loop_2
          }
        }
        store %x_60, 0i
        loop [b: %b11, c: %b12] {  # loop_3
          %b11 = block {  # body
            %x_83:ptr<function, bool, read_write> = var
            %x_84:ptr<function, bool, read_write> = var
            %x_85:ptr<function, bool, read_write> = var
            %x_61:ptr<function, i32, read_write> = var
            %31:i32 = load %x_60
            %32:bool = lt %31, 10i
            if %32 [t: %b13, f: %b14] {  # if_3
              %b13 = block {  # true
                exit_if  # if_3
              }
              %b14 = block {  # false
                exit_loop  # loop_3
              }
            }
            %33:i32 = load %x_60
            %34:i32 = load %x_53
            %35:i32 = add %34, 1i
            %36:bool = lt %33, %35
            if %36 [t: %b15] {  # if_4
              %b15 = block {  # true
                continue %b12
              }
            }
            %x_70_save:i32 = load %x_53
            %38:i32 = load %x_53
            %39:ptr<function, f32, read_write> = access %data, %38
            %x_71:f32 = load %39
            %x_72_save:i32 = load %x_60
            %42:i32 = load %x_60
            %43:ptr<function, f32, read_write> = access %data, %42
            %x_73:f32 = load %43
            %45:f32 = load_vector_element %gl_FragCoord, 1u
            %46:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
            %47:f32 = load_vector_element %46, 1u
            %48:f32 = mul %47, 0.5f
            %49:bool = lt %45, %48
            if %49 [t: %b16, f: %b17] {  # if_5
              %b16 = block {  # true
                %50:bool = gt %x_71, %x_73
                store %x_83, %50
                %51:bool = load %x_83
                store %x_85, %51
                exit_if  # if_5
              }
              %b17 = block {  # false
                %52:bool = lt %x_71, %x_73
                store %x_84, %52
                %53:bool = load %x_84
                store %x_85, %53
                exit_if  # if_5
              }
            }
            %54:bool = load %x_85
            if %54 [t: %b18] {  # if_6
              %b18 = block {  # true
                %55:ptr<function, f32, read_write> = access %data, %x_70_save
                %x_88:f32 = load %55
                %57:ptr<function, f32, read_write> = access %data, %x_70_save
                %58:ptr<function, f32, read_write> = access %data, %x_72_save
                %59:f32 = load %58
                store %57, %59
                %60:ptr<function, f32, read_write> = access %data, %x_72_save
                store %60, %x_88
                exit_if  # if_6
              }
            }
            continue %b12
          }
          %b12 = block {  # continuing
            %61:i32 = load %x_60
            %62:i32 = add %61, 1i
            store %x_61, %62
            %63:i32 = load %x_61
            store %x_60, %63
            next_iteration %b11
          }
        }
        continue %b8
      }
      %b8 = block {  # continuing
        %64:i32 = load %x_53
        %65:i32 = add %64, 1i
        store %x_54, %65
        %66:i32 = load %x_54
        store %x_53, %66
        next_iteration %b7
      }
    }
    %67:f32 = load_vector_element %gl_FragCoord, 0u
    %68:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
    %69:f32 = load_vector_element %68, 0u
    %70:f32 = mul %69, 0.5f
    %71:bool = lt %67, %70
    if %71 [t: %b19, f: %b20] {  # if_7
      %b19 = block {  # true
        %72:ptr<function, f32, read_write> = access %data, 0i
        %73:f32 = load %72
        %74:f32 = mul %73, 0.10000000149011611938f
        %75:ptr<function, f32, read_write> = access %data, 5i
        %76:f32 = load %75
        %77:f32 = mul %76, 0.10000000149011611938f
        %78:ptr<function, f32, read_write> = access %data, 9i
        %79:f32 = load %78
        %80:f32 = mul %79, 0.10000000149011611938f
        %81:vec4<f32> = construct %74, %77, %80, 1.0f
        store %x_GLF_color, %81
        exit_if  # if_7
      }
      %b20 = block {  # false
        %82:ptr<function, f32, read_write> = access %data, 5i
        %83:f32 = load %82
        %84:f32 = mul %83, 0.10000000149011611938f
        %85:ptr<function, f32, read_write> = access %data, 9i
        %86:f32 = load %85
        %87:f32 = mul %86, 0.10000000149011611938f
        %88:ptr<function, f32, read_write> = access %data, 0i
        %89:f32 = load %88
        %90:f32 = mul %89, 0.10000000149011611938f
        %91:vec4<f32> = construct %84, %87, %90, 1.0f
        store %x_GLF_color, %91
        exit_if  # if_7
      }
    }
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b21 {
  %b21 = block {
    store %gl_FragCoord, %gl_FragCoord_param
    %94:void = call %main_1
    %95:vec4<f32> = load %x_GLF_color
    %96:main_out = construct %95
    ret %96
  }
}

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.  *
********************************************************************
