SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: 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
  %x_25: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
}

%drawShape_vf2_ = func(%pos:ptr<function, vec2<f32>, read_write>):vec3<f32> -> %b2 {
  %b2 = block {
    %c2:ptr<function, bool, read_write> = var
    %c3:ptr<function, bool, read_write> = var
    %c4:ptr<function, bool, read_write> = var
    %c5:ptr<function, bool, read_write> = var
    %c6:ptr<function, bool, read_write> = var
    %GLF_live4i:ptr<function, i32, read_write> = var
    %GLF_live4_looplimiter5:ptr<function, i32, read_write> = var
    %GLF_live7m42:ptr<function, mat4x2<f32>, read_write> = var
    %GLF_live7m33:ptr<function, mat3x3<f32>, read_write> = var
    %GLF_live7cols:ptr<function, i32, read_write> = var
    %GLF_live7_looplimiter3:ptr<function, i32, read_write> = var
    %GLF_live7rows:ptr<function, i32, read_write> = var
    %GLF_live7_looplimiter2:ptr<function, i32, read_write> = var
    %GLF_live7_looplimiter1:ptr<function, i32, read_write> = var
    %GLF_live7c:ptr<function, i32, read_write> = var
    %GLF_live7r:ptr<function, i32, read_write> = var
    %GLF_live7_looplimiter0:ptr<function, i32, read_write> = var
    %GLF_live7sum_index:ptr<function, i32, read_write> = var
    %GLF_live7_looplimiter7:ptr<function, i32, read_write> = var
    %GLF_live7cols_1:ptr<function, i32, read_write> = var
    %GLF_live7rows_1:ptr<function, i32, read_write> = var
    %GLF_live7sums:ptr<function, array<f32, 9>, read_write> = var
    %GLF_live7c_1:ptr<function, i32, read_write> = var
    %GLF_live7r_1:ptr<function, i32, read_write> = var
    %x_180:ptr<function, i32, read_write> = var
    %indexable:ptr<function, mat3x3<f32>, read_write> = var
    %32:f32 = load_vector_element %pos, 0u
    %33:bool = gt %32, 1.0f
    store %c2, %33
    %34:bool = load %c2
    if %34 [t: %b3] {  # if_1
      %b3 = block {  # true
        ret vec3<f32>(1.0f)
      }
    }
    %35:f32 = load_vector_element %pos, 1u
    %36:bool = lt %35, 1.0f
    store %c3, %36
    %37:bool = load %c3
    if %37 [t: %b4] {  # if_2
      %b4 = block {  # true
        ret vec3<f32>(1.0f)
      }
    }
    %38:f32 = load_vector_element %pos, 1u
    %39:bool = gt %38, 1.0f
    store %c4, %39
    %40:bool = load %c4
    if %40 [t: %b5] {  # if_3
      %b5 = block {  # true
        ret vec3<f32>(1.0f)
      }
    }
    %41:f32 = load_vector_element %pos, 0u
    %42:bool = lt %41, 1.0f
    store %c5, %42
    %43:bool = load %c5
    if %43 [t: %b6] {  # if_4
      %b6 = block {  # true
        ret vec3<f32>(1.0f)
      }
    }
    %44:f32 = load_vector_element %pos, 0u
    %45:f32 = add %44, 1.0f
    %46:bool = gt %45, 1.0f
    store %c6, %46
    %47:bool = load %c6
    if %47 [t: %b7] {  # if_5
      %b7 = block {  # true
        ret vec3<f32>(1.0f)
      }
    }
    store %GLF_live4i, 0i
    loop [b: %b8, c: %b9] {  # loop_1
      %b8 = block {  # body
        %48:i32 = load %GLF_live4i
        %49:bool = lt %48, 4i
        if %49 [t: %b10, f: %b11] {  # if_6
          %b10 = block {  # true
            exit_if  # if_6
          }
          %b11 = block {  # false
            exit_loop  # loop_1
          }
        }
        %50:i32 = load %GLF_live4_looplimiter5
        %51:bool = gte %50, 7i
        if %51 [t: %b12] {  # if_7
          %b12 = block {  # true
            exit_loop  # loop_1
          }
        }
        %52:i32 = load %GLF_live4_looplimiter5
        %53:i32 = add %52, 1i
        store %GLF_live4_looplimiter5, %53
        store %GLF_live7m42, mat4x2<f32>(vec2<f32>(1.0f, 0.0f), vec2<f32>(0.0f, 1.0f), vec2<f32>(0.0f), vec2<f32>(1.0f, 0.0f))
        store %GLF_live7m33, mat3x3<f32>(vec3<f32>(1.0f, 0.0f, 0.0f), vec3<f32>(0.0f, 1.0f, 0.0f), vec3<f32>(0.0f, 0.0f, 1.0f))
        store %GLF_live7cols, 2i
        loop [b: %b13, c: %b14] {  # loop_2
          %b13 = block {  # body
            %54:i32 = load %GLF_live7cols
            %55:bool = lt %54, 4i
            if %55 [t: %b15, f: %b16] {  # if_8
              %b15 = block {  # true
                exit_if  # if_8
              }
              %b16 = block {  # false
                exit_loop  # loop_2
              }
            }
            %56:i32 = load %GLF_live7_looplimiter3
            %57:bool = gte %56, 7i
            if %57 [t: %b17] {  # if_9
              %b17 = block {  # true
                exit_loop  # loop_2
              }
            }
            %58:i32 = load %GLF_live7_looplimiter3
            %59:i32 = add %58, 1i
            store %GLF_live7_looplimiter3, %59
            store %GLF_live7rows, 2i
            loop [b: %b18, c: %b19] {  # loop_3
              %b18 = block {  # body
                %60:i32 = load %GLF_live7rows
                %61:bool = lt %60, 4i
                if %61 [t: %b20, f: %b21] {  # if_10
                  %b20 = block {  # true
                    exit_if  # if_10
                  }
                  %b21 = block {  # false
                    exit_loop  # loop_3
                  }
                }
                %62:i32 = load %GLF_live7_looplimiter2
                %63:bool = gte %62, 7i
                if %63 [t: %b22] {  # if_11
                  %b22 = block {  # true
                    exit_loop  # loop_3
                  }
                }
                %64:i32 = load %GLF_live7_looplimiter2
                %65:i32 = add %64, 1i
                store %GLF_live7_looplimiter2, %65
                store %GLF_live7_looplimiter1, 0i
                store %GLF_live7c, 0i
                loop [b: %b23, c: %b24] {  # loop_4
                  %b23 = block {  # body
                    %66:i32 = load %GLF_live7c
                    %67:bool = lt %66, 3i
                    if %67 [t: %b25, f: %b26] {  # if_12
                      %b25 = block {  # true
                        exit_if  # if_12
                      }
                      %b26 = block {  # false
                        exit_loop  # loop_4
                      }
                    }
                    %68:i32 = load %GLF_live7_looplimiter1
                    %69:bool = gte %68, 7i
                    if %69 [t: %b27] {  # if_13
                      %b27 = block {  # true
                        exit_loop  # loop_4
                      }
                    }
                    %70:i32 = load %GLF_live7_looplimiter1
                    %71:i32 = add %70, 1i
                    store %GLF_live7_looplimiter1, %71
                    store %GLF_live7r, 0i
                    loop [b: %b28, c: %b29] {  # loop_5
                      %b28 = block {  # body
                        %72:i32 = load %GLF_live7r
                        %73:bool = lt %72, 2i
                        if %73 [t: %b30, f: %b31] {  # if_14
                          %b30 = block {  # true
                            exit_if  # if_14
                          }
                          %b31 = block {  # false
                            exit_loop  # loop_5
                          }
                        }
                        %74:i32 = load %GLF_live7_looplimiter0
                        %75:bool = gte %74, 7i
                        if %75 [t: %b32] {  # if_15
                          %b32 = block {  # true
                            exit_loop  # loop_5
                          }
                        }
                        %76:i32 = load %GLF_live7_looplimiter0
                        %77:i32 = add %76, 1i
                        store %GLF_live7_looplimiter0, %77
                        %x_59:i32 = load %GLF_live7c
                        %x_60:i32 = load %GLF_live7c
                        %x_61:i32 = load %GLF_live7c
                        %x_62:i32 = load %GLF_live7r
                        %x_63:i32 = load %GLF_live7r
                        %x_64:i32 = load %GLF_live7r
                        %84:bool = gte %x_59, 0i
                        %85:bool = lt %x_60, 3i
                        %86:bool = and %84, %85
                        %87:i32 = select 0i, %x_61, %86
                        %88:ptr<function, vec3<f32>, read_write> = access %GLF_live7m33, %87
                        %89:bool = gte %x_62, 0i
                        %90:bool = lt %x_63, 3i
                        %91:bool = and %89, %90
                        %92:i32 = select 0i, %x_64, %91
                        store_vector_element %88, %92, 1.0f
                        %93:ptr<uniform, vec2<f32>, read> = access %x_25, 0u
                        %94:f32 = load_vector_element %93, 1u
                        %95:bool = gt 0.0f, %94
                        if %95 [t: %b33, f: %b34] {  # if_16
                          %b33 = block {  # true
                            exit_if  # if_16
                          }
                          %b34 = block {  # false
                            %x_65:i32 = load %GLF_live7c
                            %x_66:i32 = load %GLF_live7c
                            %x_67:i32 = load %GLF_live7c
                            %x_68:i32 = load %GLF_live7r
                            %x_69:i32 = load %GLF_live7r
                            %x_70:i32 = load %GLF_live7r
                            %102:bool = gte %x_65, 0i
                            %103:bool = lt %x_66, 4i
                            %104:bool = and %102, %103
                            %105:i32 = select 0i, %x_67, %104
                            %106:ptr<function, vec2<f32>, read_write> = access %GLF_live7m42, %105
                            %107:bool = gte %x_68, 0i
                            %108:bool = lt %x_69, 2i
                            %109:bool = and %107, %108
                            %110:i32 = select 0i, %x_70, %109
                            store_vector_element %106, %110, 1.0f
                            exit_if  # if_16
                          }
                        }
                        continue %b29
                      }
                      %b29 = block {  # continuing
                        %111:i32 = load %GLF_live7r
                        %112:i32 = add %111, 1i
                        store %GLF_live7r, %112
                        next_iteration %b28
                      }
                    }
                    continue %b24
                  }
                  %b24 = block {  # continuing
                    %113:i32 = load %GLF_live7c
                    %114:i32 = add %113, 1i
                    store %GLF_live7c, %114
                    next_iteration %b23
                  }
                }
                continue %b19
              }
              %b19 = block {  # continuing
                %115:i32 = load %GLF_live7rows
                %116:i32 = add %115, 1i
                store %GLF_live7rows, %116
                next_iteration %b18
              }
            }
            continue %b14
          }
          %b14 = block {  # continuing
            %117:i32 = load %GLF_live7cols
            %118:i32 = add %117, 1i
            store %GLF_live7cols, %118
            next_iteration %b13
          }
        }
        store %GLF_live7sum_index, 0i
        store %GLF_live7_looplimiter7, 0i
        store %GLF_live7cols_1, 2i
        loop [b: %b35, c: %b36] {  # loop_6
          %b35 = block {  # body
            %119:i32 = load %GLF_live7cols_1
            %120:bool = lt %119, 4i
            if %120 [t: %b37, f: %b38] {  # if_17
              %b37 = block {  # true
                exit_if  # if_17
              }
              %b38 = block {  # false
                exit_loop  # loop_6
              }
            }
            %121:i32 = load %GLF_live7_looplimiter7
            %122:bool = gte %121, 7i
            if %122 [t: %b39] {  # if_18
              %b39 = block {  # true
                exit_loop  # loop_6
              }
            }
            %123:i32 = load %GLF_live7_looplimiter7
            %124:i32 = add %123, 1i
            store %GLF_live7_looplimiter7, %124
            store %GLF_live7rows_1, 2i
            %x_83:i32 = load %GLF_live7sum_index
            %x_84:i32 = load %GLF_live7sum_index
            %x_85:i32 = load %GLF_live7sum_index
            %128:bool = gte %x_83, 0i
            %129:bool = lt %x_84, 9i
            %130:bool = and %128, %129
            %131:i32 = select 0i, %x_85, %130
            %132:ptr<function, f32, read_write> = access %GLF_live7sums, %131
            store %132, 0.0f
            store %GLF_live7c_1, 0i
            loop [b: %b40, c: %b41] {  # loop_7
              %b40 = block {  # body
                %133:i32 = load %GLF_live7c_1
                %134:bool = lt %133, 1i
                if %134 [t: %b42, f: %b43] {  # if_19
                  %b42 = block {  # true
                    exit_if  # if_19
                  }
                  %b43 = block {  # false
                    exit_loop  # loop_7
                  }
                }
                store %GLF_live7r_1, 0i
                loop [b: %b44, c: %b45] {  # loop_8
                  %b44 = block {  # body
                    %135:i32 = load %GLF_live7r_1
                    %136:i32 = load %GLF_live7rows_1
                    %137:bool = lt %135, %136
                    if %137 [t: %b46, f: %b47] {  # if_20
                      %b46 = block {  # true
                        exit_if  # if_20
                      }
                      %b47 = block {  # false
                        exit_loop  # loop_8
                      }
                    }
                    %138:i32 = load %GLF_live7sum_index
                    %139:i32 = load %GLF_live7sum_index
                    %140:bool = gte %139, 0i
                    %141:i32 = load %GLF_live7sum_index
                    %142:bool = lt %141, 9i
                    %143:bool = and %140, %142
                    %x_310:i32 = select 0i, %138, %143
                    %145:mat3x3<f32> = load %GLF_live7m33
                    %x_312:mat3x3<f32> = transpose %145
                    %147:i32 = load %GLF_live7c_1
                    %148:bool = lt %147, 3i
                    if %148 [t: %b48, f: %b49] {  # if_21
                      %b48 = block {  # true
                        store %x_180, 1i
                        exit_if  # if_21
                      }
                      %b49 = block {  # false
                        %149:ptr<uniform, vec2<f32>, read> = access %x_25, 0u
                        %150:f32 = load_vector_element %149, 0u
                        %151:i32 = convert %150
                        store %x_180, %151
                        exit_if  # if_21
                      }
                    }
                    %x_320:i32 = load %x_180
                    %x_93:i32 = load %GLF_live7r_1
                    store %indexable, %x_312
                    %154:ptr<function, f32, read_write> = access %GLF_live7sums, %x_310
                    %155:ptr<function, f32, read_write> = access %GLF_live7sums, %x_310
                    %156:f32 = load %155
                    %157:ptr<function, vec3<f32>, read_write> = access %indexable, %x_320
                    %158:bool = lt %x_93, 3i
                    %159:i32 = select 0i, 1i, %158
                    %160:f32 = load_vector_element %157, %159
                    %161:f32 = add %156, %160
                    store %154, %161
                    %162:i32 = load %GLF_live7sum_index
                    %163:i32 = load %GLF_live7sum_index
                    %164:bool = gte %163, 0i
                    %165:i32 = load %GLF_live7sum_index
                    %166:bool = lt %165, 9i
                    %167:bool = and %164, %166
                    %x_332:i32 = select 0i, %162, %167
                    %169:ptr<function, f32, read_write> = access %GLF_live7sums, %x_332
                    %170:ptr<function, f32, read_write> = access %GLF_live7sums, %x_332
                    %171:f32 = load %170
                    %172:ptr<function, vec2<f32>, read_write> = access %GLF_live7m42, 1i
                    %173:i32 = load %GLF_live7r_1
                    %174:f32 = load_vector_element %172, %173
                    %175:f32 = add %171, %174
                    store %169, %175
                    continue %b45
                  }
                  %b45 = block {  # continuing
                    %176:i32 = load %GLF_live7r_1
                    %177:i32 = add %176, 1i
                    store %GLF_live7r_1, %177
                    next_iteration %b44
                  }
                }
                continue %b41
              }
              %b41 = block {  # continuing
                %178:i32 = load %GLF_live7c_1
                %179:i32 = add %178, 1i
                store %GLF_live7c_1, %179
                next_iteration %b40
              }
            }
            %180:i32 = load %GLF_live7sum_index
            %181:i32 = add %180, 1i
            store %GLF_live7sum_index, %181
            continue %b36
          }
          %b36 = block {  # continuing
            %182:i32 = load %GLF_live7cols_1
            %183:i32 = add %182, 1i
            store %GLF_live7cols_1, %183
            next_iteration %b35
          }
        }
        continue %b9
      }
      %b9 = block {  # continuing
        %184:i32 = load %GLF_live4i
        %185:i32 = add %184, 1i
        store %GLF_live4i, %185
        next_iteration %b8
      }
    }
    ret vec3<f32>(1.0f)
  }
}
%main_1 = func():void -> %b50 {
  %b50 = block {
    %position_1:ptr<function, vec2<f32>, read_write> = var
    %param:ptr<function, vec2<f32>, read_write> = var
    %param_1:ptr<function, vec2<f32>, read_write> = var
    %i:ptr<function, i32, read_write> = var
    %param_2:ptr<function, vec2<f32>, read_write> = var
    %192:ptr<uniform, vec2<f32>, read> = access %x_25, 0u
    %193:f32 = load_vector_element %192, 0u
    %194:bool = gte %193, 2.0f
    if %194 [t: %b51] {  # if_22
      %b51 = block {  # true
        %195:vec4<f32> = load %gl_FragCoord
        %196:vec2<f32> = swizzle %195, xy
        store %position_1, %196
        %197:vec2<f32> = load %position_1
        store %param, %197
        %x_168:vec3<f32> = call %drawShape_vf2_, %param
        %199:vec2<f32> = load %position_1
        store %param_1, %199
        %x_170:vec3<f32> = call %drawShape_vf2_, %param_1
        store %i, 25i
        loop [b: %b52, c: %b53] {  # loop_9
          %b52 = block {  # body
            %201:i32 = load %i
            %202:bool = gt %201, 0i
            if %202 [t: %b54, f: %b55] {  # if_23
              %b54 = block {  # true
                exit_if  # if_23
              }
              %b55 = block {  # false
                exit_loop  # loop_9
              }
            }
            %203:vec2<f32> = load %position_1
            store %param_2, %203
            %x_178:vec3<f32> = call %drawShape_vf2_, %param_2
            continue %b53
          }
          %b53 = block {  # continuing
            %205:i32 = load %i
            %206:i32 = sub %205, 1i
            store %i, %206
            next_iteration %b52
          }
        }
        exit_if  # if_22
      }
    }
    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out -> %b56 {
  %b56 = block {
    store %gl_FragCoord, %gl_FragCoord_param
    %209:void = call %main_1
    %210:vec4<f32> = load %x_GLF_color
    %211:main_out = construct %210
    ret %211
  }
}

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