SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 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: {  # 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: {
    %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: {  # 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: {  # true
            exit_if  # if_1
          }
          $B6: {  # false
            exit_loop  # loop_1
          }
        }
        store %i1, 0i
        loop [b: $B7, c: $B8] {  # loop_2
          $B7: {  # 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: {  # true
                exit_if  # if_2
              }
              $B10: {  # false
                exit_loop  # loop_2
              }
            }
            store %i2, 0i
            loop [b: $B11, c: $B12] {  # loop_3
              $B11: {  # 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: {  # true
                    exit_if  # if_3
                  }
                  $B14: {  # false
                    exit_loop  # loop_3
                  }
                }
                store %i3, 0i
                loop [b: $B15, c: $B16] {  # loop_4
                  $B15: {  # 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: {  # true
                        exit_if  # if_4
                      }
                      $B18: {  # false
                        exit_loop  # loop_4
                      }
                    }
                    store %i4, 0i
                    loop [b: $B19, c: $B20] {  # loop_5
                      $B19: {  # 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: {  # true
                            exit_if  # if_5
                          }
                          $B22: {  # false
                            exit_loop  # loop_5
                          }
                        }
                        store %i5, 0i
                        loop [b: $B23, c: $B24] {  # loop_6
                          $B23: {  # 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: {  # true
                                exit_if  # if_6
                              }
                              $B26: {  # false
                                exit_loop  # loop_6
                              }
                            }
                            loop [b: $B27] {  # loop_7
                              $B27: {  # body
                                %40:ptr<uniform, i32, read> = access %x_7, 0u
                                %41:i32 = load %40
                                %42:bool = gt %41, 0i
                                if %42 [t: $B28, f: $B29] {  # if_7
                                  $B28: {  # true
                                    exit_if  # if_7
                                  }
                                  $B29: {  # false
                                    exit_loop  # loop_7
                                  }
                                }
                                store %i6, 0i
                                loop [b: $B30, c: $B31] {  # loop_8
                                  $B30: {  # 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: $B32, f: $B33] {  # if_8
                                      $B32: {  # true
                                        exit_if  # if_8
                                      }
                                      $B33: {  # false
                                        exit_loop  # loop_8
                                      }
                                    }
                                    store %i7, 0i
                                    loop [b: $B34, c: $B35] {  # loop_9
                                      $B34: {  # 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: $B36, f: $B37] {  # if_9
                                          $B36: {  # true
                                            exit_if  # if_9
                                          }
                                          $B37: {  # false
                                            exit_loop  # loop_9
                                          }
                                        }
                                        store %i8_1, 0i
                                        loop [b: $B38, c: $B39] {  # loop_10
                                          $B38: {  # 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: $B40, f: $B41] {  # if_10
                                              $B40: {  # true
                                                exit_if  # if_10
                                              }
                                              $B41: {  # false
                                                exit_loop  # loop_10
                                              }
                                            }
                                            store %i9, 0i
                                            loop [b: $B42, c: $B43] {  # loop_11
                                              $B42: {  # 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: $B44, f: $B45] {  # if_11
                                                  $B44: {  # true
                                                    exit_if  # if_11
                                                  }
                                                  $B45: {  # false
                                                    exit_loop  # loop_11
                                                  }
                                                }
                                                %59:i32 = load %a
                                                %60:i32 = add %59, 1i
                                                store %a, %60
                                                continue  # -> $B43
                                              }
                                              $B43: {  # continuing
                                                %61:i32 = load %i9
                                                %62:i32 = add %61, 1i
                                                store %i9, %62
                                                next_iteration  # -> $B42
                                              }
                                            }
                                            continue  # -> $B39
                                          }
                                          $B39: {  # continuing
                                            %63:i32 = load %i8_1
                                            %64:i32 = add %63, 1i
                                            store %i8_1, %64
                                            next_iteration  # -> $B38
                                          }
                                        }
                                        continue  # -> $B35
                                      }
                                      $B35: {  # continuing
                                        %65:i32 = load %i7
                                        %66:i32 = add %65, 1i
                                        store %i7, %66
                                        next_iteration  # -> $B34
                                      }
                                    }
                                    continue  # -> $B31
                                  }
                                  $B31: {  # continuing
                                    %67:i32 = load %i6
                                    %68:i32 = add %67, 1i
                                    store %i6, %68
                                    next_iteration  # -> $B30
                                  }
                                }
                                exit_loop  # loop_7
                              }
                            }
                            continue  # -> $B24
                          }
                          $B24: {  # continuing
                            %69:i32 = load %i5
                            %70:i32 = add %69, 1i
                            store %i5, %70
                            next_iteration  # -> $B23
                          }
                        }
                        continue  # -> $B20
                      }
                      $B20: {  # continuing
                        %71:i32 = load %i4
                        %72:i32 = add %71, 1i
                        store %i4, %72
                        next_iteration  # -> $B19
                      }
                    }
                    continue  # -> $B16
                  }
                  $B16: {  # continuing
                    %73:i32 = load %i3
                    %74:i32 = add %73, 1i
                    store %i3, %74
                    next_iteration  # -> $B15
                  }
                }
                continue  # -> $B12
              }
              $B12: {  # continuing
                %75:i32 = load %i2
                %76:i32 = add %75, 1i
                store %i2, %76
                next_iteration  # -> $B11
              }
            }
            continue  # -> $B8
          }
          $B8: {  # continuing
            %77:i32 = load %i1
            %78:i32 = add %77, 1i
            store %i1, %78
            next_iteration  # -> $B7
          }
        }
        continue  # -> $B4
      }
      $B4: {  # 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: $B46, f: $B47] {  # if_12
      $B46: {  # true
        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
        exit_if  # if_12
      }
      $B47: {  # false
        store %x_GLF_color, vec4<f32>(0.0f)
        exit_if  # if_12
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B48: {
    %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.  *
********************************************************************
