SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
  %prevent_dce:ptr<storage, vec3<f32>, read_write> = var @binding_point(2, 0)
}

%step_334303 = func():void {
  $B2: {
    %arg_0:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
    %arg_1:ptr<function, vec3<f32>, read_write> = var, vec3<f32>(1.0f)
    %5:vec3<f32> = load %arg_0
    %6:vec3<f32> = load %arg_1
    %7:vec3<f32> = step %5, %6
    %res:ptr<function, vec3<f32>, read_write> = var, %7
    %9:vec3<f32> = load %res
    store %prevent_dce, %9
    ret
  }
}
%vertex_main = @vertex func():vec4<f32> [@position] {
  $B3: {
    %11:void = call %step_334303
    ret vec4<f32>(0.0f)
  }
}
%fragment_main = @fragment func():void {
  $B4: {
    %13:void = call %step_334303
    ret
  }
}
%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
  $B5: {
    %15:void = call %step_334303
    ret
  }
}

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