SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:1257 internal compiler error: main_out = struct @align(16) {
  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
}

$B1: {  # root
  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void {
  $B2: {
    %c:ptr<function, vec4<f32>, read_write> = var
    %a: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
    store %c, vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f)
    store %a, 0i
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        loop [b: $B5, c: $B6] {  # loop_2
          $B5: {  # body
            %14:i32 = load %a
            %x_46:i32 = let %14
            store_vector_element %c, %x_46, 1.0f
            store %i1, 0i
            loop [b: $B7, c: $B8] {  # loop_3
              $B7: {  # body
                %16:i32 = load %i1
                %17:bool = lt %16, 1i
                if %17 [t: $B9, f: $B10] {  # if_1
                  $B9: {  # true
                    exit_if  # if_1
                  }
                  $B10: {  # false
                    exit_loop  # loop_3
                  }
                }
                store %i2, 0i
                loop [b: $B11, c: $B12] {  # loop_4
                  $B11: {  # body
                    %18:i32 = load %i2
                    %19:bool = lt %18, 1i
                    if %19 [t: $B13, f: $B14] {  # if_2
                      $B13: {  # true
                        exit_if  # if_2
                      }
                      $B14: {  # false
                        exit_loop  # loop_4
                      }
                    }
                    store %i3, 0i
                    loop [b: $B15, c: $B16] {  # loop_5
                      $B15: {  # body
                        %20:i32 = load %i3
                        %21:bool = lt %20, 1i
                        if %21 [t: $B17, f: $B18] {  # if_3
                          $B17: {  # true
                            exit_if  # if_3
                          }
                          $B18: {  # false
                            exit_loop  # loop_5
                          }
                        }
                        store %i4, 0i
                        loop [b: $B19, c: $B20] {  # loop_6
                          $B19: {  # body
                            %22:i32 = load %i4
                            %23:bool = lt %22, 1i
                            if %23 [t: $B21, f: $B22] {  # if_4
                              $B21: {  # true
                                exit_if  # if_4
                              }
                              $B22: {  # false
                                exit_loop  # loop_6
                              }
                            }
                            store %i5, 0i
                            loop [b: $B23, c: $B24] {  # loop_7
                              $B23: {  # body
                                %24:i32 = load %i5
                                %25:bool = lt %24, 1i
                                if %25 [t: $B25, f: $B26] {  # if_5
                                  $B25: {  # true
                                    exit_if  # if_5
                                  }
                                  $B26: {  # false
                                    exit_loop  # loop_7
                                  }
                                }
                                store %i6, 0i
                                loop [b: $B27, c: $B28] {  # loop_8
                                  $B27: {  # body
                                    %26:i32 = load %i6
                                    %27:bool = lt %26, 1i
                                    if %27 [t: $B29, f: $B30] {  # if_6
                                      $B29: {  # true
                                        exit_if  # if_6
                                      }
                                      $B30: {  # false
                                        exit_loop  # loop_8
                                      }
                                    }
                                    store %i7, 0i
                                    loop [b: $B31, c: $B32] {  # loop_9
                                      $B31: {  # body
                                        %28:i32 = load %i7
                                        %29:bool = lt %28, 1i
                                        if %29 [t: $B33, f: $B34] {  # if_7
                                          $B33: {  # true
                                            exit_if  # if_7
                                          }
                                          $B34: {  # false
                                            exit_loop  # loop_9
                                          }
                                        }
                                        store %i8_1, 0i
                                        loop [b: $B35, c: $B36] {  # loop_10
                                          $B35: {  # body
                                            %30:i32 = load %i8_1
                                            %31:bool = lt %30, 17i
                                            if %31 [t: $B37, f: $B38] {  # if_8
                                              $B37: {  # true
                                                exit_if  # if_8
                                              }
                                              $B38: {  # false
                                                exit_loop  # loop_10
                                              }
                                            }
                                            %32:i32 = load %a
                                            %33:i32 = add %32, 1i
                                            store %a, %33
                                            continue  # -> $B36
                                          }
                                          $B36: {  # continuing
                                            %34:i32 = load %i8_1
                                            %35:i32 = add %34, 1i
                                            store %i8_1, %35
                                            next_iteration  # -> $B35
                                          }
                                        }
                                        continue  # -> $B32
                                      }
                                      $B32: {  # continuing
                                        %36:i32 = load %i7
                                        %37:i32 = add %36, 1i
                                        store %i7, %37
                                        next_iteration  # -> $B31
                                      }
                                    }
                                    continue  # -> $B28
                                  }
                                  $B28: {  # continuing
                                    %38:i32 = load %i6
                                    %39:i32 = add %38, 1i
                                    store %i6, %39
                                    next_iteration  # -> $B27
                                  }
                                }
                                continue  # -> $B24
                              }
                              $B24: {  # continuing
                                %40:i32 = load %i5
                                %41:i32 = add %40, 1i
                                store %i5, %41
                                next_iteration  # -> $B23
                              }
                            }
                            continue  # -> $B20
                          }
                          $B20: {  # continuing
                            %42:i32 = load %i4
                            %43:i32 = add %42, 1i
                            store %i4, %43
                            next_iteration  # -> $B19
                          }
                        }
                        continue  # -> $B16
                      }
                      $B16: {  # continuing
                        %44:i32 = load %i3
                        %45:i32 = add %44, 1i
                        store %i3, %45
                        next_iteration  # -> $B15
                      }
                    }
                    continue  # -> $B12
                  }
                  $B12: {  # continuing
                    %46:i32 = load %i2
                    %47:i32 = add %46, 1i
                    store %i2, %47
                    next_iteration  # -> $B11
                  }
                }
                continue  # -> $B8
              }
              $B8: {  # continuing
                %48:i32 = load %i1
                %49:i32 = add %48, 1i
                store %i1, %49
                next_iteration  # -> $B7
              }
            }
            continue  # -> $B6
          }
          $B6: {  # continuing
            %50:f32 = load_vector_element %gl_FragCoord, 0u
            %x_123:f32 = let %50
            %52:bool = lt %x_123, -1.0f
            %53:bool = eq %52, false
            break_if %53  # -> [t: exit_loop loop_2, f: $B5]
          }
        }
        continue  # -> $B4
      }
      $B4: {  # continuing
        %54:f32 = load_vector_element %gl_FragCoord, 1u
        %x_126:f32 = let %54
        %56:bool = lt %x_126, -1.0f
        %57:bool = eq %56, false
        break_if %57  # -> [t: exit_loop loop_1, f: $B3]
      }
    }
    %58:vec4<f32> = load %c
    store %x_GLF_color, %58
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
  $B39: {
    store %gl_FragCoord, %gl_FragCoord_param
    %61:void = call %main_1
    %62:vec4<f32> = load %x_GLF_color
    %63:main_out = construct %62
    ret %63
  }
}

invalid entry point IO struct uses
********************************************************************
*  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.  *
********************************************************************
