SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: buf0 = struct @align(4) {
  one:i32 @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_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void -> %b2 {
  %b2 = block {
    %a:ptr<function, i32, read_write> = var
    %i0:ptr<function, i32, read_write> = var
    %i1:ptr<function, i32, read_write> = var
    %i2:ptr<function, i32, read_write> = var
    %i3:ptr<function, i32, read_write> = var
    %i4:ptr<function, i32, read_write> = var
    %i5:ptr<function, i32, read_write> = var
    %i6:ptr<function, i32, read_write> = var
    %i7:ptr<function, i32, read_write> = var
    %i8_1:ptr<function, i32, read_write> = var
    %i9:ptr<function, i32, read_write> = var
    store %a, 0i
    store %i0, 0i
    loop [b: %b3, c: %b4] {  # loop_1
      %b3 = block {  # body
        %15:i32 = load %i0
        %16:ptr<uniform, i32, read> = access %x_7, 0u
        %17:i32 = load %16
        %18:bool = lt %15, %17
        if %18 [t: %b5, f: %b6] {  # if_1
          %b5 = block {  # true
            exit_if  # if_1
          }
          %b6 = block {  # false
            exit_loop  # loop_1
          }
        }
        store %i1, 0i
        loop [b: %b7, c: %b8] {  # loop_2
          %b7 = block {  # body
            %19:i32 = load %i1
            %20:ptr<uniform, i32, read> = access %x_7, 0u
            %21:i32 = load %20
            %22:bool = lt %19, %21
            if %22 [t: %b9, f: %b10] {  # if_2
              %b9 = block {  # true
                exit_if  # if_2
              }
              %b10 = block {  # false
                exit_loop  # loop_2
              }
            }
            store %i2, 0i
            loop [b: %b11, c: %b12] {  # loop_3
              %b11 = block {  # body
                %23:i32 = load %i2
                %24:ptr<uniform, i32, read> = access %x_7, 0u
                %25:i32 = load %24
                %26:bool = lt %23, %25
                if %26 [t: %b13, f: %b14] {  # if_3
                  %b13 = block {  # true
                    exit_if  # if_3
                  }
                  %b14 = block {  # false
                    exit_loop  # loop_3
                  }
                }
                store %i3, 0i
                loop [b: %b15, c: %b16] {  # loop_4
                  %b15 = block {  # body
                    %27:i32 = load %i3
                    %28:ptr<uniform, i32, read> = access %x_7, 0u
                    %29:i32 = load %28
                    %30:i32 = add %29, 2i
                    %31:bool = lt %27, %30
                    if %31 [t: %b17, f: %b18] {  # if_4
                      %b17 = block {  # true
                        exit_if  # if_4
                      }
                      %b18 = block {  # false
                        exit_loop  # loop_4
                      }
                    }
                    store %i4, 0i
                    loop [b: %b19, c: %b20] {  # loop_5
                      %b19 = block {  # body
                        %32:i32 = load %i4
                        %33:ptr<uniform, i32, read> = access %x_7, 0u
                        %34:i32 = load %33
                        %35:bool = lt %32, %34
                        if %35 [t: %b21, f: %b22] {  # if_5
                          %b21 = block {  # true
                            exit_if  # if_5
                          }
                          %b22 = block {  # false
                            exit_loop  # loop_5
                          }
                        }
                        store %i5, 0i
                        loop [b: %b23, c: %b24] {  # loop_6
                          %b23 = block {  # body
                            %36:i32 = load %i5
                            %37:ptr<uniform, i32, read> = access %x_7, 0u
                            %38:i32 = load %37
                            %39:bool = lt %36, %38
                            if %39 [t: %b25, f: %b26] {  # if_6
                              %b25 = block {  # true
                                exit_if  # if_6
                              }
                              %b26 = block {  # false
                                exit_loop  # loop_6
                              }
                            }
                            loop [b: %b27, c: %b28] {  # loop_7
                              %b27 = block {  # body
                                %40:ptr<uniform, i32, read> = access %x_7, 0u
                                %41:i32 = load %40
                                %42:bool = gt %41, 0i
                                if %42 [t: %b29, f: %b30] {  # if_7
                                  %b29 = block {  # true
                                    exit_if  # if_7
                                  }
                                  %b30 = block {  # false
                                    exit_loop  # loop_7
                                  }
                                }
                                store %i6, 0i
                                loop [b: %b31, c: %b32] {  # loop_8
                                  %b31 = block {  # body
                                    %43:i32 = load %i6
                                    %44:ptr<uniform, i32, read> = access %x_7, 0u
                                    %45:i32 = load %44
                                    %46:bool = lt %43, %45
                                    if %46 [t: %b33, f: %b34] {  # if_8
                                      %b33 = block {  # true
                                        exit_if  # if_8
                                      }
                                      %b34 = block {  # false
                                        exit_loop  # loop_8
                                      }
                                    }
                                    store %i7, 0i
                                    loop [b: %b35, c: %b36] {  # loop_9
                                      %b35 = block {  # body
                                        %47:i32 = load %i7
                                        %48:ptr<uniform, i32, read> = access %x_7, 0u
                                        %49:i32 = load %48
                                        %50:bool = lt %47, %49
                                        if %50 [t: %b37, f: %b38] {  # if_9
                                          %b37 = block {  # true
                                            exit_if  # if_9
                                          }
                                          %b38 = block {  # false
                                            exit_loop  # loop_9
                                          }
                                        }
                                        store %i8_1, 0i
                                        loop [b: %b39, c: %b40] {  # loop_10
                                          %b39 = block {  # body
                                            %51:i32 = load %i8_1
                                            %52:ptr<uniform, i32, read> = access %x_7, 0u
                                            %53:i32 = load %52
                                            %54:bool = lt %51, %53
                                            if %54 [t: %b41, f: %b42] {  # if_10
                                              %b41 = block {  # true
                                                exit_if  # if_10
                                              }
                                              %b42 = block {  # false
                                                exit_loop  # loop_10
                                              }
                                            }
                                            store %i9, 0i
                                            loop [b: %b43, c: %b44] {  # loop_11
                                              %b43 = block {  # body
                                                %55:i32 = load %i9
                                                %56:ptr<uniform, i32, read> = access %x_7, 0u
                                                %57:i32 = load %56
                                                %58:bool = lt %55, %57
                                                if %58 [t: %b45, f: %b46] {  # if_11
                                                  %b45 = block {  # true
                                                    exit_if  # if_11
                                                  }
                                                  %b46 = block {  # false
                                                    exit_loop  # loop_11
                                                  }
                                                }
                                                %59:i32 = load %a
                                                %60:i32 = add %59, 1i
                                                store %a, %60
                                                continue %b44
                                              }
                                              %b44 = block {  # continuing
                                                %61:i32 = load %i9
                                                %62:i32 = add %61, 1i
                                                store %i9, %62
                                                next_iteration %b43
                                              }
                                            }
                                            continue %b40
                                          }
                                          %b40 = block {  # continuing
                                            %63:i32 = load %i8_1
                                            %64:i32 = add %63, 1i
                                            store %i8_1, %64
                                            next_iteration %b39
                                          }
                                        }
                                        continue %b36
                                      }
                                      %b36 = block {  # continuing
                                        %65:i32 = load %i7
                                        %66:i32 = add %65, 1i
                                        store %i7, %66
                                        next_iteration %b35
                                      }
                                    }
                                    continue %b32
                                  }
                                  %b32 = block {  # continuing
                                    %67:i32 = load %i6
                                    %68:i32 = add %67, 1i
                                    store %i6, %68
                                    next_iteration %b31
                                  }
                                }
                                exit_loop  # loop_7
                              }
                              %b28 = block {  # continuing
                                next_iteration %b27
                              }
                            }
                            continue %b24
                          }
                          %b24 = block {  # continuing
                            %69:i32 = load %i5
                            %70:i32 = add %69, 1i
                            store %i5, %70
                            next_iteration %b23
                          }
                        }
                        continue %b20
                      }
                      %b20 = block {  # continuing
                        %71:i32 = load %i4
                        %72:i32 = add %71, 1i
                        store %i4, %72
                        next_iteration %b19
                      }
                    }
                    continue %b16
                  }
                  %b16 = block {  # continuing
                    %73:i32 = load %i3
                    %74:i32 = add %73, 1i
                    store %i3, %74
                    next_iteration %b15
                  }
                }
                continue %b12
              }
              %b12 = block {  # continuing
                %75:i32 = load %i2
                %76:i32 = add %75, 1i
                store %i2, %76
                next_iteration %b11
              }
            }
            continue %b8
          }
          %b8 = block {  # continuing
            %77:i32 = load %i1
            %78:i32 = add %77, 1i
            store %i1, %78
            next_iteration %b7
          }
        }
        continue %b4
      }
      %b4 = block {  # continuing
        %79:i32 = load %i0
        %80:i32 = add %79, 1i
        store %i0, %80
        next_iteration %b3
      }
    }
    %81:i32 = load %a
    %82:bool = eq %81, 3i
    if %82 [t: %b47, f: %b48] {  # if_12
      %b47 = block {  # true
        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
        exit_if  # if_12
      }
      %b48 = block {  # false
        store %x_GLF_color, vec4<f32>(0.0f)
        exit_if  # if_12
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b49 {
  %b49 = block {
    %84:void = call %main_1
    %85:vec4<f32> = load %x_GLF_color
    %86:main_out = construct %85
    ret %86
  }
}

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