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, 7> @offset(0)
}

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

%b1 = block {  # root
  %x_6: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 {
    %v1:ptr<function, vec4<f32>, read_write> = var
    %v2:ptr<function, vec4<f32>, read_write> = var
    %v3:ptr<function, vec4<f32>, read_write> = var
    %v4:ptr<function, vec4<f32>, read_write> = var
    %x_69:ptr<function, bool, read_write> = var
    %x_70:ptr<function, bool, read_write> = var
    %x_77:ptr<function, bool, read_write> = var
    %x_78:ptr<function, bool, read_write> = var
    %x_85:ptr<function, bool, read_write> = var
    %x_86:ptr<function, bool, read_write> = var
    %x_93:ptr<function, bool, read_write> = var
    %x_94:ptr<function, bool, read_write> = var
    %16:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
    %17:f32 = load %16
    %18:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
    %19:f32 = load %18
    %20:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
    %21:f32 = load %20
    %22:ptr<uniform, f32, read> = access %x_6, 0u, 2i, 0u
    %23:f32 = load %22
    %24:vec4<f32> = construct %17, %19, %21, %23
    store %v1, %24
    store %v2, vec4<f32>(1.57079637050628662109f, 1.11976957321166992188f, 1.0f, 0.92729520797729492188f)
    %25:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
    %26:f32 = load %25
    %27:vec4<f32> = construct %26
    store %v3, %27
    %28:vec4<f32> = load %v1
    %29:vec4<f32> = load %v2
    %30:vec4<f32> = load %v3
    %31:vec4<f32> = smoothstep %28, %29, %30
    store %v4, %31
    %32:vec4<f32> = load %v4
    %33:vec4<f32> = swizzle %32, xywx
    store %x_GLF_color, %33
    %34:f32 = load_vector_element %v4, 0u
    %35:ptr<uniform, f32, read> = access %x_6, 0u, 4i, 0u
    %36:f32 = load %35
    %x_62:bool = gt %34, %36
    store %x_70, %x_62
    if %x_62 [t: %b3] {  # if_1
      %b3 = block {  # true
        %38:f32 = load_vector_element %v4, 0u
        %39:ptr<uniform, f32, read> = access %x_6, 0u, 5i, 0u
        %40:f32 = load %39
        %41:bool = lt %38, %40
        store %x_69, %41
        %42:bool = load %x_69
        store %x_70, %42
        exit_if  # if_1
      }
    }
    %43:bool = load %x_70
    store %x_78, %43
    %44:bool = load %x_70
    if %44 [t: %b4] {  # if_2
      %b4 = block {  # true
        %45:f32 = load_vector_element %v4, 1u
        %46:ptr<uniform, f32, read> = access %x_6, 0u, 3i, 0u
        %47:f32 = load %46
        %48:bool = gt %45, %47
        store %x_77, %48
        %49:bool = load %x_77
        store %x_78, %49
        exit_if  # if_2
      }
    }
    %50:bool = load %x_78
    store %x_86, %50
    %51:bool = load %x_78
    if %51 [t: %b5] {  # if_3
      %b5 = block {  # true
        %52:f32 = load_vector_element %v4, 1u
        %53:ptr<uniform, f32, read> = access %x_6, 0u, 6i, 0u
        %54:f32 = load %53
        %55:bool = lt %52, %54
        store %x_85, %55
        %56:bool = load %x_85
        store %x_86, %56
        exit_if  # if_3
      }
    }
    %57:bool = load %x_86
    store %x_94, %57
    %58:bool = load %x_86
    if %58 [t: %b6] {  # if_4
      %b6 = block {  # true
        %59:f32 = load_vector_element %v4, 3u
        %60:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
        %61:f32 = load %60
        %62:bool = eq %59, %61
        store %x_93, %62
        %63:bool = load %x_93
        store %x_94, %63
        exit_if  # if_4
      }
    }
    %64:bool = load %x_94
    if %64 [t: %b7, f: %b8] {  # if_5
      %b7 = block {  # true
        %65:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
        %66:f32 = load %65
        %67:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
        %68:f32 = load %67
        %69:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
        %70:f32 = load %69
        %71:ptr<uniform, f32, read> = access %x_6, 0u, 0i, 0u
        %72:f32 = load %71
        %73:vec4<f32> = construct %66, %68, %70, %72
        store %x_GLF_color, %73
        exit_if  # if_5
      }
      %b8 = block {  # false
        %74:ptr<uniform, f32, read> = access %x_6, 0u, 1i, 0u
        %75:f32 = load %74
        %76:vec4<f32> = construct %75
        store %x_GLF_color, %76
        exit_if  # if_5
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b9 {
  %b9 = block {
    %78:void = call %main_1
    %79:vec4<f32> = load %x_GLF_color
    %80:main_out = construct %79
    ret %80
  }
}

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