SKIP: FAILED

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

buf0 = struct @align(4) {
  x_GLF_uniform_float_values:array<strided_arr, 1> @offset(0)
}

strided_arr_1 = struct @align(4) {
  el:i32 @offset(0)
}

buf1 = struct @align(4) {
  x_GLF_uniform_int_values:array<strided_arr_1, 4> @offset(0)
}

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

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

%main_1 = func():void -> %b2 {
  %b2 = block {
    %data:ptr<function, array<vec4<f32>, 2>, read_write> = var
    %b:ptr<function, i32, read_write> = var
    %y:ptr<function, i32, read_write> = var
    %i:ptr<function, i32, read_write> = var
    %10:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
    %11:f32 = load %10
    %12:vec4<f32> = construct %11
    %13:ptr<uniform, f32, read> = access %x_7, 0u, 0i, 0u
    %14:f32 = load %13
    %15:vec4<f32> = construct %14
    %16:array<vec4<f32>, 2> = construct %12, %15
    store %data, %16
    %17:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
    %18:i32 = load %17
    store %b, %18
    %19:f32 = load_vector_element %gl_FragCoord, 1u
    %20:i32 = convert %19
    %21:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
    %22:i32 = load %21
    %23:f32 = load_vector_element %gl_FragCoord, 1u
    %24:i32 = convert %23
    %25:i32 = or %22, %24
    %26:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
    %27:i32 = load %26
    %28:i32 = clamp %20, %25, %27
    store %y, %28
    %29:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
    %30:i32 = load %29
    store %i, %30
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %x_82:ptr<function, bool, read_write> = var
        %x_83:ptr<function, bool, read_write> = var
        %33:i32 = load %i
        %34:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
        %35:i32 = load %34
        %36:bool = lt %33, %35
        if %36 [t: %b5, f: %b6] {  # if_1
          %b5 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # false
            exit_loop  # loop_1
          }
        }
        %37:i32 = load %b
        %38:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
        %39:i32 = load %38
        %x_76:bool = gt %37, %39
        store %x_83, %x_76
        if %x_76 [t: %b7] {  # if_2
          %b7 = block {  # true
            %41:i32 = load %y
            %42:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
            %43:i32 = load %42
            %44:bool = gt %41, %43
            store %x_82, %44
            %45:bool = load %x_82
            store %x_83, %45
            exit_if  # if_2
          }
        }
        %46:bool = load %x_83
        if %46 [t: %b8] {  # if_3
          %b8 = block {  # true
            exit_loop  # loop_1
          }
        }
        %47:i32 = load %b
        %48:i32 = add %47, 1i
        store %b, %48
        continue %b4
      }
      %b4 = block {  # continuing
        %49:i32 = load %i
        %50:i32 = add %49, 1i
        store %i, %50
        next_iteration %b3
      }
    }
    %51:i32 = load %b
    %52:ptr<uniform, i32, read> = access %x_10, 0u, 0i, 0u
    %53:i32 = load %52
    %54:bool = eq %51, %53
    if %54 [t: %b9] {  # if_4
      %b9 = block {  # true
        %55:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
        %x_97:i32 = load %55
        %57:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
        %x_99:i32 = load %57
        %59:ptr<uniform, i32, read> = access %x_10, 0u, 3i, 0u
        %x_101:i32 = load %59
        %61:i32 = clamp %x_97, %x_99, %x_101
        %62:ptr<function, vec4<f32>, read_write> = access %data, %61
        %63:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
        %64:i32 = load %63
        %65:f32 = convert %64
        %66:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
        %67:i32 = load %66
        %68:f32 = convert %67
        %69:ptr<uniform, i32, read> = access %x_10, 0u, 2i, 0u
        %70:i32 = load %69
        %71:f32 = convert %70
        %72:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
        %73:i32 = load %72
        %74:f32 = convert %73
        %75:vec4<f32> = construct %65, %68, %71, %74
        store %62, %75
        exit_if  # if_4
      }
    }
    %76:ptr<uniform, i32, read> = access %x_10, 0u, 1i, 0u
    %77:i32 = load %76
    %78:ptr<function, vec4<f32>, read_write> = access %data, %77
    %x_120:vec4<f32> = load %78
    %80:f32 = access %x_120, 0u
    %81:f32 = access %x_120, 1u
    %82:f32 = access %x_120, 2u
    %83:f32 = access %x_120, 3u
    %84:vec4<f32> = construct %80, %81, %82, %83
    store %x_GLF_color, %84
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b10 {
  %b10 = block {
    store %gl_FragCoord, %gl_FragCoord_param
    %87:void = call %main_1
    %88:vec4<f32> = load %x_GLF_color
    %89:main_out = construct %88
    ret %89
  }
}

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