SKIP: FAILED

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

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

%b1 = block {  # root
  %x_8: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 {
    %highSigned:ptr<function, i32, read_write> = var
    %highUnsigned:ptr<function, u32, read_write> = var
    %i:ptr<function, i32, read_write> = var
    %data:ptr<function, array<i32, 2>, read_write> = var
    %i_1:ptr<function, u32, read_write> = var
    %x_78:ptr<function, bool, read_write> = var
    %x_79_phi:ptr<function, bool, read_write> = var
    store %highSigned, 1i
    store %highUnsigned, 2u
    store %i, 0i
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %x_42:i32 = load %i
        %x_43:i32 = load %highSigned
        %13:ptr<uniform, i32, read> = access %x_8, 0u
        %x_46:i32 = load %13
        %15:i32 = min 10i, %x_43
        %16:i32 = add %15, %x_46
        %17:bool = lt %x_42, %16
        if %17 [t: %b5, f: %b6] {  # if_1
          %b5 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # false
            exit_loop  # loop_1
          }
        }
        %x_50:i32 = load %i
        %19:ptr<function, i32, read_write> = access %data, %x_50
        store %19, 5i
        continue %b4
      }
      %b4 = block {  # continuing
        %x_52:i32 = load %i
        %21:i32 = add %x_52, 1i
        store %i, %21
        next_iteration %b3
      }
    }
    store %i_1, 1u
    loop [b: %b7, c: %b8] {  # loop_2
      %b7 = block {  # body
        %x_58:u32 = load %i_1
        %x_59:u32 = load %highUnsigned
        %24:ptr<uniform, i32, read> = access %x_8, 0u
        %x_62:i32 = load %24
        %26:u32 = min 10u, %x_59
        %27:u32 = bitcast %x_62
        %28:u32 = add %26, %27
        %29:bool = lt %x_58, %28
        if %29 [t: %b9, f: %b10] {  # if_2
          %b9 = block {  # true
            exit_if  # if_2
          }
          %b10 = block {  # false
            exit_loop  # loop_2
          }
        }
        %x_67:u32 = load %i_1
        %31:ptr<function, i32, read_write> = access %data, %x_67
        store %31, 6i
        continue %b8
      }
      %b8 = block {  # continuing
        %x_69:u32 = load %i_1
        %33:u32 = add %x_69, 1u
        store %i_1, %33
        next_iteration %b7
      }
    }
    %34:ptr<function, i32, read_write> = access %data, 0i
    %x_72:i32 = load %34
    %x_73:bool = eq %x_72, 5i
    store %x_79_phi, %x_73
    if %x_73 [t: %b11] {  # if_3
      %b11 = block {  # true
        %37:ptr<function, i32, read_write> = access %data, 1i
        %x_77:i32 = load %37
        %39:bool = eq %x_77, 6i
        store %x_78, %39
        %40:bool = load %x_78
        store %x_79_phi, %40
        exit_if  # if_3
      }
    }
    %x_79:bool = load %x_79_phi
    if %x_79 [t: %b12, f: %b13] {  # if_4
      %b12 = block {  # true
        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
        exit_if  # if_4
      }
      %b13 = block {  # false
        store %x_GLF_color, vec4<f32>(0.0f)
        exit_if  # if_4
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b14 {
  %b14 = block {
    %43:void = call %main_1
    %44:vec4<f32> = load %x_GLF_color
    %45:main_out = construct %44
    ret %45
  }
}

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