SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(8) {
  resolution:vec2<f32> @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)
  %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 {
    %c:ptr<function, vec3<f32>, read_write> = var
    %x_51:ptr<function, f32, read_write> = var
    %x_55:ptr<function, f32, read_write> = var
    %x_58:ptr<function, i32, read_write> = var
    %x_56:ptr<function, f32, read_write> = var
    %x_81:ptr<function, f32, read_write> = var
    %x_82:ptr<function, f32, read_write> = var
    %x_83:ptr<function, bool, read_write> = var
    %x_85:ptr<function, f32, read_write> = var
    %x_118:ptr<function, f32, read_write> = var
    %x_119:ptr<function, f32, read_write> = var
    %x_122:ptr<function, f32, read_write> = var
    %x_129:ptr<function, i32, read_write> = var
    store %c, vec3<f32>(7.0f, 8.0f, 9.0f)
    %18:ptr<uniform, vec2<f32>, read> = access %x_7, 0u
    %19:f32 = load_vector_element %18, 0u
    %20:f32 = mul %19, 0.125f
    %x_49:f32 = round %20
    %22:f32 = load_vector_element %gl_FragCoord, 0u
    store %x_51, %22
    switch 0u [c: (default, %b3)] {  # switch_1
      %b3 = block {  # case
        store %x_55, -0.5f
        store %x_58, 1i
        loop [b: %b4, c: %b5] {  # loop_1
          %b4 = block {  # body
            %x_68:ptr<function, f32, read_write> = var
            %x_76:ptr<function, f32, read_write> = var
            %x_59:ptr<function, i32, read_write> = var
            store %x_81, 0.0f
            %26:f32 = load %x_55
            store %x_82, %26
            store %x_83, false
            %27:i32 = load %x_58
            %28:bool = lt %27, 800i
            if %28 [t: %b6, f: %b7] {  # if_1
              %b6 = block {  # true
                exit_if  # if_1
              }
              %b7 = block {  # false
                exit_loop  # loop_1
              }
            }
            %x_75:ptr<function, f32, read_write> = var
            %30:i32 = load %x_58
            %31:i32 = mod %30, 32i
            %32:bool = eq %31, 0i
            if %32 [t: %b8, f: %b9] {  # if_2
              %b8 = block {  # true
                %33:f32 = load %x_55
                %34:f32 = add %33, 0.40000000596046447754f
                store %x_68, %34
                %35:f32 = load %x_68
                store %x_56, %35
                exit_if  # if_2
              }
              %b9 = block {  # false
                %36:f32 = load %x_55
                store %x_76, %36
                %37:i32 = load %x_58
                %38:f32 = convert %37
                %39:f32 = round %x_49
                %40:i32 = load %x_58
                %41:f32 = convert %40
                %42:f32 = round %x_49
                %43:f32 = div %41, %42
                %44:f32 = floor %43
                %45:f32 = mul %39, %44
                %46:f32 = sub %38, %45
                %47:bool = lte %46, 0.00999999977648258209f
                if %47 [t: %b10] {  # if_3
                  %b10 = block {  # true
                    %48:f32 = load %x_55
                    %49:f32 = add %48, 100.0f
                    store %x_75, %49
                    %50:f32 = load %x_75
                    store %x_76, %50
                    exit_if  # if_3
                  }
                }
                %51:f32 = load %x_76
                store %x_56, %51
                exit_if  # if_2
              }
            }
            %52:i32 = load %x_58
            %53:f32 = convert %52
            %54:f32 = load %x_51
            %55:bool = gte %53, %54
            if %55 [t: %b11] {  # if_4
              %b11 = block {  # true
                %56:f32 = load %x_56
                store %x_81, %56
                %57:f32 = load %x_56
                store %x_82, %57
                store %x_83, true
                exit_loop  # loop_1
              }
            }
            continue %b5
          }
          %b5 = block {  # continuing
            %58:i32 = load %x_58
            %59:i32 = add %58, 1i
            store %x_59, %59
            %60:f32 = load %x_56
            store %x_55, %60
            %61:i32 = load %x_59
            store %x_58, %61
            next_iteration %b4
          }
        }
        %62:f32 = load %x_81
        store %x_85, %62
        %63:bool = load %x_83
        if %63 [t: %b12] {  # if_5
          %b12 = block {  # true
            exit_switch  # switch_1
          }
        }
        %64:f32 = load %x_82
        store %x_85, %64
        exit_switch  # switch_1
      }
    }
    %x_88:ptr<function, f32, read_write> = var
    %x_92:ptr<function, f32, read_write> = var
    %x_95:ptr<function, i32, read_write> = var
    %x_93:ptr<function, f32, read_write> = var
    %x_120:ptr<function, bool, read_write> = var
    %70:f32 = load %x_85
    store_vector_element %c, 0u, %70
    %71:f32 = load_vector_element %gl_FragCoord, 1u
    store %x_88, %71
    switch 0u [c: (default, %b13)] {  # switch_2
      %b13 = block {  # case
        store %x_92, -0.5f
        store %x_95, 1i
        loop [b: %b14, c: %b15] {  # loop_2
          %b14 = block {  # body
            %x_105:ptr<function, f32, read_write> = var
            %x_113:ptr<function, f32, read_write> = var
            %x_96:ptr<function, i32, read_write> = var
            store %x_118, 0.0f
            %75:f32 = load %x_92
            store %x_119, %75
            store %x_120, false
            %76:i32 = load %x_95
            %77:bool = lt %76, 800i
            if %77 [t: %b16, f: %b17] {  # if_6
              %b16 = block {  # true
                exit_if  # if_6
              }
              %b17 = block {  # false
                exit_loop  # loop_2
              }
            }
            %x_112:ptr<function, f32, read_write> = var
            %79:i32 = load %x_95
            %80:i32 = mod %79, 32i
            %81:bool = eq %80, 0i
            if %81 [t: %b18, f: %b19] {  # if_7
              %b18 = block {  # true
                %82:f32 = load %x_92
                %83:f32 = add %82, 0.40000000596046447754f
                store %x_105, %83
                %84:f32 = load %x_105
                store %x_93, %84
                exit_if  # if_7
              }
              %b19 = block {  # false
                %85:f32 = load %x_92
                store %x_113, %85
                %86:i32 = load %x_95
                %87:f32 = convert %86
                %88:f32 = round %x_49
                %89:i32 = load %x_95
                %90:f32 = convert %89
                %91:f32 = round %x_49
                %92:f32 = div %90, %91
                %93:f32 = floor %92
                %94:f32 = mul %88, %93
                %95:f32 = sub %87, %94
                %96:bool = lte %95, 0.00999999977648258209f
                if %96 [t: %b20] {  # if_8
                  %b20 = block {  # true
                    %97:f32 = load %x_92
                    %98:f32 = add %97, 100.0f
                    store %x_112, %98
                    %99:f32 = load %x_112
                    store %x_113, %99
                    exit_if  # if_8
                  }
                }
                %100:f32 = load %x_113
                store %x_93, %100
                exit_if  # if_7
              }
            }
            %101:i32 = load %x_95
            %102:f32 = convert %101
            %103:f32 = load %x_88
            %104:bool = gte %102, %103
            if %104 [t: %b21] {  # if_9
              %b21 = block {  # true
                %105:f32 = load %x_93
                store %x_118, %105
                %106:f32 = load %x_93
                store %x_119, %106
                store %x_120, true
                exit_loop  # loop_2
              }
            }
            continue %b15
          }
          %b15 = block {  # continuing
            %107:i32 = load %x_95
            %108:i32 = add %107, 1i
            store %x_96, %108
            %109:f32 = load %x_93
            store %x_92, %109
            %110:i32 = load %x_96
            store %x_95, %110
            next_iteration %b14
          }
        }
        %111:f32 = load %x_118
        store %x_122, %111
        %112:bool = load %x_120
        if %112 [t: %b22] {  # if_10
          %b22 = block {  # true
            exit_switch  # switch_2
          }
        }
        %113:f32 = load %x_119
        store %x_122, %113
        exit_switch  # switch_2
      }
    }
    %114:f32 = load %x_122
    store_vector_element %c, 1u, %114
    %115:f32 = load_vector_element %c, 0u
    %116:f32 = load_vector_element %c, 1u
    %117:f32 = add %115, %116
    store_vector_element %c, 2u, %117
    store %x_129, 0i
    loop [b: %b23, c: %b24] {  # loop_3
      %b23 = block {  # body
        %x_130:ptr<function, i32, read_write> = var
        %119:i32 = load %x_129
        %120:bool = lt %119, 3i
        if %120 [t: %b25, f: %b26] {  # if_11
          %b25 = block {  # true
            exit_if  # if_11
          }
          %b26 = block {  # false
            exit_loop  # loop_3
          }
        }
        %121:i32 = load %x_129
        %122:f32 = load_vector_element %c, %121
        %123:bool = gte %122, 1.0f
        if %123 [t: %b27] {  # if_12
          %b27 = block {  # true
            %124:i32 = load %x_129
            %125:i32 = load %x_129
            %126:f32 = load_vector_element %c, %125
            %127:i32 = load %x_129
            %128:f32 = load_vector_element %c, %127
            %129:f32 = mul %126, %128
            store_vector_element %c, %124, %129
            exit_if  # if_12
          }
        }
        continue %b24
      }
      %b24 = block {  # continuing
        %130:i32 = load %x_129
        %131:i32 = add %130, 1i
        store %x_130, %131
        %132:i32 = load %x_130
        store %x_129, %132
        next_iteration %b23
      }
    }
    %133:vec3<f32> = load %c
    %134:vec3<f32> = abs %133
    %x_145:vec3<f32> = normalize %134
    %136:f32 = access %x_145, 0u
    %137:f32 = access %x_145, 1u
    %138:f32 = access %x_145, 2u
    %139:vec4<f32> = construct %136, %137, %138, 1.0f
    store %x_GLF_color, %139
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b28 {
  %b28 = block {
    store %gl_FragCoord, %gl_FragCoord_param
    %142:void = call %main_1
    %143:vec4<f32> = load %x_GLF_color
    %144:main_out = construct %143
    ret %144
  }
}

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