Skip to content

Instantly share code, notes, and snippets.

@kubkon
Created March 15, 2023 18:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kubkon/139d11447ba5f4d311561748c37537cc to your computer and use it in GitHub Desktop.
Save kubkon/139d11447ba5f4d311561748c37537cc to your computer and use it in GitHub Desktop.
Stage3 vs stage4 on x86_64-macos
; Function Attrs: nounwind
define internal fastcc void @Sema.fieldPtr(ptr noalias nonnull writeonly %0, ptr nonnull align 8 %1, ptr nonnull align 8 %2, ptr nonnull readonly align 4 %3, i32 %4, ptr nonnull readonly align 1 %5, i64 %6, ptr nonnull readonly align 4 %7, i1 %8) unnamed_addr #1 {
Entry:
%9 = alloca %Air, align 8
%10 = alloca { { ptr, i64 }, i16, [6 x i8] }, align 8
%.sroa.7.i = alloca [3 x i8], align 1
%11 = alloca %mem.Allocator, align 8
%12 = alloca { ptr, i16, [6 x i8] }, align 8
%13 = alloca %heap.arena_allocator.ArenaAllocator, align 8
%14 = alloca %heap.arena_allocator.ArenaAllocator, align 8
%15 = alloca %heap.arena_allocator.ArenaAllocator, align 8
%16 = alloca { ptr, i16, [6 x i8] }, align 8
%17 = alloca %heap.arena_allocator.ArenaAllocator, align 8
%18 = alloca { i16, i5, [1 x i8] }, align 2
%19 = alloca { ptr, i16, [6 x i8] }, align 8
%20 = alloca { i16, i5, [1 x i8] }, align 2
%21 = alloca %type.Type, align 8
%22 = alloca %29, align 8
%23 = alloca { i32, i16, [2 x i8] }, align 8
%24 = alloca { i32, i16, [2 x i8] }, align 4
%25 = alloca { i32, i16, [2 x i8] }, align 8
%26 = alloca { i32, i16, [2 x i8] }, align 4
%27 = alloca %29, align 8
%28 = alloca { { i32, i8, [3 x i8] }, i16, [2 x i8] }, align 4
%29 = alloca { i32, i16, [2 x i8] }, align 8
%30 = alloca { i32, i16, [2 x i8] }, align 4
%31 = alloca { %value.Value, i16, [6 x i8] }, align 8
%32 = alloca %type.Type, align 8
%33 = alloca { %type.Type, i16, [6 x i8] }, align 8
%34 = alloca %mem.Allocator, align 8
%35 = alloca %type.Type, align 8
%36 = alloca %Sema.Block.WipAnonDecl, align 8
%37 = alloca { i64, i8, [7 x i8] }, align 8
%38 = alloca { { i32, i8, [3 x i8] }, i16, [2 x i8] }, align 4
%39 = alloca { i32, i16, [2 x i8] }, align 8
%40 = alloca { i32, i16, [2 x i8] }, align 4
%41 = alloca { %value.Value, i16, [6 x i8] }, align 8
%42 = alloca %type.Type, align 8
%43 = alloca { %type.Type, i16, [6 x i8] }, align 8
%44 = alloca %mem.Allocator, align 8
%45 = alloca %type.Type, align 8
%46 = alloca %Sema.Block.WipAnonDecl, align 8
%47 = alloca { i64, i8, [7 x i8] }, align 8
%48 = alloca { %type.Type, i16, [6 x i8] }, align 8
%49 = alloca { { i32, i8, [3 x i8] }, i16, [2 x i8] }, align 4
%50 = alloca { i32, i16, [2 x i8] }, align 8
%51 = alloca { i32, i16, [2 x i8] }, align 4
%52 = alloca { %value.Value, i16, [6 x i8] }, align 8
%53 = alloca { %type.Type, i16, [6 x i8] }, align 8
%54 = alloca { %type.Type, i16, [6 x i8] }, align 8
%55 = alloca %mem.Allocator, align 8
%56 = alloca %type.Type, align 8
%57 = alloca %Sema.Block.WipAnonDecl, align 8
%58 = alloca { %"hash_map.HashMapUnmanaged([]const u8,u32,hash_map.StringContext,80).KV", i16, [6 x i8] }, align 8
%59 = alloca %97, align 8
%60 = alloca { %"array_hash_map.ArrayHashMapUnmanaged([]const u8,void,array_hash_map.StringContext,true).Entry", i8, [7 x i8] }, align 8
%61 = alloca %type.Type, align 8
%62 = alloca %type.Type.Payload.Bits, align 8
%63 = alloca { { %value.Value, i8, [7 x i8] }, i16, [6 x i8] }, align 8
%64 = alloca { i32, i16, [2 x i8] }, align 4
%65 = alloca { i32, i16, [2 x i8] }, align 4
%66 = alloca { %value.Value, i16, [6 x i8] }, align 8
%67 = alloca %97, align 8
%68 = alloca { i32, i16, [2 x i8] }, align 8
%69 = alloca { i32, i16, [2 x i8] }, align 8
%70 = alloca { %value.Value, i16, [6 x i8] }, align 8
%71 = alloca { { %value.Value, i8, [7 x i8] }, i16, [6 x i8] }, align 8
%72 = alloca { %type.Type, i16, [6 x i8] }, align 8
%73 = alloca %type.Type.Payload.Pointer.Data, align 8
%74 = alloca %mem.Allocator, align 8
%75 = alloca { i32, i16, [2 x i8] }, align 8
%76 = alloca { i32, i16, [2 x i8] }, align 8
%77 = alloca { %value.Value, i16, [6 x i8] }, align 8
%78 = alloca { { %value.Value, i8, [7 x i8] }, i16, [6 x i8] }, align 8
%79 = alloca { %type.Type, i16, [6 x i8] }, align 8
%80 = alloca %type.Type.Payload.Pointer.Data, align 8
%81 = alloca %mem.Allocator, align 8
%82 = alloca %type.Type, align 8
%83 = alloca { i32, i16, [2 x i8] }, align 4
%84 = alloca %97, align 8
%85 = alloca { i32, i16, [2 x i8] }, align 8
%86 = alloca { i32, i16, [2 x i8] }, align 4
%87 = alloca { %value.Value, i16, [6 x i8] }, align 8
%88 = alloca %Sema.Block.WipAnonDecl, align 8
%89 = alloca %type.Type, align 8
%90 = alloca %29, align 8
%91 = alloca %type.Type, align 8
%.sroa.1.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %1, i64 120
%.sroa.1.0.copyload.i.i = load ptr, ptr %.sroa.1.0..sroa_idx.i.i, align 8, !noalias !47228
%.sroa.2.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %1, i64 128
%.sroa.2.0.copyload.i.i = load i64, ptr %.sroa.2.0..sroa_idx.i.i, align 8, !noalias !47228
%.sroa.3.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %1, i64 136
%.sroa.3.0.copyload.i.i = load i64, ptr %.sroa.3.0..sroa_idx.i.i, align 8, !noalias !47228
%92 = getelementptr inbounds %Sema, ptr %1, i64 0, i32 6
%.unpack.i.i = load ptr, ptr %92, align 8, !noalias !47228
%.elt11.i.i = getelementptr inbounds %Sema, ptr %1, i64 0, i32 6, i32 0, i32 1
%.unpack12.i.i = load i64, ptr %.elt11.i.i, align 8, !noalias !47228
%93 = getelementptr inbounds %Sema, ptr %1, i64 0, i32 7
%.unpack15.i.i = load ptr, ptr %93, align 8, !noalias !47228
%.elt16.i.i = getelementptr inbounds %Sema, ptr %1, i64 0, i32 7, i32 0, i32 1
%.unpack17.i.i = load i64, ptr %.elt16.i.i, align 8, !noalias !47228
call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11), !noalias !47233
call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %9), !noalias !47233
%94 = icmp ult i32 %4, 76
br i1 %94, label %Then.i.i, label %Block.i.i
Then.i.i: ; preds = %Entry
%95 = zext i32 %4 to i64
%96 = getelementptr inbounds [76 x %TypedValue], ptr @2772, i64 0, i64 %95
br label %Sema.typeOf.exit
Block.i.i: ; preds = %Entry
%97 = shl nuw i64 %.sroa.3.0.copyload.i.i, 3
%98 = getelementptr inbounds i8, ptr %.sroa.1.0.copyload.i.i, i64 %97
store ptr %98, ptr %9, align 8, !noalias !47234
%.sroa.22.0..sroa_idx.i = getelementptr inbounds i8, ptr %9, i64 8
store ptr %.sroa.1.0.copyload.i.i, ptr %.sroa.22.0..sroa_idx.i, align 8, !noalias !47234
%.sroa.33.0..sroa_idx.i = getelementptr inbounds i8, ptr %9, i64 16
store i64 %.sroa.2.0.copyload.i.i, ptr %.sroa.33.0..sroa_idx.i, align 8, !noalias !47234
%.sroa.44.0..sroa_idx.i = getelementptr inbounds i8, ptr %9, i64 24
store i64 %.sroa.3.0.copyload.i.i, ptr %.sroa.44.0..sroa_idx.i, align 8, !noalias !47234
%.sroa.55.0..sroa_idx.i = getelementptr inbounds i8, ptr %9, i64 32
store ptr %.unpack.i.i, ptr %.sroa.55.0..sroa_idx.i, align 8, !noalias !47234
%.sroa.66.0..sroa_idx.i = getelementptr inbounds i8, ptr %9, i64 40
store i64 %.unpack12.i.i, ptr %.sroa.66.0..sroa_idx.i, align 8, !noalias !47234
%.sroa.77.0..sroa_idx.i = getelementptr inbounds i8, ptr %9, i64 48
store ptr %.unpack15.i.i, ptr %.sroa.77.0..sroa_idx.i, align 8, !noalias !47234
%.sroa.88.0..sroa_idx.i = getelementptr inbounds i8, ptr %9, i64 56
store i64 %.unpack17.i.i, ptr %.sroa.88.0..sroa_idx.i, align 8, !noalias !47234
%99 = add i32 %4, -76
call fastcc void @Air.typeOfIndex(ptr noalias %11, ptr %9, i32 %99), !noalias !47234
br label %Sema.typeOf.exit
Sema.typeOf.exit: ; preds = %Block.i.i, %Then.i.i
%storemerge.in.i.i = phi ptr [ %96, %Then.i.i ], [ %11, %Block.i.i ]
%storemerge.i.i = load i64, ptr %storemerge.in.i.i, align 8, !noalias !47234
call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11), !noalias !47233
call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %9), !noalias !47233
call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9)
call fastcc void @type.Type.zigTypeTagOrPoison(ptr noalias %9, i64 %storemerge.i.i)
%100 = load i16, ptr %9, align 2
%101 = icmp eq i16 %100, 0
br i1 %101, label %type.Type.zigTypeTag.exit, label %Else.i
Else.i: ; preds = %Sema.typeOf.exit
tail call fastcc void @builtin.default_panic(ptr @builtin.panic_messages.unwrap_error__anon_7066, i64 23)
unreachable
type.Type.zigTypeTag.exit: ; preds = %Sema.typeOf.exit
%102 = getelementptr inbounds { i16, i5, [1 x i8] }, ptr %9, i64 0, i32 1
%103 = load i5, ptr %102, align 2
call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9)
%cond = icmp eq i5 %103, 6
br i1 %cond, label %Case, label %Else
common.ret: ; preds = %Sema.fail__anon_135183.exit, %Block145, %TryRet143, %Block139, %TryRet137, %Block133, %Then130, %TryRet128, %TryCont124, %TryRet123, %TryRet121, %TryRet119, %Else117, %Then112, %TryRet110, %Block106, %TryCont104, %TryRet103, %TryRet101, %TryRet99, %TryRet93, %Then89, %TryRet87, %TryCont83, %TryRet82, %TryRet80, %TryRet77, %TryRet75, %TryRet70, %Block68, %Else62, %TryRet56, %TryRet52, %TryRet50, %TryCont47, %TryRet46, %TryCont44, %TryRet43, %TryRet39, %TryRet37, %Sema.fail__anon_135111.exit, %TryCont34, %TryRet33, %TryCont31, %TryRet30, %TryRet26, %TryRet24, %TryRet22, %TryRet14, %TryCont8, %TryRet7, %Sema.Block.WipAnonDecl.deinit.exit, %Sema.fail__anon_135069.exit, %Sema.fail__anon_135062.exit
ret void
Else: ; preds = %type.Type.zigTypeTag.exit
%104 = load ptr, ptr %1, align 8
store i64 %storemerge.i.i, ptr %90, align 8
%.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %90, i64 8
store ptr %104, ptr %.sroa.2.0..sroa_idx, align 8
call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9)
%105 = getelementptr i8, ptr %2, i64 160
%.val631 = load i32, ptr %105, align 8
call fastcc void @Sema.errMsg__anon_203419(ptr noalias %9, ptr %1, i32 %.val631, ptr %3, ptr %90)
%106 = getelementptr inbounds { ptr, i16, [6 x i8] }, ptr %9, i64 0, i32 1
%107 = load i16, ptr %106, align 8
%.not.i = icmp eq i16 %107, 0
br i1 %.not.i, label %TryCont.i, label %Sema.fail__anon_135062.exit
TryCont.i: ; preds = %Else
%108 = load ptr, ptr %9, align 8
%109 = tail call fastcc i16 @Sema.failWithOwnedErrorMsg(ptr %1, ptr %108)
br label %Sema.fail__anon_135062.exit
Sema.fail__anon_135062.exit: ; preds = %TryCont.i, %Else
%common.ret.op.i = phi i16 [ %109, %TryCont.i ], [ %107, %Else ]
call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9)
%.sroa.1.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %common.ret.op.i, ptr %.sroa.1.0..sroa_idx, align 4
br label %common.ret
Case: ; preds = %type.Type.zigTypeTag.exit
call fastcc void @type.Type.childType(ptr noalias %91, i64 %storemerge.i.i)
%110 = load i64, ptr %91, align 8
%111 = icmp ult i64 %110, 68
br i1 %111, label %type.Type.tag.exit.i, label %Else.i.i
Else.i.i: ; preds = %Case
%112 = inttoptr i64 %110 to ptr
%113 = load i64, ptr %112, align 8
br label %type.Type.tag.exit.i
type.Type.tag.exit.i: ; preds = %Else.i.i, %Case
%common.ret.op.i.i = phi i64 [ %113, %Else.i.i ], [ %110, %Case ]
switch i64 %common.ret.op.i.i, label %Block2 [
i64 75, label %type.Type.isSinglePointer.exit
i64 76, label %Then
i64 77, label %Then
i64 58, label %Then
i64 66, label %Then
i64 65, label %Then
]
type.Type.isSinglePointer.exit: ; preds = %type.Type.tag.exit.i
%114 = inttoptr i64 %110 to ptr
%115 = load i64, ptr %114, align 8
%116 = icmp eq i64 %115, 75
%spec.select.i.i = select i1 %116, ptr %114, ptr null
%117 = getelementptr inbounds %type.Type.Payload.Pointer, ptr %spec.select.i.i, i64 0, i32 1, i32 10
%118 = load i2, ptr %117, align 1
%119 = icmp eq i2 %118, 0
br i1 %119, label %Then, label %Block2
Then: ; preds = %type.Type.isSinglePointer.exit, %type.Type.tag.exit.i, %type.Type.tag.exit.i, %type.Type.tag.exit.i, %type.Type.tag.exit.i, %type.Type.tag.exit.i
call fastcc void @type.Type.childType(ptr noalias %89, i64 %110)
%.pre = load i64, ptr %89, align 8
br label %Block2
Block2: ; preds = %Then, %type.Type.isSinglePointer.exit, %type.Type.tag.exit.i
%120 = phi i64 [ %.pre, %Then ], [ %110, %type.Type.isSinglePointer.exit ], [ %110, %type.Type.tag.exit.i ]
%.0.i727 = phi i1 [ true, %Then ], [ false, %type.Type.isSinglePointer.exit ], [ false, %type.Type.tag.exit.i ]
%121 = phi ptr [ %89, %Then ], [ %91, %type.Type.isSinglePointer.exit ], [ %91, %type.Type.tag.exit.i ]
call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9)
call fastcc void @type.Type.zigTypeTagOrPoison(ptr noalias %9, i64 %120)
%122 = load i16, ptr %9, align 2
%123 = icmp eq i16 %122, 0
br i1 %123, label %type.Type.zigTypeTag.exit484, label %Else.i483
Else.i483: ; preds = %Block2
tail call fastcc void @builtin.default_panic(ptr @builtin.panic_messages.unwrap_error__anon_7066, i64 23)
unreachable
type.Type.zigTypeTag.exit484: ; preds = %Block2
%124 = getelementptr inbounds { i16, i5, [1 x i8] }, ptr %9, i64 0, i32 1
%125 = load i5, ptr %124, align 2
call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9)
%126 = zext i5 %125 to i32
switch i32 %126, label %Block146 [
i32 7, label %Case4
i32 6, label %Case9
i32 0, label %Case49
i32 8, label %Case134
i32 17, label %Case140
]
Case4: ; preds = %type.Type.zigTypeTag.exit484
%.not.i485 = icmp eq i64 %6, 3
br i1 %.not.i485, label %Block.i, label %Else6
Block.i: ; preds = %Case4
%.not749 = icmp eq ptr %5, @958
br i1 %.not749, label %Then5, label %Then4.i.preheader
Then4.i.preheader: ; preds = %Block.i
%127 = load i8, ptr %5, align 1
%.not14.i = icmp eq i8 %127, 108
br i1 %.not14.i, label %Loop.i, label %Else6
Loop.i: ; preds = %Then4.i.preheader
%128 = getelementptr inbounds i8, ptr %5, i64 1
%129 = load i8, ptr %128, align 1
%.not14.i.1 = icmp eq i8 %129, 101
br i1 %.not14.i.1, label %Loop.i.1, label %Else6
Loop.i.1: ; preds = %Loop.i
%130 = getelementptr inbounds i8, ptr %5, i64 2
%131 = load i8, ptr %130, align 1
%.not14.i.2 = icmp eq i8 %131, 110
br i1 %.not14.i.2, label %Then5, label %Else6
Then5: ; preds = %Loop.i.1, %Block.i
%132 = getelementptr inbounds %Sema.Block, ptr %2, i64 0, i32 1
%133 = load ptr, ptr %132, align 8, !noalias !47237
%134 = getelementptr inbounds %Sema, ptr %133, i64 0, i32 1
call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17)
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %134, i64 16, i1 false), !noalias !47240
%.16..16..16..16..16..16..16..16..16..16..sroa_idx = getelementptr inbounds i8, ptr %17, i64 16
call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.16..16..16..16..16..16..16..16..16..16..sroa_idx, i8 0, i64 16, i1 false), !noalias !47240
%.sroa.2647.0..sroa_idx = getelementptr inbounds i8, ptr %88, i64 8
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.2647.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %17, i64 32, i1 false)
call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17)
store ptr %2, ptr %88, align 8
%.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %88, i64 40
store i1 false, ptr %.sroa.3.0..sroa_idx, align 8
%135 = tail call fastcc i64 @type.Type.arrayLen(i64 %120)
tail call void @llvm.experimental.noalias.scope.decl(metadata !47243)
%136 = tail call fastcc ptr @llvm.returnaddress(i32 0)
%137 = ptrtoint ptr %136 to i64
%138 = call fastcc ptr @heap.arena_allocator.ArenaAllocator.alloc(ptr nonnull align 1 %.sroa.2647.0..sroa_idx, i64 16, i8 3, i64 %137) #37, !noalias !47246
%.not.i.i.i = icmp eq ptr %138, null
br i1 %.not.i.i.i, label %TryRet, label %TryCont
Else6: ; preds = %Loop.i.1, %Loop.i, %Then4.i.preheader, %Case4
%139 = load ptr, ptr %1, align 8
store ptr %5, ptr %84, align 8
%.fca.1.gep = getelementptr inbounds { ptr, i64 }, ptr %84, i64 0, i32 1
store i64 %6, ptr %.fca.1.gep, align 8
%140 = getelementptr inbounds %97, ptr %84, i64 0, i32 1
store i64 %110, ptr %140, align 8
%.sroa.2651.0..sroa_idx = getelementptr inbounds %97, ptr %84, i64 0, i32 1, i32 0, i32 1
store ptr %139, ptr %.sroa.2651.0..sroa_idx, align 8
call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9)
%141 = getelementptr i8, ptr %2, i64 160
%.val627 = load i32, ptr %141, align 8
call fastcc void @Sema.errMsg__anon_203423(ptr noalias %9, ptr %1, i32 %.val627, ptr %7, ptr %84)
%142 = getelementptr inbounds { ptr, i16, [6 x i8] }, ptr %9, i64 0, i32 1
%143 = load i16, ptr %142, align 8
%.not.i489 = icmp eq i16 %143, 0
br i1 %.not.i489, label %TryCont.i491, label %Sema.fail__anon_135069.exit
TryCont.i491: ; preds = %Else6
%144 = load ptr, ptr %9, align 8
%145 = tail call fastcc i16 @Sema.failWithOwnedErrorMsg(ptr %1, ptr %144)
br label %Sema.fail__anon_135069.exit
Sema.fail__anon_135069.exit: ; preds = %TryCont.i491, %Else6
%common.ret.op.i490 = phi i16 [ %145, %TryCont.i491 ], [ %143, %Else6 ]
call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9)
%.sroa.1158.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %common.ret.op.i490, ptr %.sroa.1158.0..sroa_idx, align 4
br label %common.ret
TryRet: ; preds = %Then5
%.sroa.1.0..sroa_idx.i = getelementptr inbounds i8, ptr %87, i64 8
store i16 1, ptr %.sroa.1.0..sroa_idx.i, align 8, !alias.scope !47243
%sunkaddr = getelementptr inbounds i8, ptr %88, i64 40
%146 = load i1, ptr %sunkaddr, align 8
br i1 %146, label %Sema.Block.WipAnonDecl.deinit.exit, label %Then.i
Then.i: ; preds = %TryRet
%147 = getelementptr inbounds %Sema.Block.WipAnonDecl, ptr %88, i64 0, i32 1, i32 1
%148 = load ptr, ptr %147, align 8
%.not4.i.i = icmp eq ptr %148, null
br i1 %.not4.i.i, label %Sema.Block.WipAnonDecl.deinit.exit, label %Then.lr.ph.i.i
Then.lr.ph.i.i: ; preds = %Then.i
%.sroa.2.0..sroa_idx.i.i492 = getelementptr inbounds %Sema.Block.WipAnonDecl, ptr %88, i64 0, i32 1, i32 0, i32 1
%.sroa.2.0.copyload.i.i495 = load ptr, ptr %.sroa.2.0..sroa_idx.i.i492, align 8
%sunkaddr779 = getelementptr inbounds i8, ptr %88, i64 8
%.sroa.0.0.copyload.i.i = load ptr, ptr %sunkaddr779, align 8
br label %Then.i.i494
Then.i.i494: ; preds = %mem.Allocator.free__anon_3793.exit.i.i, %Then.lr.ph.i.i
%.05.i.i = phi ptr [ %148, %Then.lr.ph.i.i ], [ %149, %mem.Allocator.free__anon_3793.exit.i.i ]
%149 = load ptr, ptr %.05.i.i, align 8
%150 = getelementptr inbounds %"linked_list.SinglyLinkedList([]u8).Node", ptr %.05.i.i, i64 0, i32 1
%.unpack.i.i493 = load ptr, ptr %150, align 8
%.elt2.i.i = getelementptr inbounds %"linked_list.SinglyLinkedList([]u8).Node", ptr %.05.i.i, i64 0, i32 1, i32 1
%.unpack3.i.i = load i64, ptr %.elt2.i.i, align 8
%151 = icmp eq i64 %.unpack3.i.i, 0
%152 = insertvalue { ptr, i64 } undef, ptr %.unpack.i.i493, 0
%153 = insertvalue { ptr, i64 } %152, i64 %.unpack3.i.i, 1
%common.ret.op.i.i.i.i = select i1 %151, { ptr, i64 } { ptr inttoptr (i64 -6148914691236517206 to ptr), i64 0 }, { ptr, i64 } %153
%154 = extractvalue { ptr, i64 } %common.ret.op.i.i.i.i, 1
%155 = icmp eq i64 %154, 0
br i1 %155, label %mem.Allocator.free__anon_3793.exit.i.i, label %Block.i.i.i
Block.i.i.i: ; preds = %Then.i.i494
%156 = ptrtoint ptr %136 to i64
%157 = extractvalue { ptr, i64 } %common.ret.op.i.i.i.i, 0
tail call void @llvm.memset.p0.i64(ptr align 1 %157, i8 -86, i64 %154, i1 false)
%sunkaddr780 = getelementptr inbounds i8, ptr %.sroa.2.0.copyload.i.i495, i64 16
%158 = load ptr, ptr %sunkaddr780, align 8
tail call fastcc void %158(ptr nonnull align 1 %.sroa.0.0.copyload.i.i, ptr nonnull align 1 %157, i64 %154, i8 0, i64 %156) #37
br label %mem.Allocator.free__anon_3793.exit.i.i
mem.Allocator.free__anon_3793.exit.i.i: ; preds = %Block.i.i.i, %Then.i.i494
%.not.i.i = icmp eq ptr %149, null
br i1 %.not.i.i, label %Sema.Block.WipAnonDecl.deinit.exit, label %Then.i.i494
Sema.Block.WipAnonDecl.deinit.exit: ; preds = %mem.Allocator.free__anon_3793.exit.i.i, %Then.i, %TryRet
%.sroa.1151.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 1, ptr %.sroa.1151.0..sroa_idx, align 4
br label %common.ret
TryCont: ; preds = %Then5
store i64 77, ptr %138, align 8, !noalias !47243
%159 = getelementptr inbounds %value.Value.Payload.U64, ptr %138, i64 0, i32 1
store i64 %135, ptr %159, align 8, !noalias !47243
%160 = getelementptr inbounds { %value.Value, i16, [6 x i8] }, ptr %87, i64 0, i32 1
store i16 0, ptr %160, align 8, !alias.scope !47243
store ptr %138, ptr %87, align 8, !alias.scope !47243
call fastcc void @Sema.Block.WipAnonDecl.finish(ptr noalias %86, ptr %88, ptr @3160, ptr %87, i32 0)
%161 = getelementptr inbounds { i32, i16, [2 x i8] }, ptr %86, i64 0, i32 1
%162 = load i16, ptr %161, align 4
%.not450 = icmp eq i16 %162, 0
br i1 %.not450, label %TryCont8, label %TryRet7
TryRet7: ; preds = %TryCont
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %88)
%.sroa.1154.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %162, ptr %.sroa.1154.0..sroa_idx, align 4
br label %common.ret
TryCont8: ; preds = %TryCont
%163 = load i32, ptr %86, align 4
call fastcc void @Sema.analyzeDeclRef(ptr noalias %85, ptr %1, i32 %163)
%164 = load i64, ptr %85, align 8
store i64 %164, ptr %0, align 4
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %88)
br label %common.ret
Case9: ; preds = %type.Type.zigTypeTag.exit484
%165 = icmp ult i64 %120, 68
br i1 %165, label %type.Type.tag.exit.i499, label %Else.i.i497
Else.i.i497: ; preds = %Case9
%166 = inttoptr i64 %120 to ptr
%167 = load i64, ptr %166, align 8
br label %type.Type.tag.exit.i499
type.Type.tag.exit.i499: ; preds = %Else.i.i497, %Case9
%common.ret.op.i.i498 = phi i64 [ %167, %Else.i.i497 ], [ %120, %Case9 ]
switch i64 %common.ret.op.i.i498, label %Block146 [
i64 75, label %type.Type.isSlice.exit
i64 82, label %Then10
i64 83, label %Then10
i64 59, label %Then10
i64 60, label %Then10
]
type.Type.isSlice.exit: ; preds = %type.Type.tag.exit.i499
%168 = inttoptr i64 %120 to ptr
%169 = load i64, ptr %168, align 8
%170 = icmp eq i64 %169, 75
%spec.select.i.i500 = select i1 %170, ptr %168, ptr null
%171 = getelementptr inbounds %type.Type.Payload.Pointer, ptr %spec.select.i.i500, i64 0, i32 1, i32 10
%172 = load i2, ptr %171, align 1
%173 = icmp eq i2 %172, -2
br i1 %173, label %Then10, label %Block146
Then10: ; preds = %type.Type.isSlice.exit, %type.Type.tag.exit.i499, %type.Type.tag.exit.i499, %type.Type.tag.exit.i499, %type.Type.tag.exit.i499
br i1 %.0.i727, label %Then12, label %Block16
Then12: ; preds = %Then10
call fastcc void @Sema.analyzeLoad(ptr noalias %83, ptr %1, ptr %2, ptr %3, i32 %4, ptr %3)
%174 = getelementptr inbounds { i32, i16, [2 x i8] }, ptr %83, i64 0, i32 1
%175 = load i16, ptr %174, align 4
%.not448 = icmp eq i16 %175, 0
br i1 %.not448, label %TryCont15, label %TryRet14
TryRet14: ; preds = %Then12
%.sroa.1162.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %175, ptr %.sroa.1162.0..sroa_idx, align 4
br label %common.ret
TryCont15: ; preds = %Then12
%176 = load i32, ptr %83, align 4
br label %Block16
Block16: ; preds = %TryCont15, %Then10
%..sroa.speculated = phi i64 [ %storemerge.i.i, %Then10 ], [ %110, %TryCont15 ]
%177 = phi i32 [ %4, %Then10 ], [ %176, %TryCont15 ]
%.not.i505 = icmp eq i64 %6, 3
br i1 %.not.i505, label %Block.i508, label %Else36
Block.i508: ; preds = %Block16
%.not747 = icmp eq ptr %5, @json.stringify__anon_115004__anon_146671
br i1 %.not747, label %Then20, label %Then4.i513.preheader
Then4.i513.preheader: ; preds = %Block.i508
%178 = load i8, ptr %5, align 1
%.not14.i512 = icmp eq i8 %178, 112
br i1 %.not14.i512, label %Loop.i510, label %Block.i523
Loop.i510: ; preds = %Then4.i513.preheader
%179 = getelementptr inbounds i8, ptr %5, i64 1
%180 = load i8, ptr %179, align 1
%.not14.i512.1 = icmp eq i8 %180, 116
br i1 %.not14.i512.1, label %Loop.i510.1, label %Block.i523
Loop.i510.1: ; preds = %Loop.i510
%181 = getelementptr inbounds i8, ptr %5, i64 2
%182 = load i8, ptr %181, align 1
%.not14.i512.2 = icmp eq i8 %182, 114
br i1 %.not14.i512.2, label %Then20, label %Block.i523
Then20: ; preds = %Loop.i510.1, %Block.i508
%183 = getelementptr inbounds %Sema, ptr %1, i64 0, i32 2
%.sroa.0.0.copyload.i515 = load ptr, ptr %183, align 8, !noalias !47251
%.sroa.2.0..sroa_idx.i516 = getelementptr inbounds %Sema, ptr %1, i64 0, i32 2, i32 1
%.sroa.2.0.copyload.i517 = load ptr, ptr %.sroa.2.0..sroa_idx.i516, align 8, !noalias !47251
%184 = tail call fastcc ptr @llvm.returnaddress(i32 0)
%185 = ptrtoint ptr %184 to i64
%186 = load ptr, ptr %.sroa.2.0.copyload.i517, align 8, !noalias !47254
%187 = tail call fastcc ptr %186(ptr nonnull align 1 %.sroa.0.0.copyload.i515, i64 56, i8 3, i64 %185) #37, !noalias !47254
%.not.i.i518 = icmp eq ptr %187, null
br i1 %.not.i.i518, label %TryRet22, label %TryCont23
Block.i523: ; preds = %Loop.i510.1, %Loop.i510, %Then4.i513.preheader
%.not748 = icmp eq ptr %5, @958
br i1 %.not748, label %Then35, label %Then4.i528.preheader
Then4.i528.preheader: ; preds = %Block.i523
%.not14.i527 = icmp eq i8 %178, 108
br i1 %.not14.i527, label %Loop.i525, label %Else36
Loop.i525: ; preds = %Then4.i528.preheader
%188 = getelementptr inbounds i8, ptr %5, i64 1
%189 = load i8, ptr %188, align 1
%.not14.i527.1 = icmp eq i8 %189, 101
br i1 %.not14.i527.1, label %Loop.i525.1, label %Else36
Loop.i525.1: ; preds = %Loop.i525
%190 = getelementptr inbounds i8, ptr %5, i64 2
%191 = load i8, ptr %190, align 1
%.not14.i527.2 = icmp eq i8 %191, 110
br i1 %.not14.i527.2, label %Then35, label %Else36
TryRet22: ; preds = %Then20
%.sroa.1166.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 1, ptr %.sroa.1166.0..sroa_idx, align 4
br label %common.ret
TryCont23: ; preds = %Then20
tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %187, i8 -86, i64 56, i1 false), !noalias !47254
call fastcc void @type.Type.slicePtrFieldType(ptr noalias %82, i64 %120, ptr %187)
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %81, ptr noundef nonnull align 8 dereferenceable(16) %183, i64 16, i1 false)
%192 = load ptr, ptr %1, align 8
%193 = icmp ult i64 %..sroa.speculated, 68
br i1 %193, label %type.Type.tag.exit.i532, label %Else.i.i530
Else.i.i530: ; preds = %TryCont23
%194 = inttoptr i64 %..sroa.speculated to ptr
%195 = load i64, ptr %194, align 8
br label %type.Type.tag.exit.i532
type.Type.tag.exit.i532: ; preds = %Else.i.i530, %TryCont23
%common.ret.op.i.i531 = phi i64 [ %195, %Else.i.i530 ], [ %..sroa.speculated, %TryCont23 ]
switch i64 %common.ret.op.i.i531, label %Else.i533 [
i64 75, label %Case.i535
i64 58, label %type.Type.ptrIsMutable.exit
i64 59, label %type.Type.ptrIsMutable.exit
i64 60, label %type.Type.ptrIsMutable.exit
i64 76, label %type.Type.ptrIsMutable.exit
i64 78, label %type.Type.ptrIsMutable.exit
i64 52, label %type.Type.ptrIsMutable.exit
i64 53, label %type.Type.ptrIsMutable.exit
i64 80, label %type.Type.ptrIsMutable.exit
i64 82, label %type.Type.ptrIsMutable.exit
i64 77, label %Case2.i
i64 79, label %Case2.i
i64 51, label %Case2.i
i64 81, label %Case2.i
i64 83, label %Case2.i
]
Else.i533: ; preds = %type.Type.tag.exit.i532
unreachable
Case.i535: ; preds = %type.Type.tag.exit.i532
%196 = inttoptr i64 %..sroa.speculated to ptr
%197 = load i64, ptr %196, align 8
%198 = icmp eq i64 %197, 75
%spec.select.i.i534 = select i1 %198, ptr %196, ptr null
%199 = getelementptr inbounds %type.Type.Payload.Pointer, ptr %spec.select.i.i534, i64 0, i32 1, i32 8
%200 = load i1, ptr %199, align 1
br label %type.Type.ptrIsMutable.exit
Case2.i: ; preds = %type.Type.tag.exit.i532, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532
br label %type.Type.ptrIsMutable.exit
type.Type.ptrIsMutable.exit: ; preds = %Case2.i, %Case.i535, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532
%.0.i536 = phi i1 [ true, %Case2.i ], [ %200, %Case.i535 ], [ false, %type.Type.tag.exit.i532 ], [ false, %type.Type.tag.exit.i532 ], [ false, %type.Type.tag.exit.i532 ], [ false, %type.Type.tag.exit.i532 ], [ false, %type.Type.tag.exit.i532 ], [ false, %type.Type.tag.exit.i532 ], [ false, %type.Type.tag.exit.i532 ], [ false, %type.Type.tag.exit.i532 ], [ false, %type.Type.tag.exit.i532 ]
%201 = icmp ult i64 %..sroa.speculated, 68
br i1 %201, label %type.Type.isVolatilePtr.exit, label %type.Type.tag.exit.i538
type.Type.tag.exit.i538: ; preds = %type.Type.ptrIsMutable.exit
%202 = inttoptr i64 %..sroa.speculated to ptr
%203 = load i64, ptr %202, align 8
%cond.i = icmp eq i64 %203, 75
br i1 %cond.i, label %type.Type.castTag__anon_79638.exit.i, label %type.Type.isVolatilePtr.exit
type.Type.castTag__anon_79638.exit.i: ; preds = %type.Type.tag.exit.i538
%204 = inttoptr i64 %..sroa.speculated to ptr
%205 = getelementptr inbounds %type.Type.Payload.Pointer, ptr %204, i64 0, i32 1, i32 9
%206 = load i1, ptr %205, align 1
br label %type.Type.isVolatilePtr.exit
type.Type.isVolatilePtr.exit: ; preds = %type.Type.castTag__anon_79638.exit.i, %type.Type.tag.exit.i538, %type.Type.ptrIsMutable.exit
%common.ret.op.i539 = phi i1 [ %206, %type.Type.castTag__anon_79638.exit.i ], [ false, %type.Type.tag.exit.i538 ], [ false, %type.Type.ptrIsMutable.exit ]
%207 = tail call fastcc i4 @type.Type.ptrAddressSpace(i64 %..sroa.speculated)
%.sroa.0168.0.copyload = load i64, ptr %82, align 8
store i64 %.sroa.0168.0.copyload, ptr %80, align 8
%208 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %80, i64 0, i32 1
%209 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %80, i64 0, i32 6
call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %208, i8 0, i64 20, i1 false)
store i4 %207, ptr %209, align 4
%210 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %80, i64 0, i32 4
store <2 x i16> zeroinitializer, ptr %210, align 8
%211 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %80, i64 0, i32 3
store i32 -1, ptr %211, align 4
%212 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %80, i64 0, i32 7
store i1 false, ptr %212, align 1
%213 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %80, i64 0, i32 8
store i1 %.0.i536, ptr %213, align 2
%214 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %80, i64 0, i32 9
store i1 %common.ret.op.i539, ptr %214, align 1
%215 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %80, i64 0, i32 10
store i2 0, ptr %215, align 8
call fastcc void @type.Type.ptr(ptr noalias %79, ptr %81, ptr %192, ptr %80)
%216 = getelementptr inbounds { %type.Type, i16, [6 x i8] }, ptr %79, i64 0, i32 1
%217 = load i16, ptr %216, align 8
%.not443 = icmp eq i16 %217, 0
br i1 %.not443, label %TryCont25, label %TryRet24
TryRet24: ; preds = %type.Type.isVolatilePtr.exit
%.sroa.1172.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %217, ptr %.sroa.1172.0..sroa_idx, align 4
br label %common.ret
TryCont25: ; preds = %type.Type.isVolatilePtr.exit
%218 = load i64, ptr %79, align 8
call fastcc void @Sema.resolveDefinedValue(ptr noalias %78, ptr %1, ptr %2, ptr %3, i32 %177)
%219 = getelementptr inbounds { { %value.Value, i8, [7 x i8] }, i16, [6 x i8] }, ptr %78, i64 0, i32 1
%220 = load i16, ptr %219, align 8
%.not444 = icmp eq i16 %220, 0
br i1 %.not444, label %TryCont27, label %TryRet26
TryRet26: ; preds = %TryCont25
%.sroa.1176.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %220, ptr %.sroa.1176.0..sroa_idx, align 4
br label %common.ret
TryCont27: ; preds = %TryCont25
%.sroa.2180.0..sroa_idx = getelementptr inbounds i8, ptr %78, i64 8
%.sroa.2180.0.copyload = load i8, ptr %.sroa.2180.0..sroa_idx, align 8
%.not445 = icmp eq i8 %.sroa.2180.0.copyload, 0
br i1 %.not445, label %Block32, label %Then28
Then28: ; preds = %TryCont27
%221 = ptrtoint ptr %184 to i64
%.sroa.0178.0.copyload = load i64, ptr %78, align 8
%.sroa.2184.8.copyload = load i64, ptr %121, align 8
tail call void @llvm.experimental.noalias.scope.decl(metadata !47257)
%sunkaddr784 = getelementptr inbounds i8, ptr %1, i64 24
%.sroa.0.0.copyload.i540 = load ptr, ptr %sunkaddr784, align 8, !noalias !47257
%sunkaddr781 = getelementptr inbounds i8, ptr %1, i64 32
%.sroa.2.0.copyload.i542 = load ptr, ptr %sunkaddr781, align 8, !noalias !47257
%222 = load ptr, ptr %.sroa.2.0.copyload.i542, align 8, !noalias !47260
%223 = tail call fastcc ptr %222(ptr nonnull align 1 %.sroa.0.0.copyload.i540, i64 32, i8 3, i64 %221) #37, !noalias !47260
%.not.i.i.i543 = icmp eq ptr %223, null
br i1 %.not.i.i.i543, label %TryRet30, label %TryCont31
TryRet30: ; preds = %Then28
%.sroa.1.0..sroa_idx.i544 = getelementptr inbounds i8, ptr %77, i64 8
store i16 1, ptr %.sroa.1.0..sroa_idx.i544, align 8, !alias.scope !47257
%.sroa.1187.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 1, ptr %.sroa.1187.0..sroa_idx, align 4
br label %common.ret
TryCont31: ; preds = %Then28
%224 = getelementptr inbounds i8, ptr %223, i64 8
store i64 89, ptr %223, align 8, !noalias !47257
store i64 %.sroa.0178.0.copyload, ptr %224, align 8, !noalias !47257
%.sroa.2663.0..sroa_idx = getelementptr inbounds %value.Value.Payload.FieldPtr, ptr %223, i64 0, i32 1, i32 1
store i64 %.sroa.2184.8.copyload, ptr %.sroa.2663.0..sroa_idx, align 8, !noalias !47257
%.sroa.3664.0..sroa_idx = getelementptr inbounds %value.Value.Payload.FieldPtr, ptr %223, i64 0, i32 1, i32 2
store i64 0, ptr %.sroa.3664.0..sroa_idx, align 8, !noalias !47257
%225 = getelementptr inbounds { %value.Value, i16, [6 x i8] }, ptr %77, i64 0, i32 1
store i16 0, ptr %225, align 8, !alias.scope !47257
store ptr %223, ptr %77, align 8, !alias.scope !47257
call fastcc void @Sema.addConstant(ptr noalias %76, ptr %1, i64 %218, ptr %77)
%226 = load i64, ptr %76, align 8
store i64 %226, ptr %0, align 4
br label %common.ret
Block32: ; preds = %TryCont27
%227 = tail call fastcc i16 @Sema.requireRuntimeBlock(ptr %1, ptr %2, ptr %3, ptr @2042)
%.not446 = icmp eq i16 %227, 0
br i1 %.not446, label %TryCont34, label %TryRet33
TryRet33: ; preds = %Block32
%.sroa.1191.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %227, ptr %.sroa.1191.0..sroa_idx, align 4
br label %common.ret
TryCont34: ; preds = %Block32
call fastcc void @Sema.Block.addTyOp(ptr noalias %75, ptr %2, i8 -104, i64 %218, i32 %177)
%228 = load i64, ptr %75, align 8
store i64 %228, ptr %0, align 4
br label %common.ret
Then35: ; preds = %Loop.i525.1, %Block.i523
%229 = getelementptr inbounds %Sema, ptr %1, i64 0, i32 2
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %74, ptr noundef nonnull align 8 dereferenceable(16) %229, i64 16, i1 false)
%230 = load ptr, ptr %1, align 8
%231 = icmp ult i64 %..sroa.speculated, 68
br i1 %231, label %type.Type.tag.exit.i549, label %Else.i.i547
Else.i.i547: ; preds = %Then35
%232 = inttoptr i64 %..sroa.speculated to ptr
%233 = load i64, ptr %232, align 8
br label %type.Type.tag.exit.i549
type.Type.tag.exit.i549: ; preds = %Else.i.i547, %Then35
%common.ret.op.i.i548 = phi i64 [ %233, %Else.i.i547 ], [ %..sroa.speculated, %Then35 ]
switch i64 %common.ret.op.i.i548, label %Else.i550 [
i64 75, label %Case.i552
i64 58, label %type.Type.ptrIsMutable.exit556
i64 59, label %type.Type.ptrIsMutable.exit556
i64 60, label %type.Type.ptrIsMutable.exit556
i64 76, label %type.Type.ptrIsMutable.exit556
i64 78, label %type.Type.ptrIsMutable.exit556
i64 52, label %type.Type.ptrIsMutable.exit556
i64 53, label %type.Type.ptrIsMutable.exit556
i64 80, label %type.Type.ptrIsMutable.exit556
i64 82, label %type.Type.ptrIsMutable.exit556
i64 77, label %Case2.i553
i64 79, label %Case2.i553
i64 51, label %Case2.i553
i64 81, label %Case2.i553
i64 83, label %Case2.i553
]
Else.i550: ; preds = %type.Type.tag.exit.i549
unreachable
Case.i552: ; preds = %type.Type.tag.exit.i549
%234 = inttoptr i64 %..sroa.speculated to ptr
%235 = load i64, ptr %234, align 8
%236 = icmp eq i64 %235, 75
%spec.select.i.i551 = select i1 %236, ptr %234, ptr null
%237 = getelementptr inbounds %type.Type.Payload.Pointer, ptr %spec.select.i.i551, i64 0, i32 1, i32 8
%238 = load i1, ptr %237, align 1
br label %type.Type.ptrIsMutable.exit556
Case2.i553: ; preds = %type.Type.tag.exit.i549, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549
br label %type.Type.ptrIsMutable.exit556
type.Type.ptrIsMutable.exit556: ; preds = %Case2.i553, %Case.i552, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549
%.0.i554 = phi i1 [ true, %Case2.i553 ], [ %238, %Case.i552 ], [ false, %type.Type.tag.exit.i549 ], [ false, %type.Type.tag.exit.i549 ], [ false, %type.Type.tag.exit.i549 ], [ false, %type.Type.tag.exit.i549 ], [ false, %type.Type.tag.exit.i549 ], [ false, %type.Type.tag.exit.i549 ], [ false, %type.Type.tag.exit.i549 ], [ false, %type.Type.tag.exit.i549 ], [ false, %type.Type.tag.exit.i549 ]
%239 = icmp ult i64 %..sroa.speculated, 68
br i1 %239, label %type.Type.isVolatilePtr.exit561, label %type.Type.tag.exit.i558
type.Type.tag.exit.i558: ; preds = %type.Type.ptrIsMutable.exit556
%240 = inttoptr i64 %..sroa.speculated to ptr
%241 = load i64, ptr %240, align 8
%cond.i557 = icmp eq i64 %241, 75
br i1 %cond.i557, label %type.Type.castTag__anon_79638.exit.i560, label %type.Type.isVolatilePtr.exit561
type.Type.castTag__anon_79638.exit.i560: ; preds = %type.Type.tag.exit.i558
%242 = inttoptr i64 %..sroa.speculated to ptr
%243 = getelementptr inbounds %type.Type.Payload.Pointer, ptr %242, i64 0, i32 1, i32 9
%244 = load i1, ptr %243, align 1
br label %type.Type.isVolatilePtr.exit561
type.Type.isVolatilePtr.exit561: ; preds = %type.Type.castTag__anon_79638.exit.i560, %type.Type.tag.exit.i558, %type.Type.ptrIsMutable.exit556
%common.ret.op.i559 = phi i1 [ %244, %type.Type.castTag__anon_79638.exit.i560 ], [ false, %type.Type.tag.exit.i558 ], [ false, %type.Type.ptrIsMutable.exit556 ]
%245 = tail call fastcc i4 @type.Type.ptrAddressSpace(i64 %..sroa.speculated)
store i64 12, ptr %73, align 8
%246 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %73, i64 0, i32 1
%247 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %73, i64 0, i32 6
call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %246, i8 0, i64 20, i1 false)
store i4 %245, ptr %247, align 4
%248 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %73, i64 0, i32 4
store <2 x i16> zeroinitializer, ptr %248, align 8
%249 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %73, i64 0, i32 3
store i32 -1, ptr %249, align 4
%250 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %73, i64 0, i32 7
store i1 false, ptr %250, align 1
%251 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %73, i64 0, i32 8
store i1 %.0.i554, ptr %251, align 2
%252 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %73, i64 0, i32 9
store i1 %common.ret.op.i559, ptr %252, align 1
%253 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %73, i64 0, i32 10
store i2 0, ptr %253, align 8
call fastcc void @type.Type.ptr(ptr noalias %72, ptr %74, ptr %230, ptr %73)
%254 = getelementptr inbounds { %type.Type, i16, [6 x i8] }, ptr %72, i64 0, i32 1
%255 = load i16, ptr %254, align 8
%.not437 = icmp eq i16 %255, 0
br i1 %.not437, label %TryCont38, label %TryRet37
Else36: ; preds = %Loop.i525.1, %Loop.i525, %Then4.i528.preheader, %Block16
%256 = load ptr, ptr %1, align 8
store ptr %5, ptr %67, align 8
%.fca.1.gep225 = getelementptr inbounds { ptr, i64 }, ptr %67, i64 0, i32 1
store i64 %6, ptr %.fca.1.gep225, align 8
%257 = getelementptr inbounds %97, ptr %67, i64 0, i32 1
store i64 %110, ptr %257, align 8
%.sroa.2671.0..sroa_idx = getelementptr inbounds %97, ptr %67, i64 0, i32 1, i32 0, i32 1
store ptr %256, ptr %.sroa.2671.0..sroa_idx, align 8
%258 = getelementptr i8, ptr %2, i64 160
%.val630 = load i32, ptr %258, align 8, !noalias !47265
call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %.sroa.7.i)
call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11)
%259 = getelementptr i8, ptr %256, i64 696
%.val.i.i = load ptr, ptr %259, align 8, !noalias !47268
%260 = zext i32 %.val630 to i64
%261 = add nuw nsw i64 %260, 1
%262 = tail call i64 @llvm.ctlz.i64(i64 %261, i1 true), !range !1878
%263 = xor i64 %262, 63
%.neg.i.i.i.i.i = shl nsw i64 -1, %263
%264 = add nsw i64 %.neg.i.i.i.i.i, %261
%265 = getelementptr inbounds ptr, ptr %.val.i.i, i64 %263
%266 = load ptr, ptr %265, align 8, !noalias !47268
%267 = getelementptr inbounds %Sema, ptr %1, i64 0, i32 1
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %267, i64 16, i1 false), !noalias !47268
%268 = load i64, ptr %7, align 4
%.sroa.4.0..sroa_idx.i = getelementptr inbounds i8, ptr %7, i64 8
%.sroa.4.0.copyload.i = load i7, ptr %.sroa.4.0..sroa_idx.i, align 4, !noalias !47268
%.sroa.5.0..sroa_idx.i = getelementptr inbounds i8, ptr %7, i64 9
%switch.i.i756 = icmp ult i7 %.sroa.4.0.copyload.i, 5
%269 = getelementptr %Module.Decl, ptr %266, i64 %264, i32 5
%.val3.i.i = load ptr, ptr %269, align 8, !noalias !47271
%270 = getelementptr i8, ptr %.val3.i.i, i64 8
%.val3.val.i.i = load ptr, ptr %270, align 8, !noalias !47271
br i1 %switch.i.i756, label %Module.LazySrcLoc.toSrcLoc.exit.i, label %Case1.i.i
Case1.i.i: ; preds = %Else36
%271 = getelementptr inbounds %Module.Decl, ptr %266, i64 %264, i32 11
%272 = load i32, ptr %271, align 8, !noalias !47271
br label %Module.LazySrcLoc.toSrcLoc.exit.i
Module.LazySrcLoc.toSrcLoc.exit.i: ; preds = %Case1.i.i, %Else36
%.sink.i.i = phi i32 [ %272, %Case1.i.i ], [ 0, %Else36 ]
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %.sroa.7.i, ptr noundef nonnull align 1 dereferenceable(3) %.sroa.5.0..sroa_idx.i, i64 3, i1 false)
%.sroa.010.0.copyload.i = load ptr, ptr %11, align 8, !noalias !47274
%.sroa.411.0..sroa_idx.i = getelementptr inbounds i8, ptr %11, i64 8
%.sroa.411.0.copyload.i = load ptr, ptr %.sroa.411.0..sroa_idx.i, align 8, !noalias !47274
%273 = tail call fastcc ptr @llvm.returnaddress(i32 0)
%274 = ptrtoint ptr %273 to i64
%275 = load ptr, ptr %.sroa.411.0.copyload.i, align 8, !noalias !47277
%276 = tail call fastcc ptr %275(ptr nonnull align 1 %.sroa.010.0.copyload.i, i64 72, i8 3, i64 %274) #37, !noalias !47277
%.not.i.i.i.i = icmp eq ptr %276, null
br i1 %.not.i.i.i.i, label %Module.ErrorMsg.create__anon_226000.exit.thread.i, label %TryCont.i.i
TryCont.i.i: ; preds = %Module.LazySrcLoc.toSrcLoc.exit.i
tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(72) %276, i8 -86, i64 72, i1 false), !noalias !47277
call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9), !noalias !47274
call fastcc void @fmt.allocPrint__anon_226002(ptr noalias %9, ptr %11, ptr %67), !noalias !47282
%277 = getelementptr inbounds { { ptr, i64 }, i16, [6 x i8] }, ptr %9, i64 0, i32 1
%278 = load i16, ptr %277, align 8, !noalias !47282
%.not.i.i.i757 = icmp eq i16 %278, 0
br i1 %.not.i.i.i757, label %TryCont.i759, label %TryRet1.i.i
TryRet1.i.i: ; preds = %TryCont.i.i
%279 = ptrtoint ptr %273 to i64
call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9), !noalias !47274
%280 = getelementptr i8, ptr %.sroa.411.0.copyload.i, i64 16
%.val10.val.i.i = load ptr, ptr %280, align 8, !noalias !47274
tail call fastcc void %.val10.val.i.i(ptr nonnull align 1 %.sroa.010.0.copyload.i, ptr nonnull align 1 %276, i64 72, i8 3, i64 %279) #37, !noalias !47274
br label %Module.ErrorMsg.create__anon_226000.exit.thread.i
Module.ErrorMsg.create__anon_226000.exit.thread.i: ; preds = %TryRet1.i.i, %Module.LazySrcLoc.toSrcLoc.exit.i
%.sroa.49.0.ph.i = phi i16 [ 1, %Module.LazySrcLoc.toSrcLoc.exit.i ], [ %278, %TryRet1.i.i ]
call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %.sroa.7.i)
call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11)
br label %Sema.fail__anon_135111.exit
TryCont.i759: ; preds = %TryCont.i.i
%.fca.0.load.i.i.i = load ptr, ptr %9, align 8, !noalias !47282
%.fca.1.gep.i.i.i = getelementptr inbounds { ptr, i64 }, ptr %9, i64 0, i32 1
%.fca.1.load.i.i.i = load i64, ptr %.fca.1.gep.i.i.i, align 8, !noalias !47282
call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9), !noalias !47274
store ptr %.val3.val.i.i, ptr %276, align 8, !noalias !47274
%.sroa.416.0..sroa.012.0..sroa_idx.i = getelementptr inbounds i8, ptr %276, i64 8
store i32 %.sink.i.i, ptr %.sroa.416.0..sroa.012.0..sroa_idx.i, align 8, !noalias !47274
%.sroa.517.0..sroa.012.0..sroa_idx.i = getelementptr inbounds i8, ptr %276, i64 12
store i64 %268, ptr %.sroa.517.0..sroa.012.0..sroa_idx.i, align 4
%.sroa.618.0..sroa.012.0..sroa_idx.i = getelementptr inbounds i8, ptr %276, i64 20
store i7 %.sroa.4.0.copyload.i, ptr %.sroa.618.0..sroa.012.0..sroa_idx.i, align 4, !noalias !47274
%.sroa.719.0..sroa.012.0..sroa_idx.i = getelementptr inbounds i8, ptr %276, i64 21
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %.sroa.719.0..sroa.012.0..sroa_idx.i, ptr noundef nonnull align 1 dereferenceable(3) %.sroa.7.i, i64 3, i1 false)
%.sroa.820.0..sroa.012.0..sroa_idx.i = getelementptr inbounds i8, ptr %276, i64 24
store ptr %.fca.0.load.i.i.i, ptr %.sroa.820.0..sroa.012.0..sroa_idx.i, align 8, !noalias !47274
%.sroa.9.0..sroa.012.0..sroa_idx.i = getelementptr inbounds i8, ptr %276, i64 32
store i64 %.fca.1.load.i.i.i, ptr %.sroa.9.0..sroa.012.0..sroa_idx.i, align 8, !noalias !47274
%.sroa.10.0..sroa.012.0..sroa_idx.i = getelementptr inbounds i8, ptr %276, i64 40
tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.10.0..sroa.012.0..sroa_idx.i, i8 0, i64 32, i1 false)
call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %.sroa.7.i)
call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11)
%281 = tail call fastcc i16 @Sema.failWithOwnedErrorMsg(ptr %1, ptr %276)
br label %Sema.fail__anon_135111.exit
Sema.fail__anon_135111.exit: ; preds = %TryCont.i759, %Module.ErrorMsg.create__anon_226000.exit.thread.i
%common.ret.op.i758 = phi i16 [ %281, %TryCont.i759 ], [ %.sroa.49.0.ph.i, %Module.ErrorMsg.create__anon_226000.exit.thread.i ]
%.sroa.1227.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %common.ret.op.i758, ptr %.sroa.1227.0..sroa_idx, align 4
br label %common.ret
TryRet37: ; preds = %type.Type.isVolatilePtr.exit561
%.sroa.1198.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %255, ptr %.sroa.1198.0..sroa_idx, align 4
br label %common.ret
TryCont38: ; preds = %type.Type.isVolatilePtr.exit561
%282 = load i64, ptr %72, align 8
call fastcc void @Sema.resolveDefinedValue(ptr noalias %71, ptr %1, ptr %2, ptr %3, i32 %177)
%283 = getelementptr inbounds { { %value.Value, i8, [7 x i8] }, i16, [6 x i8] }, ptr %71, i64 0, i32 1
%284 = load i16, ptr %283, align 8
%.not438 = icmp eq i16 %284, 0
br i1 %.not438, label %TryCont40, label %TryRet39
TryRet39: ; preds = %TryCont38
%.sroa.1202.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %284, ptr %.sroa.1202.0..sroa_idx, align 4
br label %common.ret
TryCont40: ; preds = %TryCont38
%.sroa.2206.0..sroa_idx = getelementptr inbounds i8, ptr %71, i64 8
%.sroa.2206.0.copyload = load i8, ptr %.sroa.2206.0..sroa_idx, align 8
%.not439 = icmp eq i8 %.sroa.2206.0.copyload, 0
br i1 %.not439, label %Block45, label %Then41
Then41: ; preds = %TryCont40
%.sroa.0204.0.copyload = load i64, ptr %71, align 8
%.sroa.2211.8.copyload = load i64, ptr %121, align 8
tail call void @llvm.experimental.noalias.scope.decl(metadata !47285)
%sunkaddr782 = getelementptr inbounds i8, ptr %1, i64 24
%.sroa.0.0.copyload.i562 = load ptr, ptr %sunkaddr782, align 8, !noalias !47285
%.sroa.2.0..sroa_idx.i563 = getelementptr inbounds %Sema, ptr %1, i64 0, i32 2, i32 1
%.sroa.2.0.copyload.i564 = load ptr, ptr %.sroa.2.0..sroa_idx.i563, align 8, !noalias !47285
%285 = tail call fastcc ptr @llvm.returnaddress(i32 0)
%286 = ptrtoint ptr %285 to i64
%287 = load ptr, ptr %.sroa.2.0.copyload.i564, align 8, !noalias !47288
%288 = tail call fastcc ptr %287(ptr nonnull align 1 %.sroa.0.0.copyload.i562, i64 32, i8 3, i64 %286) #37, !noalias !47288
%.not.i.i.i565 = icmp eq ptr %288, null
br i1 %.not.i.i.i565, label %TryRet43, label %TryCont44
TryRet43: ; preds = %Then41
%.sroa.1.0..sroa_idx.i566 = getelementptr inbounds i8, ptr %70, i64 8
store i16 1, ptr %.sroa.1.0..sroa_idx.i566, align 8, !alias.scope !47285
%.sroa.1214.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 1, ptr %.sroa.1214.0..sroa_idx, align 4
br label %common.ret
TryCont44: ; preds = %Then41
%289 = getelementptr inbounds i8, ptr %288, i64 8
store i64 89, ptr %288, align 8, !noalias !47285
store i64 %.sroa.0204.0.copyload, ptr %289, align 8, !noalias !47285
%.sroa.2668.0..sroa_idx = getelementptr inbounds %value.Value.Payload.FieldPtr, ptr %288, i64 0, i32 1, i32 1
store i64 %.sroa.2211.8.copyload, ptr %.sroa.2668.0..sroa_idx, align 8, !noalias !47285
%.sroa.3669.0..sroa_idx = getelementptr inbounds %value.Value.Payload.FieldPtr, ptr %288, i64 0, i32 1, i32 2
store i64 1, ptr %.sroa.3669.0..sroa_idx, align 8, !noalias !47285
%290 = getelementptr inbounds { %value.Value, i16, [6 x i8] }, ptr %70, i64 0, i32 1
store i16 0, ptr %290, align 8, !alias.scope !47285
store ptr %288, ptr %70, align 8, !alias.scope !47285
call fastcc void @Sema.addConstant(ptr noalias %69, ptr %1, i64 %282, ptr %70)
%291 = load i64, ptr %69, align 8
store i64 %291, ptr %0, align 4
br label %common.ret
Block45: ; preds = %TryCont40
%292 = tail call fastcc i16 @Sema.requireRuntimeBlock(ptr %1, ptr %2, ptr %3, ptr @2042)
%.not440 = icmp eq i16 %292, 0
br i1 %.not440, label %TryCont47, label %TryRet46
TryRet46: ; preds = %Block45
%.sroa.1218.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %292, ptr %.sroa.1218.0..sroa_idx, align 4
br label %common.ret
TryCont47: ; preds = %Block45
call fastcc void @Sema.Block.addTyOp(ptr noalias %68, ptr %2, i8 -105, i64 %282, i32 %177)
%293 = load i64, ptr %68, align 8
store i64 %293, ptr %0, align 4
br label %common.ret
Case49: ; preds = %type.Type.zigTypeTag.exit484
call fastcc void @Sema.resolveConstValue(ptr noalias %66, ptr %1, ptr %2, ptr @2043, i32 %4, ptr @crypto.tls.Client.init__anon_99877__anon_130457, i64 0)
%294 = getelementptr inbounds { %value.Value, i16, [6 x i8] }, ptr %66, i64 0, i32 1
%295 = load i16, ptr %294, align 8
%.not405 = icmp eq i16 %295, 0
br i1 %.not405, label %TryCont51, label %TryRet50
TryRet50: ; preds = %Case49
%.sroa.1231.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %295, ptr %.sroa.1231.0..sroa_idx, align 4
br label %common.ret
TryCont51: ; preds = %Case49
call fastcc void @Sema.analyzeLoad(ptr noalias %65, ptr %1, ptr %2, ptr %3, i32 %4, ptr %3)
%296 = getelementptr inbounds { i32, i16, [2 x i8] }, ptr %65, i64 0, i32 1
%297 = load i16, ptr %296, align 4
%.not406 = icmp eq i16 %297, 0
br i1 %.not406, label %TryCont53, label %TryRet52
TryRet52: ; preds = %TryCont51
%.sroa.1235.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %297, ptr %.sroa.1235.0..sroa_idx, align 4
br label %common.ret
TryCont53: ; preds = %TryCont51
%298 = load i32, ptr %65, align 4
br i1 %.0.i727, label %Then54, label %Block58
Then54: ; preds = %TryCont53
call fastcc void @Sema.analyzeLoad(ptr noalias %64, ptr %1, ptr %2, ptr %3, i32 %298, ptr %3)
%299 = getelementptr inbounds { i32, i16, [2 x i8] }, ptr %64, i64 0, i32 1
%300 = load i16, ptr %299, align 4
%.not436 = icmp eq i16 %300, 0
br i1 %.not436, label %TryCont57, label %TryRet56
TryRet56: ; preds = %Then54
%.sroa.1239.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %300, ptr %.sroa.1239.0..sroa_idx, align 4
br label %common.ret
TryCont57: ; preds = %Then54
%301 = load i32, ptr %64, align 4
br label %Block58
Block58: ; preds = %TryCont57, %TryCont53
%302 = phi i32 [ %301, %TryCont57 ], [ %298, %TryCont53 ]
call fastcc void @Sema.resolveDefinedValue(ptr noalias %63, ptr %1, ptr %2, ptr %3, i32 %302)
%303 = getelementptr inbounds { { %value.Value, i8, [7 x i8] }, i16, [6 x i8] }, ptr %63, i64 0, i32 1
%304 = load i16, ptr %303, align 8
%305 = icmp eq i16 %304, 0
br i1 %305, label %Then59, label %Else60
Then59: ; preds = %Block58
%306 = load i64, ptr %63, align 8
call fastcc void @value.Value.toType(ptr noalias %61, i64 %306, ptr %62)
%307 = load i64, ptr %61, align 8
%308 = call fastcc i5 @type.Type.zigTypeTag(i64 %307)
%309 = zext i5 %308 to i32
switch i32 %309, label %Else62 [
i32 15, label %Case63
i32 17, label %Case84
i32 16, label %Case107
i32 8, label %Case125
i32 19, label %Case125
]
Else60: ; preds = %Block58
tail call fastcc void @builtin.default_panic(ptr @builtin.panic_messages.unwrap_error__anon_7066, i64 23)
unreachable
Else62: ; preds = %Then59
%310 = load ptr, ptr %1, align 8
store i64 %307, ptr %27, align 8
%.sroa.2720.0..sroa_idx = getelementptr inbounds i8, ptr %27, i64 8
store ptr %310, ptr %.sroa.2720.0..sroa_idx, align 8
%311 = getelementptr i8, ptr %2, i64 160
%.val629 = load i32, ptr %311, align 8, !noalias !47293
%312 = call fastcc i16 @Sema.fail__anon_135181(ptr %1, i32 %.val629, ptr %3, ptr %27)
%.sroa.1353.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %312, ptr %.sroa.1353.0..sroa_idx, align 4
br label %common.ret
Case63: ; preds = %Then59
%313 = icmp ult i64 %307, 68
br i1 %313, label %Else65, label %Block.i571
Block.i571: ; preds = %Case63
%314 = inttoptr i64 %307 to ptr
%315 = load i64, ptr %314, align 8
%316 = icmp eq i64 %315, 92
br i1 %316, label %Then64, label %Else65
Then64: ; preds = %Block.i571
%317 = inttoptr i64 %307 to ptr
%318 = getelementptr inbounds %type.Type.Payload.ErrorSet, ptr %317, i64 0, i32 1
%319 = load ptr, ptr %318, align 8
call fastcc void @"array_hash_map.ArrayHashMapUnmanaged([]const u8,void,array_hash_map.StringContext,true).getEntry"(ptr noalias %60, ptr %319, ptr %5, i64 %6)
%320 = getelementptr inbounds { %"array_hash_map.ArrayHashMapUnmanaged([]const u8,void,array_hash_map.StringContext,true).Entry", i8, [7 x i8] }, ptr %60, i64 0, i32 1
%321 = load i8, ptr %320, align 8
%.not432 = icmp eq i8 %321, 0
br i1 %.not432, label %Block68, label %Then66
Else65: ; preds = %Block.i571, %Case63
%322 = load ptr, ptr %1, align 8
call fastcc void @Module.getErrorValue(ptr noalias %58, ptr %322, ptr %5, i64 %6)
%323 = getelementptr inbounds { %"hash_map.HashMapUnmanaged([]const u8,u32,hash_map.StringContext,80).KV", i16, [6 x i8] }, ptr %58, i64 0, i32 1
%324 = load i16, ptr %323, align 8
%.not427 = icmp eq i16 %324, 0
br i1 %.not427, label %Block72, label %TryRet70
Then66: ; preds = %Then64
%325 = load ptr, ptr %60, align 8
br label %Block72
Block68: ; preds = %Then64
%326 = load ptr, ptr %1, align 8
store ptr %5, ptr %59, align 8
%.fca.1.gep247 = getelementptr inbounds { ptr, i64 }, ptr %59, i64 0, i32 1
store i64 %6, ptr %.fca.1.gep247, align 8
%327 = getelementptr inbounds %97, ptr %59, i64 0, i32 1
store i64 %307, ptr %327, align 8
%.sroa.2685.0..sroa_idx = getelementptr inbounds %97, ptr %59, i64 0, i32 1, i32 0, i32 1
store ptr %326, ptr %.sroa.2685.0..sroa_idx, align 8
%328 = getelementptr i8, ptr %2, i64 160
%.val628 = load i32, ptr %328, align 8, !noalias !47296
%329 = call fastcc i16 @Sema.fail__anon_135114(ptr %1, i32 %.val628, ptr %3, ptr %59)
%.sroa.1249.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %329, ptr %.sroa.1249.0..sroa_idx, align 4
br label %common.ret
TryRet70: ; preds = %Else65
%.sroa.1255.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %324, ptr %.sroa.1255.0..sroa_idx, align 4
br label %common.ret
Block72: ; preds = %Then66, %Else65
%.sink = phi ptr [ %325, %Then66 ], [ %58, %Else65 ]
%330 = icmp ult i64 %307, 68
%sunkaddr783 = getelementptr inbounds i8, ptr %.sink, i64 8
%.fca.1.load = load i64, ptr %sunkaddr783, align 8
%.unpack.pn = load ptr, ptr %.sink, align 8
%331 = getelementptr inbounds %Sema.Block, ptr %2, i64 0, i32 1
%332 = load ptr, ptr %331, align 8, !noalias !47299
%333 = getelementptr inbounds %Sema, ptr %332, i64 0, i32 1
call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15)
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %333, i64 16, i1 false), !noalias !47302
%.16..16..16..16..16..16..16..16..16..16..sroa_idx776 = getelementptr inbounds i8, ptr %15, i64 16
call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.16..16..16..16..16..16..16..16..16..16..sroa_idx776, i8 0, i64 16, i1 false), !noalias !47302
%.sroa.2687.0..sroa_idx = getelementptr inbounds i8, ptr %57, i64 8
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.2687.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %15, i64 32, i1 false)
call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15)
store ptr %2, ptr %57, align 8
%.sroa.3688.0..sroa_idx = getelementptr inbounds i8, ptr %57, i64 40
store i1 false, ptr %.sroa.3688.0..sroa_idx, align 8
br i1 %330, label %type.Type.tag.exit.i575, label %Else.i.i573
Else.i.i573: ; preds = %Block72
%334 = inttoptr i64 %307 to ptr
%335 = load i64, ptr %334, align 8
br label %type.Type.tag.exit.i575
type.Type.tag.exit.i575: ; preds = %Else.i.i573, %Block72
%common.ret.op.i.i574 = phi i64 [ %335, %Else.i.i573 ], [ %307, %Block72 ]
switch i64 %common.ret.op.i.i574, label %Then73 [
i64 32, label %Else74
i64 94, label %type.Type.isAnyError.exit
]
type.Type.isAnyError.exit: ; preds = %type.Type.tag.exit.i575
%336 = inttoptr i64 %307 to ptr
%337 = load i64, ptr %336, align 8
%338 = icmp eq i64 %337, 94
%spec.select.i.i577 = select i1 %338, ptr %336, ptr null
%339 = getelementptr inbounds %type.Type.Payload.ErrorSetInferred, ptr %spec.select.i.i577, i64 0, i32 1
%340 = load ptr, ptr %339, align 8
%341 = getelementptr inbounds %Module.Fn.InferredErrorSet, ptr %340, i64 0, i32 3
%342 = load i1, ptr %341, align 1
br i1 %342, label %Else74, label %Then73
Then73: ; preds = %type.Type.isAnyError.exit, %type.Type.tag.exit.i575
store i64 %307, ptr %56, align 8
store ptr %.sroa.2687.0..sroa_idx, ptr %55, align 8, !alias.scope !47305
%.sroa.2.0..sroa_idx.i581 = getelementptr inbounds i8, ptr %55, i64 8
store ptr @heap.arena_allocator.ArenaAllocator.allocator__anon_3789, ptr %.sroa.2.0..sroa_idx.i581, align 8, !alias.scope !47305
call fastcc void @type.Type.copy(ptr noalias %54, ptr %56, ptr %55)
%343 = getelementptr inbounds { %type.Type, i16, [6 x i8] }, ptr %54, i64 0, i32 1
%344 = load i16, ptr %343, align 8
%.not431 = icmp eq i16 %344, 0
br i1 %.not431, label %Then73.Block79_crit_edge, label %TryRet75
Then73.Block79_crit_edge: ; preds = %Then73
%.pre753 = call fastcc ptr @llvm.returnaddress(i32 0)
%.pre754 = ptrtoint ptr %.pre753 to i64
br label %Block79
Else74: ; preds = %type.Type.isAnyError.exit, %type.Type.tag.exit.i575
call void @llvm.experimental.noalias.scope.decl(metadata !47308)
%345 = call fastcc ptr @llvm.returnaddress(i32 0)
%346 = ptrtoint ptr %345 to i64
%347 = call fastcc ptr @heap.arena_allocator.ArenaAllocator.alloc(ptr nonnull align 1 %.sroa.2687.0..sroa_idx, i64 24, i8 3, i64 %346) #37, !noalias !47311
%.not.i.i.i586 = icmp eq ptr %347, null
br i1 %.not.i.i.i586, label %TryRet77, label %type.Type.Tag.create__anon_135116.exit
type.Type.Tag.create__anon_135116.exit: ; preds = %Else74
%348 = ptrtoint ptr %345 to i64
store i64 93, ptr %347, align 8, !noalias !47308
%349 = getelementptr inbounds %type.Type.Payload.Name, ptr %347, i64 0, i32 1
store ptr %.unpack.pn, ptr %349, align 8, !noalias !47308
%.repack1.i = getelementptr inbounds %type.Type.Payload.Name, ptr %347, i64 0, i32 1, i32 1
store i64 %.fca.1.load, ptr %.repack1.i, align 8, !noalias !47308
%350 = getelementptr inbounds { %type.Type, i16, [6 x i8] }, ptr %53, i64 0, i32 1
store i16 0, ptr %350, align 8, !alias.scope !47308
store ptr %347, ptr %53, align 8, !alias.scope !47308
br label %Block79
TryRet75: ; preds = %Then73
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %57)
%.sroa.1260.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %344, ptr %.sroa.1260.0..sroa_idx, align 4
br label %common.ret
TryRet77: ; preds = %Else74
%.sroa.1.0..sroa_idx.i587 = getelementptr inbounds i8, ptr %53, i64 8
store i16 1, ptr %.sroa.1.0..sroa_idx.i587, align 8, !alias.scope !47308
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %57)
%.sroa.1263.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 1, ptr %.sroa.1263.0..sroa_idx, align 4
br label %common.ret
Block79: ; preds = %type.Type.Tag.create__anon_135116.exit, %Then73.Block79_crit_edge
%.pre-phi755 = phi i64 [ %.pre754, %Then73.Block79_crit_edge ], [ %348, %type.Type.Tag.create__anon_135116.exit ]
%351 = phi ptr [ %54, %Then73.Block79_crit_edge ], [ %53, %type.Type.Tag.create__anon_135116.exit ]
call void @llvm.experimental.noalias.scope.decl(metadata !47316)
%352 = call fastcc ptr @heap.arena_allocator.ArenaAllocator.alloc(ptr nonnull align 1 %.sroa.2687.0..sroa_idx, i64 24, i8 3, i64 %.pre-phi755) #37, !noalias !47319
%.not.i.i.i594 = icmp eq ptr %352, null
br i1 %.not.i.i.i594, label %TryRet80, label %TryCont81
TryRet80: ; preds = %Block79
%.sroa.1.0..sroa_idx.i595 = getelementptr inbounds i8, ptr %52, i64 8
store i16 1, ptr %.sroa.1.0..sroa_idx.i595, align 8, !alias.scope !47316
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %57)
%.sroa.1278.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 1, ptr %.sroa.1278.0..sroa_idx, align 4
br label %common.ret
TryCont81: ; preds = %Block79
%353 = getelementptr inbounds i8, ptr %352, i64 8
store i64 102, ptr %352, align 8, !noalias !47316
store ptr %.unpack.pn, ptr %353, align 8, !noalias !47316
%.sroa.2697.0..sroa_idx = getelementptr inbounds %value.Value.Payload.Error, ptr %352, i64 0, i32 1, i32 0, i32 1
store i64 %.fca.1.load, ptr %.sroa.2697.0..sroa_idx, align 8, !noalias !47316
%354 = getelementptr inbounds { %value.Value, i16, [6 x i8] }, ptr %52, i64 0, i32 1
store i16 0, ptr %354, align 8, !alias.scope !47316
store ptr %352, ptr %52, align 8, !alias.scope !47316
call fastcc void @Sema.Block.WipAnonDecl.finish(ptr noalias %51, ptr %57, ptr %351, ptr %52, i32 0)
%355 = getelementptr inbounds { i32, i16, [2 x i8] }, ptr %51, i64 0, i32 1
%356 = load i16, ptr %355, align 4
%.not430 = icmp eq i16 %356, 0
br i1 %.not430, label %TryCont83, label %TryRet82
TryRet82: ; preds = %TryCont81
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %57)
%.sroa.1281.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %356, ptr %.sroa.1281.0..sroa_idx, align 4
br label %common.ret
TryCont83: ; preds = %TryCont81
%357 = load i32, ptr %51, align 4
call fastcc void @Sema.analyzeDeclRef(ptr noalias %50, ptr %1, i32 %357)
%358 = load i64, ptr %50, align 8
store i64 %358, ptr %0, align 4
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %57)
br label %common.ret
Case84: ; preds = %Then59
%359 = call fastcc ptr @type.Type.getNamespace(i64 %307)
%.not417 = icmp eq ptr %359, null
br i1 %.not417, label %Block92, label %Then85
Then85: ; preds = %Case84
call fastcc void @Sema.namespaceLookupRef(ptr noalias %49, ptr %1, ptr %2, ptr %3, ptr %359, ptr %5, i64 %6)
%360 = getelementptr inbounds { { i32, i8, [3 x i8] }, i16, [2 x i8] }, ptr %49, i64 0, i32 1
%361 = load i16, ptr %360, align 4
%.not424 = icmp eq i16 %361, 0
br i1 %.not424, label %TryCont88, label %TryRet87
TryRet87: ; preds = %Then85
%.sroa.1285.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %361, ptr %.sroa.1285.0..sroa_idx, align 4
br label %common.ret
TryCont88: ; preds = %Then85
%.sroa.2288.0..sroa_idx = getelementptr inbounds i8, ptr %49, i64 4
%.sroa.2288.0.copyload = load i8, ptr %.sroa.2288.0..sroa_idx, align 4
%.not425 = icmp eq i8 %.sroa.2288.0.copyload, 0
br i1 %.not425, label %Block92, label %Then89
Then89: ; preds = %TryCont88
%.sroa.0287.0.copyload = load i32, ptr %49, align 4
store i32 %.sroa.0287.0.copyload, ptr %0, align 4
%.sroa.2291.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 0, ptr %.sroa.2291.0..sroa_idx, align 4
br label %common.ret
Block92: ; preds = %TryCont88, %Case84
call fastcc void @Sema.resolveTypeFields(ptr noalias %48, ptr %1, ptr %61)
%362 = getelementptr inbounds { %type.Type, i16, [6 x i8] }, ptr %48, i64 0, i32 1
%363 = load i16, ptr %362, align 8
%.not418 = icmp eq i16 %363, 0
br i1 %.not418, label %TryCont94, label %TryRet93
TryRet93: ; preds = %Block92
%.sroa.1295.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %363, ptr %.sroa.1295.0..sroa_idx, align 4
br label %common.ret
TryCont94: ; preds = %Block92
%364 = load i64, ptr %48, align 8
%365 = icmp ult i64 %364, 68
br i1 %365, label %Block106, label %type.Type.tag.exit.i599
type.Type.tag.exit.i599: ; preds = %TryCont94
%366 = inttoptr i64 %364 to ptr
%367 = load i64, ptr %366, align 8, !noalias !47324
%cond.i598 = icmp eq i64 %367, 101
br i1 %cond.i598, label %Then95, label %Block106
Then95: ; preds = %type.Type.tag.exit.i599
%368 = inttoptr i64 %364 to ptr
%369 = getelementptr inbounds %type.Type.Payload.Union, ptr %368, i64 0, i32 1
%370 = load ptr, ptr %369, align 8, !noalias !47324
%.sroa.0.0.copyload2.i = load i64, ptr %370, align 8, !noalias !47324
call fastcc void @type.Type.enumFieldIndex(ptr noalias %47, i64 %.sroa.0.0.copyload2.i, ptr %5, i64 %6)
%371 = getelementptr inbounds { i64, i8, [7 x i8] }, ptr %47, i64 0, i32 1
%372 = load i8, ptr %371, align 8
%.not420 = icmp eq i8 %372, 0
br i1 %.not420, label %Block106, label %Then97
Then97: ; preds = %Then95
%373 = load i64, ptr %47, align 8
%374 = getelementptr inbounds %Sema.Block, ptr %2, i64 0, i32 1
%375 = load ptr, ptr %374, align 8, !noalias !47327
%376 = getelementptr inbounds %Sema, ptr %375, i64 0, i32 1
call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14)
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %376, i64 16, i1 false), !noalias !47330
%.16..16..16..16..16..16..16..16..16..16..sroa_idx777 = getelementptr inbounds i8, ptr %14, i64 16
call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.16..16..16..16..16..16..16..16..16..16..sroa_idx777, i8 0, i64 16, i1 false), !noalias !47330
%.sroa.2704.0..sroa_idx = getelementptr inbounds i8, ptr %46, i64 8
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.2704.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %14, i64 32, i1 false)
call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14)
store ptr %2, ptr %46, align 8
%.sroa.3705.0..sroa_idx = getelementptr inbounds i8, ptr %46, i64 40
store i1 false, ptr %.sroa.3705.0..sroa_idx, align 8
store i64 %.sroa.0.0.copyload2.i, ptr %45, align 8
store ptr %.sroa.2704.0..sroa_idx, ptr %44, align 8, !alias.scope !47333
%.sroa.2.0..sroa_idx.i603 = getelementptr inbounds i8, ptr %44, i64 8
store ptr @heap.arena_allocator.ArenaAllocator.allocator__anon_3789, ptr %.sroa.2.0..sroa_idx.i603, align 8, !alias.scope !47333
call fastcc void @type.Type.copy(ptr noalias %43, ptr %45, ptr %44)
%377 = getelementptr inbounds { %type.Type, i16, [6 x i8] }, ptr %43, i64 0, i32 1
%378 = load i16, ptr %377, align 8
%.not421 = icmp eq i16 %378, 0
br i1 %.not421, label %TryCont100, label %TryRet99
TryRet99: ; preds = %Then97
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %46)
%.sroa.1300.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %378, ptr %.sroa.1300.0..sroa_idx, align 4
br label %common.ret
TryCont100: ; preds = %Then97
%379 = load i64, ptr %43, align 8
store i64 %379, ptr %42, align 8
call void @llvm.experimental.noalias.scope.decl(metadata !47336)
%380 = call fastcc ptr @llvm.returnaddress(i32 0)
%381 = ptrtoint ptr %380 to i64
%382 = call fastcc ptr @heap.arena_allocator.ArenaAllocator.alloc(ptr nonnull align 1 %.sroa.2704.0..sroa_idx, i64 16, i8 3, i64 %381) #37, !noalias !47339
%.not.i.i.i608 = icmp eq ptr %382, null
br i1 %.not.i.i.i608, label %TryRet101, label %TryCont102
TryRet101: ; preds = %TryCont100
%.sroa.1.0..sroa_idx.i609 = getelementptr inbounds i8, ptr %41, i64 8
store i16 1, ptr %.sroa.1.0..sroa_idx.i609, align 8, !alias.scope !47336
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %46)
%.sroa.1303.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 1, ptr %.sroa.1303.0..sroa_idx, align 4
br label %common.ret
TryCont102: ; preds = %TryCont100
%383 = trunc i64 %373 to i32
%384 = getelementptr inbounds i8, ptr %382, i64 12
store i32 -1431655766, ptr %384, align 1, !noalias !47336
store i64 101, ptr %382, align 8, !noalias !47336
%385 = getelementptr inbounds %value.Value.Payload.U32, ptr %382, i64 0, i32 1
store i32 %383, ptr %385, align 4, !noalias !47336
%386 = getelementptr inbounds { %value.Value, i16, [6 x i8] }, ptr %41, i64 0, i32 1
store i16 0, ptr %386, align 8, !alias.scope !47336
store ptr %382, ptr %41, align 8, !alias.scope !47336
call fastcc void @Sema.Block.WipAnonDecl.finish(ptr noalias %40, ptr %46, ptr %42, ptr %41, i32 0)
%387 = getelementptr inbounds { i32, i16, [2 x i8] }, ptr %40, i64 0, i32 1
%388 = load i16, ptr %387, align 4
%.not423 = icmp eq i16 %388, 0
br i1 %.not423, label %TryCont104, label %TryRet103
TryRet103: ; preds = %TryCont102
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %46)
%.sroa.1306.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %388, ptr %.sroa.1306.0..sroa_idx, align 4
br label %common.ret
TryCont104: ; preds = %TryCont102
%389 = load i32, ptr %40, align 4
call fastcc void @Sema.analyzeDeclRef(ptr noalias %39, ptr %1, i32 %389)
%390 = load i64, ptr %39, align 8
store i64 %390, ptr %0, align 4
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %46)
br label %common.ret
Block106: ; preds = %Then95, %type.Type.tag.exit.i599, %TryCont94
%391 = call fastcc i16 @Sema.failWithBadMemberAccess(ptr %1, ptr %2, ptr %61, ptr %7, ptr %5, i64 %6)
%.sroa.1310.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %391, ptr %.sroa.1310.0..sroa_idx, align 4
br label %common.ret
Case107: ; preds = %Then59
%392 = call fastcc ptr @type.Type.getNamespace(i64 %307)
%.not410 = icmp eq ptr %392, null
br i1 %.not410, label %Block115, label %Then108
Then108: ; preds = %Case107
call fastcc void @Sema.namespaceLookupRef(ptr noalias %38, ptr %1, ptr %2, ptr %3, ptr %392, ptr %5, i64 %6)
%393 = getelementptr inbounds { { i32, i8, [3 x i8] }, i16, [2 x i8] }, ptr %38, i64 0, i32 1
%394 = load i16, ptr %393, align 4
%.not415 = icmp eq i16 %394, 0
br i1 %.not415, label %TryCont111, label %TryRet110
TryRet110: ; preds = %Then108
%.sroa.1314.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %394, ptr %.sroa.1314.0..sroa_idx, align 4
br label %common.ret
TryCont111: ; preds = %Then108
%.sroa.2317.0..sroa_idx = getelementptr inbounds i8, ptr %38, i64 4
%.sroa.2317.0.copyload = load i8, ptr %.sroa.2317.0..sroa_idx, align 4
%.not416 = icmp eq i8 %.sroa.2317.0.copyload, 0
br i1 %.not416, label %Block115, label %Then112
Then112: ; preds = %TryCont111
%.sroa.0316.0.copyload = load i32, ptr %38, align 4
store i32 %.sroa.0316.0.copyload, ptr %0, align 4
%.sroa.2320.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 0, ptr %.sroa.2320.0..sroa_idx, align 4
br label %common.ret
Block115: ; preds = %TryCont111, %Case107
call fastcc void @type.Type.enumFieldIndex(ptr noalias %37, i64 %307, ptr %5, i64 %6)
%395 = getelementptr inbounds { i64, i8, [7 x i8] }, ptr %37, i64 0, i32 1
%396 = load i8, ptr %395, align 8
%.not411 = icmp eq i8 %396, 0
br i1 %.not411, label %Else117, label %Then116
Then116: ; preds = %Block115
%397 = load i64, ptr %37, align 8
%398 = getelementptr inbounds %Sema.Block, ptr %2, i64 0, i32 1
%399 = load ptr, ptr %398, align 8, !noalias !47344
%400 = getelementptr inbounds %Sema, ptr %399, i64 0, i32 1
call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13)
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(16) %400, i64 16, i1 false), !noalias !47347
%.16..16..16..16..16..16..16..16..16..16..sroa_idx778 = getelementptr inbounds i8, ptr %13, i64 16
call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.16..16..16..16..16..16..16..16..16..16..sroa_idx778, i8 0, i64 16, i1 false), !noalias !47347
%.sroa.2712.0..sroa_idx = getelementptr inbounds i8, ptr %36, i64 8
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.2712.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %13, i64 32, i1 false)
call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13)
store ptr %2, ptr %36, align 8
%.sroa.3713.0..sroa_idx = getelementptr inbounds i8, ptr %36, i64 40
store i1 false, ptr %.sroa.3713.0..sroa_idx, align 8
store i64 %307, ptr %35, align 8
store ptr %.sroa.2712.0..sroa_idx, ptr %34, align 8, !alias.scope !47350
%.sroa.2.0..sroa_idx.i613 = getelementptr inbounds i8, ptr %34, i64 8
store ptr @heap.arena_allocator.ArenaAllocator.allocator__anon_3789, ptr %.sroa.2.0..sroa_idx.i613, align 8, !alias.scope !47350
call fastcc void @type.Type.copy(ptr noalias %33, ptr %35, ptr %34)
%401 = getelementptr inbounds { %type.Type, i16, [6 x i8] }, ptr %33, i64 0, i32 1
%402 = load i16, ptr %401, align 8
%.not412 = icmp eq i16 %402, 0
br i1 %.not412, label %TryCont120, label %TryRet119
Else117: ; preds = %Block115
%403 = call fastcc i16 @Sema.failWithBadMemberAccess(ptr %1, ptr %2, ptr %61, ptr %7, ptr %5, i64 %6)
%.sroa.1324.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %403, ptr %.sroa.1324.0..sroa_idx, align 4
br label %common.ret
TryRet119: ; preds = %Then116
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %36)
%.sroa.1329.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %402, ptr %.sroa.1329.0..sroa_idx, align 4
br label %common.ret
TryCont120: ; preds = %Then116
%404 = load i64, ptr %33, align 8
store i64 %404, ptr %32, align 8
call void @llvm.experimental.noalias.scope.decl(metadata !47353)
%405 = call fastcc ptr @llvm.returnaddress(i32 0)
%406 = ptrtoint ptr %405 to i64
%407 = call fastcc ptr @heap.arena_allocator.ArenaAllocator.alloc(ptr nonnull align 1 %.sroa.2712.0..sroa_idx, i64 16, i8 3, i64 %406) #37, !noalias !47356
%.not.i.i.i618 = icmp eq ptr %407, null
br i1 %.not.i.i.i618, label %TryRet121, label %TryCont122
TryRet121: ; preds = %TryCont120
%.sroa.1.0..sroa_idx.i619 = getelementptr inbounds i8, ptr %31, i64 8
store i16 1, ptr %.sroa.1.0..sroa_idx.i619, align 8, !alias.scope !47353
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %36)
%.sroa.1332.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 1, ptr %.sroa.1332.0..sroa_idx, align 4
br label %common.ret
TryCont122: ; preds = %TryCont120
%408 = trunc i64 %397 to i32
%409 = getelementptr inbounds i8, ptr %407, i64 12
store i32 -1431655766, ptr %409, align 1, !noalias !47353
store i64 101, ptr %407, align 8, !noalias !47353
%410 = getelementptr inbounds %value.Value.Payload.U32, ptr %407, i64 0, i32 1
store i32 %408, ptr %410, align 4, !noalias !47353
%411 = getelementptr inbounds { %value.Value, i16, [6 x i8] }, ptr %31, i64 0, i32 1
store i16 0, ptr %411, align 8, !alias.scope !47353
store ptr %407, ptr %31, align 8, !alias.scope !47353
call fastcc void @Sema.Block.WipAnonDecl.finish(ptr noalias %30, ptr %36, ptr %32, ptr %31, i32 0)
%412 = getelementptr inbounds { i32, i16, [2 x i8] }, ptr %30, i64 0, i32 1
%413 = load i16, ptr %412, align 4
%.not414 = icmp eq i16 %413, 0
br i1 %.not414, label %TryCont124, label %TryRet123
TryRet123: ; preds = %TryCont122
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %36)
%.sroa.1335.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %413, ptr %.sroa.1335.0..sroa_idx, align 4
br label %common.ret
TryCont124: ; preds = %TryCont122
%414 = load i32, ptr %30, align 4
call fastcc void @Sema.analyzeDeclRef(ptr noalias %29, ptr %1, i32 %414)
%415 = load i64, ptr %29, align 8
store i64 %415, ptr %0, align 4
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %36)
br label %common.ret
Case125: ; preds = %Then59, %Then59
%416 = call fastcc ptr @type.Type.getNamespace(i64 %307)
%.not407 = icmp eq ptr %416, null
br i1 %.not407, label %Block133, label %Then126
Then126: ; preds = %Case125
call fastcc void @Sema.namespaceLookupRef(ptr noalias %28, ptr %1, ptr %2, ptr %3, ptr %416, ptr %5, i64 %6)
%417 = getelementptr inbounds { { i32, i8, [3 x i8] }, i16, [2 x i8] }, ptr %28, i64 0, i32 1
%418 = load i16, ptr %417, align 4
%.not408 = icmp eq i16 %418, 0
br i1 %.not408, label %TryCont129, label %TryRet128
TryRet128: ; preds = %Then126
%.sroa.1339.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %418, ptr %.sroa.1339.0..sroa_idx, align 4
br label %common.ret
TryCont129: ; preds = %Then126
%.sroa.2342.0..sroa_idx = getelementptr inbounds i8, ptr %28, i64 4
%.sroa.2342.0.copyload = load i8, ptr %.sroa.2342.0..sroa_idx, align 4
%.not409 = icmp eq i8 %.sroa.2342.0.copyload, 0
br i1 %.not409, label %Block133, label %Then130
Then130: ; preds = %TryCont129
%.sroa.0341.0.copyload = load i32, ptr %28, align 4
store i32 %.sroa.0341.0.copyload, ptr %0, align 4
%.sroa.2345.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 0, ptr %.sroa.2345.0..sroa_idx, align 4
br label %common.ret
Block133: ; preds = %TryCont129, %Case125
%419 = call fastcc i16 @Sema.failWithBadMemberAccess(ptr %1, ptr %2, ptr %61, ptr %7, ptr %5, i64 %6)
%.sroa.1349.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %419, ptr %.sroa.1349.0..sroa_idx, align 4
br label %common.ret
Case134: ; preds = %type.Type.zigTypeTag.exit484
br i1 %.0.i727, label %Then135, label %Block139
Then135: ; preds = %Case134
call fastcc void @Sema.analyzeLoad(ptr noalias %26, ptr %1, ptr %2, ptr %3, i32 %4, ptr %3)
%420 = getelementptr inbounds { i32, i16, [2 x i8] }, ptr %26, i64 0, i32 1
%421 = load i16, ptr %420, align 4
%.not404 = icmp eq i16 %421, 0
br i1 %.not404, label %TryCont138, label %TryRet137
TryRet137: ; preds = %Then135
%.sroa.1357.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %421, ptr %.sroa.1357.0..sroa_idx, align 4
br label %common.ret
TryCont138: ; preds = %Then135
%422 = load i32, ptr %26, align 4
br label %Block139
Block139: ; preds = %TryCont138, %Case134
%423 = phi i32 [ %422, %TryCont138 ], [ %4, %Case134 ]
call fastcc void @Sema.structFieldPtr(ptr noalias %25, ptr %1, ptr %2, ptr %3, i32 %423, ptr %5, i64 %6, ptr %7, ptr %121, i1 %8)
%424 = load i64, ptr %25, align 8
store i64 %424, ptr %0, align 4
br label %common.ret
Case140: ; preds = %type.Type.zigTypeTag.exit484
br i1 %.0.i727, label %Then141, label %Block145
Then141: ; preds = %Case140
call fastcc void @Sema.analyzeLoad(ptr noalias %24, ptr %1, ptr %2, ptr %3, i32 %4, ptr %3)
%425 = getelementptr inbounds { i32, i16, [2 x i8] }, ptr %24, i64 0, i32 1
%426 = load i16, ptr %425, align 4
%.not = icmp eq i16 %426, 0
br i1 %.not, label %TryCont144, label %TryRet143
TryRet143: ; preds = %Then141
%.sroa.1362.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %426, ptr %.sroa.1362.0..sroa_idx, align 4
br label %common.ret
TryCont144: ; preds = %Then141
%427 = load i32, ptr %24, align 4
br label %Block145
Block145: ; preds = %TryCont144, %Case140
%428 = phi i32 [ %427, %TryCont144 ], [ %4, %Case140 ]
call fastcc void @Sema.unionFieldPtr(ptr noalias %23, ptr %1, ptr %2, ptr %3, i32 %428, ptr %5, i64 %6, ptr %7, ptr %121, i1 %8)
%429 = load i64, ptr %23, align 8
store i64 %429, ptr %0, align 4
br label %common.ret
Block146: ; preds = %type.Type.isSlice.exit, %type.Type.tag.exit.i499, %type.Type.zigTypeTag.exit484
%430 = load ptr, ptr %1, align 8
store i64 %110, ptr %22, align 8
%.sroa.2722.0..sroa_idx = getelementptr inbounds i8, ptr %22, i64 8
store ptr %430, ptr %.sroa.2722.0..sroa_idx, align 8
call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9)
%431 = getelementptr i8, ptr %2, i64 160
%.val626 = load i32, ptr %431, align 8
call fastcc void @Sema.errMsg__anon_203447(ptr noalias %9, ptr %1, i32 %.val626, ptr %3, ptr %22)
%432 = getelementptr inbounds { ptr, i16, [6 x i8] }, ptr %9, i64 0, i32 1
%433 = load i16, ptr %432, align 8
%.not.i623 = icmp eq i16 %433, 0
br i1 %.not.i623, label %TryCont.i625, label %Sema.fail__anon_135183.exit
TryCont.i625: ; preds = %Block146
%434 = load ptr, ptr %9, align 8
%435 = tail call fastcc i16 @Sema.failWithOwnedErrorMsg(ptr %1, ptr %434)
br label %Sema.fail__anon_135183.exit
Sema.fail__anon_135183.exit: ; preds = %TryCont.i625, %Block146
%common.ret.op.i624 = phi i16 [ %435, %TryCont.i625 ], [ %433, %Block146 ]
call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9)
%.sroa.1367.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %common.ret.op.i624, ptr %.sroa.1367.0..sroa_idx, align 4
br label %common.ret
}
; Function Attrs: nounwind
define internal fastcc void @Sema.fieldPtr(ptr noalias nonnull writeonly %0, ptr nonnull align 8 %1, ptr nonnull align 8 %2, ptr nonnull readonly align 4 %3, i32 %4, ptr nonnull readonly align 1 %5, i64 %6, ptr nonnull readonly align 4 %7, i1 %8) unnamed_addr #1 {
Entry:
%9 = alloca %Air, align 8
%10 = alloca { { ptr, i64 }, i16, [6 x i8] }, align 8
%.sroa.7.i = alloca [3 x i8], align 1
%11 = alloca %mem.Allocator, align 8
%12 = alloca { { ptr, i64 }, i16, [6 x i8] }, align 8
%.sroa.7 = alloca [3 x i8], align 1
%13 = alloca %mem.Allocator, align 8
%14 = alloca { ptr, i16, [6 x i8] }, align 8
%15 = alloca %heap.arena_allocator.ArenaAllocator, align 8
%16 = alloca %heap.arena_allocator.ArenaAllocator, align 8
%17 = alloca %heap.arena_allocator.ArenaAllocator, align 8
%18 = alloca { ptr, i16, [6 x i8] }, align 8
%19 = alloca %heap.arena_allocator.ArenaAllocator, align 8
%20 = alloca { i16, i5, [1 x i8] }, align 2
%21 = alloca { i16, i5, [1 x i8] }, align 2
%22 = alloca %type.Type, align 8
%23 = alloca %29, align 8
%24 = alloca { i32, i16, [2 x i8] }, align 8
%25 = alloca { i32, i16, [2 x i8] }, align 4
%26 = alloca { i32, i16, [2 x i8] }, align 8
%27 = alloca { i32, i16, [2 x i8] }, align 4
%28 = alloca %29, align 8
%29 = alloca { { i32, i8, [3 x i8] }, i16, [2 x i8] }, align 4
%30 = alloca { i32, i16, [2 x i8] }, align 8
%31 = alloca { i32, i16, [2 x i8] }, align 4
%32 = alloca { %value.Value, i16, [6 x i8] }, align 8
%33 = alloca %type.Type, align 8
%34 = alloca { %type.Type, i16, [6 x i8] }, align 8
%35 = alloca %mem.Allocator, align 8
%36 = alloca %type.Type, align 8
%37 = alloca %Sema.Block.WipAnonDecl, align 8
%38 = alloca { i64, i8, [7 x i8] }, align 8
%39 = alloca { { i32, i8, [3 x i8] }, i16, [2 x i8] }, align 4
%40 = alloca { i32, i16, [2 x i8] }, align 8
%41 = alloca { i32, i16, [2 x i8] }, align 4
%42 = alloca { %value.Value, i16, [6 x i8] }, align 8
%43 = alloca %type.Type, align 8
%44 = alloca { %type.Type, i16, [6 x i8] }, align 8
%45 = alloca %mem.Allocator, align 8
%46 = alloca %type.Type, align 8
%47 = alloca %Sema.Block.WipAnonDecl, align 8
%48 = alloca { i64, i8, [7 x i8] }, align 8
%49 = alloca { %type.Type, i16, [6 x i8] }, align 8
%50 = alloca { { i32, i8, [3 x i8] }, i16, [2 x i8] }, align 4
%51 = alloca { i32, i16, [2 x i8] }, align 8
%52 = alloca { i32, i16, [2 x i8] }, align 4
%53 = alloca { %value.Value, i16, [6 x i8] }, align 8
%54 = alloca { %type.Type, i16, [6 x i8] }, align 8
%55 = alloca { %type.Type, i16, [6 x i8] }, align 8
%56 = alloca %mem.Allocator, align 8
%57 = alloca %type.Type, align 8
%58 = alloca %Sema.Block.WipAnonDecl, align 8
%59 = alloca { %"hash_map.HashMapUnmanaged([]const u8,u32,hash_map.StringContext,80).KV", i16, [6 x i8] }, align 8
%60 = alloca %97, align 8
%61 = alloca { %"array_hash_map.ArrayHashMapUnmanaged([]const u8,void,array_hash_map.StringContext,true).Entry", i8, [7 x i8] }, align 8
%62 = alloca %type.Type, align 8
%63 = alloca %type.Type.Payload.Bits, align 8
%64 = alloca { { %value.Value, i8, [7 x i8] }, i16, [6 x i8] }, align 8
%65 = alloca { i32, i16, [2 x i8] }, align 4
%66 = alloca { i32, i16, [2 x i8] }, align 4
%67 = alloca { %value.Value, i16, [6 x i8] }, align 8
%68 = alloca %97, align 8
%69 = alloca { i32, i16, [2 x i8] }, align 8
%70 = alloca { i32, i16, [2 x i8] }, align 8
%71 = alloca { %value.Value, i16, [6 x i8] }, align 8
%72 = alloca { { %value.Value, i8, [7 x i8] }, i16, [6 x i8] }, align 8
%73 = alloca { %type.Type, i16, [6 x i8] }, align 8
%74 = alloca %type.Type.Payload.Pointer.Data, align 8
%75 = alloca %mem.Allocator, align 8
%76 = alloca { i32, i16, [2 x i8] }, align 8
%77 = alloca { i32, i16, [2 x i8] }, align 8
%78 = alloca { %value.Value, i16, [6 x i8] }, align 8
%79 = alloca { { %value.Value, i8, [7 x i8] }, i16, [6 x i8] }, align 8
%80 = alloca { %type.Type, i16, [6 x i8] }, align 8
%81 = alloca %type.Type.Payload.Pointer.Data, align 8
%82 = alloca %mem.Allocator, align 8
%83 = alloca %type.Type, align 8
%84 = alloca { i32, i16, [2 x i8] }, align 4
%85 = alloca %97, align 8
%86 = alloca { i32, i16, [2 x i8] }, align 8
%87 = alloca { i32, i16, [2 x i8] }, align 4
%88 = alloca { %value.Value, i16, [6 x i8] }, align 8
%89 = alloca %Sema.Block.WipAnonDecl, align 8
%90 = alloca %type.Type, align 8
%91 = alloca %29, align 8
%92 = alloca %type.Type, align 8
%.sroa.1.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %1, i64 120
%.sroa.1.0.copyload.i.i = load ptr, ptr %.sroa.1.0..sroa_idx.i.i, align 8, !noalias !47228
%.sroa.2.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %1, i64 128
%.sroa.2.0.copyload.i.i = load i64, ptr %.sroa.2.0..sroa_idx.i.i, align 8, !noalias !47228
%.sroa.3.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %1, i64 136
%.sroa.3.0.copyload.i.i = load i64, ptr %.sroa.3.0..sroa_idx.i.i, align 8, !noalias !47228
%93 = getelementptr inbounds %Sema, ptr %1, i64 0, i32 6
%.unpack.i.i = load ptr, ptr %93, align 8, !noalias !47228
%.elt11.i.i = getelementptr inbounds %Sema, ptr %1, i64 0, i32 6, i32 0, i32 1
%.unpack12.i.i = load i64, ptr %.elt11.i.i, align 8, !noalias !47228
%94 = getelementptr inbounds %Sema, ptr %1, i64 0, i32 7
%.unpack15.i.i = load ptr, ptr %94, align 8, !noalias !47228
%.elt16.i.i = getelementptr inbounds %Sema, ptr %1, i64 0, i32 7, i32 0, i32 1
%.unpack17.i.i = load i64, ptr %.elt16.i.i, align 8, !noalias !47228
call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11), !noalias !47233
call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %9), !noalias !47233
%95 = icmp ult i32 %4, 76
br i1 %95, label %Then.i.i, label %Block.i.i
Then.i.i: ; preds = %Entry
%96 = zext i32 %4 to i64
%97 = getelementptr inbounds [76 x %TypedValue], ptr @2772, i64 0, i64 %96
br label %Sema.typeOf.exit
Block.i.i: ; preds = %Entry
%98 = shl nuw i64 %.sroa.3.0.copyload.i.i, 3
%99 = getelementptr inbounds i8, ptr %.sroa.1.0.copyload.i.i, i64 %98
store ptr %99, ptr %9, align 8, !noalias !47234
%.sroa.22.0..sroa_idx.i = getelementptr inbounds i8, ptr %9, i64 8
store ptr %.sroa.1.0.copyload.i.i, ptr %.sroa.22.0..sroa_idx.i, align 8, !noalias !47234
%.sroa.33.0..sroa_idx.i = getelementptr inbounds i8, ptr %9, i64 16
store i64 %.sroa.2.0.copyload.i.i, ptr %.sroa.33.0..sroa_idx.i, align 8, !noalias !47234
%.sroa.44.0..sroa_idx.i = getelementptr inbounds i8, ptr %9, i64 24
store i64 %.sroa.3.0.copyload.i.i, ptr %.sroa.44.0..sroa_idx.i, align 8, !noalias !47234
%.sroa.55.0..sroa_idx.i = getelementptr inbounds i8, ptr %9, i64 32
store ptr %.unpack.i.i, ptr %.sroa.55.0..sroa_idx.i, align 8, !noalias !47234
%.sroa.66.0..sroa_idx.i = getelementptr inbounds i8, ptr %9, i64 40
store i64 %.unpack12.i.i, ptr %.sroa.66.0..sroa_idx.i, align 8, !noalias !47234
%.sroa.77.0..sroa_idx.i = getelementptr inbounds i8, ptr %9, i64 48
store ptr %.unpack15.i.i, ptr %.sroa.77.0..sroa_idx.i, align 8, !noalias !47234
%.sroa.88.0..sroa_idx.i = getelementptr inbounds i8, ptr %9, i64 56
store i64 %.unpack17.i.i, ptr %.sroa.88.0..sroa_idx.i, align 8, !noalias !47234
%100 = add i32 %4, -76
call fastcc void @Air.typeOfIndex(ptr noalias %11, ptr %9, i32 %100), !noalias !47234
br label %Sema.typeOf.exit
Sema.typeOf.exit: ; preds = %Block.i.i, %Then.i.i
%storemerge.in.i.i = phi ptr [ %97, %Then.i.i ], [ %11, %Block.i.i ]
%storemerge.i.i = load i64, ptr %storemerge.in.i.i, align 8, !noalias !47234
call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11), !noalias !47233
call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %9), !noalias !47233
call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9)
call fastcc void @type.Type.zigTypeTagOrPoison(ptr noalias %9, i64 %storemerge.i.i)
%101 = load i16, ptr %9, align 2
%102 = icmp eq i16 %101, 0
br i1 %102, label %type.Type.zigTypeTag.exit, label %Else.i
Else.i: ; preds = %Sema.typeOf.exit
tail call fastcc void @builtin.default_panic(ptr @builtin.panic_messages.unwrap_error__anon_7066, i64 23)
unreachable
type.Type.zigTypeTag.exit: ; preds = %Sema.typeOf.exit
%103 = getelementptr inbounds { i16, i5, [1 x i8] }, ptr %9, i64 0, i32 1
%104 = load i5, ptr %103, align 2
call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9)
%cond = icmp eq i5 %104, 6
br i1 %cond, label %Case, label %Else
common.ret: ; preds = %Sema.fail__anon_135183.exit, %Block145, %TryRet143, %Block139, %TryRet137, %Block133, %Then130, %TryRet128, %TryCont124, %TryRet123, %TryRet121, %TryRet119, %Else117, %Then112, %TryRet110, %Block106, %TryCont104, %TryRet103, %TryRet101, %TryRet99, %TryRet93, %Then89, %TryRet87, %TryCont83, %TryRet82, %TryRet80, %TryRet77, %TryRet75, %TryRet70, %Block68, %Else62, %TryRet56, %TryRet52, %TryRet50, %TryCont47, %TryRet46, %TryCont44, %TryRet43, %TryRet39, %TryRet37, %Sema.fail__anon_135111.exit, %TryCont34, %TryRet33, %TryCont31, %TryRet30, %TryRet26, %TryRet24, %TryRet22, %TryRet14, %TryCont8, %TryRet7, %Sema.Block.WipAnonDecl.deinit.exit, %Sema.fail__anon_135069.exit, %Sema.fail__anon_135062.exit
ret void
Else: ; preds = %type.Type.zigTypeTag.exit
%105 = load ptr, ptr %1, align 8
store i64 %storemerge.i.i, ptr %91, align 8
%.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %91, i64 8
store ptr %105, ptr %.sroa.2.0..sroa_idx, align 8
call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %.sroa.7.i)
call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11)
%106 = getelementptr inbounds %Sema.Block, ptr %2, i64 0, i32 13
%107 = load i32, ptr %106, align 8, !noalias !47237
%108 = getelementptr i8, ptr %105, i64 696
%.val.i626 = load ptr, ptr %108, align 8, !noalias !47237
%109 = zext i32 %107 to i64
%110 = add nuw nsw i64 %109, 1
%111 = tail call i64 @llvm.ctlz.i64(i64 %110, i1 true), !range !1878
%112 = xor i64 %111, 63
%.neg.i.i.i.i.i = shl nsw i64 -1, %112
%113 = add nsw i64 %.neg.i.i.i.i.i, %110
%114 = getelementptr inbounds ptr, ptr %.val.i626, i64 %112
%115 = load ptr, ptr %114, align 8, !noalias !47237
%116 = getelementptr inbounds %Sema, ptr %1, i64 0, i32 1
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %116, i64 16, i1 false), !noalias !47237
%117 = load i64, ptr %3, align 4
%.sroa.4743.0..sroa_idx = getelementptr inbounds i8, ptr %3, i64 8
%.sroa.4743.0.copyload = load i7, ptr %.sroa.4743.0..sroa_idx, align 4, !noalias !47237
%.sroa.5746.0..sroa_idx = getelementptr inbounds i8, ptr %3, i64 9
%switch.i.i627 = icmp ult i7 %.sroa.4743.0.copyload, 5
%118 = getelementptr %Module.Decl, ptr %115, i64 %113, i32 5
%.val3.i.i = load ptr, ptr %118, align 8, !noalias !47240
%119 = getelementptr i8, ptr %.val3.i.i, i64 8
%.val3.val.i.i = load ptr, ptr %119, align 8, !noalias !47240
br i1 %switch.i.i627, label %Module.LazySrcLoc.toSrcLoc.exit.i, label %Case1.i.i
Case1.i.i: ; preds = %Else
%120 = getelementptr inbounds %Module.Decl, ptr %115, i64 %113, i32 11
%121 = load i32, ptr %120, align 8, !noalias !47240
br label %Module.LazySrcLoc.toSrcLoc.exit.i
Module.LazySrcLoc.toSrcLoc.exit.i: ; preds = %Case1.i.i, %Else
%.sink.i.i = phi i32 [ %121, %Case1.i.i ], [ 0, %Else ]
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %.sroa.7.i, ptr noundef nonnull align 1 dereferenceable(3) %.sroa.5746.0..sroa_idx, i64 3, i1 false)
%.sroa.0753.0.copyload = load ptr, ptr %11, align 8, !noalias !47243
%.sroa.4754.0..sroa_idx = getelementptr inbounds i8, ptr %11, i64 8
%.sroa.4754.0.copyload = load ptr, ptr %.sroa.4754.0..sroa_idx, align 8, !noalias !47243
%122 = tail call fastcc ptr @llvm.returnaddress(i32 0)
%123 = ptrtoint ptr %122 to i64
%124 = load ptr, ptr %.sroa.4754.0.copyload, align 8, !noalias !47246
%125 = tail call fastcc ptr %124(ptr nonnull align 1 %.sroa.0753.0.copyload, i64 72, i8 3, i64 %123) #37, !noalias !47246
%.not.i.i637 = icmp eq ptr %125, null
br i1 %.not.i.i637, label %Sema.errMsg__anon_203419.exit.thread, label %TryCont.i.i
TryCont.i.i: ; preds = %Module.LazySrcLoc.toSrcLoc.exit.i
tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(72) %125, i8 -86, i64 72, i1 false), !noalias !47246
call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9)
call fastcc void @fmt.allocPrint__anon_225998(ptr noalias %9, ptr %11, ptr %91), !noalias !47251
%126 = getelementptr inbounds { { ptr, i64 }, i16, [6 x i8] }, ptr %9, i64 0, i32 1
%127 = load i16, ptr %126, align 8, !noalias !47251
%.not.i630 = icmp eq i16 %127, 0
br i1 %.not.i630, label %TryCont.i, label %TryRet1.i.i
TryRet1.i.i: ; preds = %TryCont.i.i
%128 = ptrtoint ptr %122 to i64
call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9)
%129 = getelementptr i8, ptr %.sroa.4754.0.copyload, i64 16
%.val10.val.i.i = load ptr, ptr %129, align 8, !noalias !47243
tail call fastcc void %.val10.val.i.i(ptr nonnull align 1 %.sroa.0753.0.copyload, ptr nonnull align 1 %125, i64 72, i8 3, i64 %128) #37, !noalias !47243
br label %Sema.errMsg__anon_203419.exit.thread
Sema.errMsg__anon_203419.exit.thread: ; preds = %TryRet1.i.i, %Module.LazySrcLoc.toSrcLoc.exit.i
%.sroa.4752.0.ph = phi i16 [ 1, %Module.LazySrcLoc.toSrcLoc.exit.i ], [ %127, %TryRet1.i.i ]
call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %.sroa.7.i)
call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11)
br label %Sema.fail__anon_135062.exit
TryCont.i: ; preds = %TryCont.i.i
%.fca.0.load.i = load ptr, ptr %9, align 8, !noalias !47251
%.fca.1.gep.i = getelementptr inbounds { ptr, i64 }, ptr %9, i64 0, i32 1
%.fca.1.load.i = load i64, ptr %.fca.1.gep.i, align 8, !noalias !47251
call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9)
store ptr %.val3.val.i.i, ptr %125, align 8, !noalias !47243
%.sroa.4759.0..sroa.0755.0..sroa_idx = getelementptr inbounds i8, ptr %125, i64 8
store i32 %.sink.i.i, ptr %.sroa.4759.0..sroa.0755.0..sroa_idx, align 8, !noalias !47243
%.sroa.5760.0..sroa.0755.0..sroa_idx = getelementptr inbounds i8, ptr %125, i64 12
store i64 %117, ptr %.sroa.5760.0..sroa.0755.0..sroa_idx, align 4
%.sroa.6761.0..sroa.0755.0..sroa_idx = getelementptr inbounds i8, ptr %125, i64 20
store i7 %.sroa.4743.0.copyload, ptr %.sroa.6761.0..sroa.0755.0..sroa_idx, align 4, !noalias !47243
%.sroa.7762.0..sroa.0755.0..sroa_idx = getelementptr inbounds i8, ptr %125, i64 21
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %.sroa.7762.0..sroa.0755.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(3) %.sroa.7.i, i64 3, i1 false)
%.sroa.8763.0..sroa.0755.0..sroa_idx = getelementptr inbounds i8, ptr %125, i64 24
store ptr %.fca.0.load.i, ptr %.sroa.8763.0..sroa.0755.0..sroa_idx, align 8, !noalias !47243
%.sroa.9.0..sroa.0755.0..sroa_idx = getelementptr inbounds i8, ptr %125, i64 32
store i64 %.fca.1.load.i, ptr %.sroa.9.0..sroa.0755.0..sroa_idx, align 8, !noalias !47243
%.sroa.10.0..sroa.0755.0..sroa_idx = getelementptr inbounds i8, ptr %125, i64 40
tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.10.0..sroa.0755.0..sroa_idx, i8 0, i64 32, i1 false)
call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %.sroa.7.i)
call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11)
%130 = tail call fastcc i16 @Sema.failWithOwnedErrorMsg(ptr %1, ptr %125)
br label %Sema.fail__anon_135062.exit
Sema.fail__anon_135062.exit: ; preds = %TryCont.i, %Sema.errMsg__anon_203419.exit.thread
%common.ret.op.i = phi i16 [ %130, %TryCont.i ], [ %.sroa.4752.0.ph, %Sema.errMsg__anon_203419.exit.thread ]
%.sroa.1.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %common.ret.op.i, ptr %.sroa.1.0..sroa_idx, align 4
br label %common.ret
Case: ; preds = %type.Type.zigTypeTag.exit
call fastcc void @type.Type.childType(ptr noalias %92, i64 %storemerge.i.i)
%131 = load i64, ptr %92, align 8
%132 = icmp ult i64 %131, 68
br i1 %132, label %type.Type.tag.exit.i, label %Else.i.i
Else.i.i: ; preds = %Case
%133 = inttoptr i64 %131 to ptr
%134 = load i64, ptr %133, align 8
br label %type.Type.tag.exit.i
type.Type.tag.exit.i: ; preds = %Else.i.i, %Case
%common.ret.op.i.i = phi i64 [ %134, %Else.i.i ], [ %131, %Case ]
switch i64 %common.ret.op.i.i, label %Block2 [
i64 75, label %type.Type.isSinglePointer.exit
i64 76, label %Then
i64 77, label %Then
i64 58, label %Then
i64 66, label %Then
i64 65, label %Then
]
type.Type.isSinglePointer.exit: ; preds = %type.Type.tag.exit.i
%135 = inttoptr i64 %131 to ptr
%136 = load i64, ptr %135, align 8
%137 = icmp eq i64 %136, 75
%spec.select.i.i = select i1 %137, ptr %135, ptr null
%138 = getelementptr inbounds %type.Type.Payload.Pointer, ptr %spec.select.i.i, i64 0, i32 1, i32 10
%139 = load i2, ptr %138, align 1
%140 = icmp eq i2 %139, 0
br i1 %140, label %Then, label %Block2
Then: ; preds = %type.Type.isSinglePointer.exit, %type.Type.tag.exit.i, %type.Type.tag.exit.i, %type.Type.tag.exit.i, %type.Type.tag.exit.i, %type.Type.tag.exit.i
call fastcc void @type.Type.childType(ptr noalias %90, i64 %131)
%.pre = load i64, ptr %90, align 8
br label %Block2
Block2: ; preds = %Then, %type.Type.isSinglePointer.exit, %type.Type.tag.exit.i
%141 = phi i64 [ %.pre, %Then ], [ %131, %type.Type.isSinglePointer.exit ], [ %131, %type.Type.tag.exit.i ]
%.0.i777 = phi i1 [ true, %Then ], [ false, %type.Type.isSinglePointer.exit ], [ false, %type.Type.tag.exit.i ]
%142 = phi ptr [ %90, %Then ], [ %92, %type.Type.isSinglePointer.exit ], [ %92, %type.Type.tag.exit.i ]
call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9)
call fastcc void @type.Type.zigTypeTagOrPoison(ptr noalias %9, i64 %141)
%143 = load i16, ptr %9, align 2
%144 = icmp eq i16 %143, 0
br i1 %144, label %type.Type.zigTypeTag.exit484, label %Else.i483
Else.i483: ; preds = %Block2
tail call fastcc void @builtin.default_panic(ptr @builtin.panic_messages.unwrap_error__anon_7066, i64 23)
unreachable
type.Type.zigTypeTag.exit484: ; preds = %Block2
%145 = getelementptr inbounds { i16, i5, [1 x i8] }, ptr %9, i64 0, i32 1
%146 = load i5, ptr %145, align 2
call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9)
%147 = zext i5 %146 to i32
switch i32 %147, label %Block146 [
i32 7, label %Case4
i32 6, label %Case9
i32 0, label %Case49
i32 8, label %Case134
i32 17, label %Case140
]
Case4: ; preds = %type.Type.zigTypeTag.exit484
%.not.i485 = icmp eq i64 %6, 3
br i1 %.not.i485, label %Block.i, label %Else6
Block.i: ; preds = %Case4
%.not799 = icmp eq ptr %5, @958
br i1 %.not799, label %Then5, label %Then4.i.preheader
Then4.i.preheader: ; preds = %Block.i
%148 = load i8, ptr %5, align 1
%.not14.i = icmp eq i8 %148, 108
br i1 %.not14.i, label %Loop.i, label %Else6
Loop.i: ; preds = %Then4.i.preheader
%149 = getelementptr inbounds i8, ptr %5, i64 1
%150 = load i8, ptr %149, align 1
%.not14.i.1 = icmp eq i8 %150, 101
br i1 %.not14.i.1, label %Loop.i.1, label %Else6
Loop.i.1: ; preds = %Loop.i
%151 = getelementptr inbounds i8, ptr %5, i64 2
%152 = load i8, ptr %151, align 1
%.not14.i.2 = icmp eq i8 %152, 110
br i1 %.not14.i.2, label %Then5, label %Else6
Then5: ; preds = %Loop.i.1, %Block.i
%153 = getelementptr inbounds %Sema.Block, ptr %2, i64 0, i32 1
%154 = load ptr, ptr %153, align 8, !noalias !47254
%155 = getelementptr inbounds %Sema, ptr %154, i64 0, i32 1
call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19)
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %155, i64 16, i1 false), !noalias !47257
%.16..16..16..16..16..16..16..16..16..16..sroa_idx = getelementptr inbounds i8, ptr %19, i64 16
call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.16..16..16..16..16..16..16..16..16..16..sroa_idx, i8 0, i64 16, i1 false), !noalias !47257
%.sroa.2660.0..sroa_idx = getelementptr inbounds i8, ptr %89, i64 8
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.2660.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %19, i64 32, i1 false)
call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19)
store ptr %2, ptr %89, align 8
%.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %89, i64 40
store i1 false, ptr %.sroa.3.0..sroa_idx, align 8
%156 = tail call fastcc i64 @type.Type.arrayLen(i64 %141)
tail call void @llvm.experimental.noalias.scope.decl(metadata !47260)
%157 = tail call fastcc ptr @llvm.returnaddress(i32 0)
%158 = ptrtoint ptr %157 to i64
%159 = call fastcc ptr @heap.arena_allocator.ArenaAllocator.alloc(ptr nonnull align 1 %.sroa.2660.0..sroa_idx, i64 16, i8 3, i64 %158) #37, !noalias !47263
%.not.i.i.i = icmp eq ptr %159, null
br i1 %.not.i.i.i, label %TryRet, label %TryCont
Else6: ; preds = %Loop.i.1, %Loop.i, %Then4.i.preheader, %Case4
%160 = load ptr, ptr %1, align 8
store ptr %5, ptr %85, align 8
%.fca.1.gep = getelementptr inbounds { ptr, i64 }, ptr %85, i64 0, i32 1
store i64 %6, ptr %.fca.1.gep, align 8
%161 = getelementptr inbounds %97, ptr %85, i64 0, i32 1
store i64 %131, ptr %161, align 8
%.sroa.2664.0..sroa_idx = getelementptr inbounds %97, ptr %85, i64 0, i32 1, i32 0, i32 1
store ptr %160, ptr %.sroa.2664.0..sroa_idx, align 8
call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9)
%162 = getelementptr i8, ptr %2, i64 160
%.val641 = load i32, ptr %162, align 8
call fastcc void @Sema.errMsg__anon_203423(ptr noalias %9, ptr %1, i32 %.val641, ptr %7, ptr %85)
%163 = getelementptr inbounds { ptr, i16, [6 x i8] }, ptr %9, i64 0, i32 1
%164 = load i16, ptr %163, align 8
%.not.i489 = icmp eq i16 %164, 0
br i1 %.not.i489, label %TryCont.i491, label %Sema.fail__anon_135069.exit
TryCont.i491: ; preds = %Else6
%165 = load ptr, ptr %9, align 8
%166 = tail call fastcc i16 @Sema.failWithOwnedErrorMsg(ptr %1, ptr %165)
br label %Sema.fail__anon_135069.exit
Sema.fail__anon_135069.exit: ; preds = %TryCont.i491, %Else6
%common.ret.op.i490 = phi i16 [ %166, %TryCont.i491 ], [ %164, %Else6 ]
call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9)
%.sroa.1158.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %common.ret.op.i490, ptr %.sroa.1158.0..sroa_idx, align 4
br label %common.ret
TryRet: ; preds = %Then5
%.sroa.1.0..sroa_idx.i = getelementptr inbounds i8, ptr %88, i64 8
store i16 1, ptr %.sroa.1.0..sroa_idx.i, align 8, !alias.scope !47260
%sunkaddr = getelementptr inbounds i8, ptr %89, i64 40
%167 = load i1, ptr %sunkaddr, align 8
br i1 %167, label %Sema.Block.WipAnonDecl.deinit.exit, label %Then.i
Then.i: ; preds = %TryRet
%168 = getelementptr inbounds %Sema.Block.WipAnonDecl, ptr %89, i64 0, i32 1, i32 1
%169 = load ptr, ptr %168, align 8
%.not4.i.i = icmp eq ptr %169, null
br i1 %.not4.i.i, label %Sema.Block.WipAnonDecl.deinit.exit, label %Then.lr.ph.i.i
Then.lr.ph.i.i: ; preds = %Then.i
%.sroa.2.0..sroa_idx.i.i492 = getelementptr inbounds %Sema.Block.WipAnonDecl, ptr %89, i64 0, i32 1, i32 0, i32 1
%.sroa.2.0.copyload.i.i495 = load ptr, ptr %.sroa.2.0..sroa_idx.i.i492, align 8
%sunkaddr838 = getelementptr inbounds i8, ptr %89, i64 8
%.sroa.0.0.copyload.i.i = load ptr, ptr %sunkaddr838, align 8
br label %Then.i.i494
Then.i.i494: ; preds = %mem.Allocator.free__anon_3793.exit.i.i, %Then.lr.ph.i.i
%.05.i.i = phi ptr [ %169, %Then.lr.ph.i.i ], [ %170, %mem.Allocator.free__anon_3793.exit.i.i ]
%170 = load ptr, ptr %.05.i.i, align 8
%171 = getelementptr inbounds %"linked_list.SinglyLinkedList([]u8).Node", ptr %.05.i.i, i64 0, i32 1
%.unpack.i.i493 = load ptr, ptr %171, align 8
%.elt2.i.i = getelementptr inbounds %"linked_list.SinglyLinkedList([]u8).Node", ptr %.05.i.i, i64 0, i32 1, i32 1
%.unpack3.i.i = load i64, ptr %.elt2.i.i, align 8
%172 = icmp eq i64 %.unpack3.i.i, 0
%173 = insertvalue { ptr, i64 } undef, ptr %.unpack.i.i493, 0
%174 = insertvalue { ptr, i64 } %173, i64 %.unpack3.i.i, 1
%common.ret.op.i.i.i.i = select i1 %172, { ptr, i64 } { ptr inttoptr (i64 -6148914691236517206 to ptr), i64 0 }, { ptr, i64 } %174
%175 = extractvalue { ptr, i64 } %common.ret.op.i.i.i.i, 1
%176 = icmp eq i64 %175, 0
br i1 %176, label %mem.Allocator.free__anon_3793.exit.i.i, label %Block.i.i.i
Block.i.i.i: ; preds = %Then.i.i494
%177 = ptrtoint ptr %157 to i64
%178 = extractvalue { ptr, i64 } %common.ret.op.i.i.i.i, 0
tail call void @llvm.memset.p0.i64(ptr align 1 %178, i8 -86, i64 %175, i1 false)
%sunkaddr839 = getelementptr inbounds i8, ptr %.sroa.2.0.copyload.i.i495, i64 16
%179 = load ptr, ptr %sunkaddr839, align 8
tail call fastcc void %179(ptr nonnull align 1 %.sroa.0.0.copyload.i.i, ptr nonnull align 1 %178, i64 %175, i8 0, i64 %177) #37
br label %mem.Allocator.free__anon_3793.exit.i.i
mem.Allocator.free__anon_3793.exit.i.i: ; preds = %Block.i.i.i, %Then.i.i494
%.not.i.i = icmp eq ptr %170, null
br i1 %.not.i.i, label %Sema.Block.WipAnonDecl.deinit.exit, label %Then.i.i494
Sema.Block.WipAnonDecl.deinit.exit: ; preds = %mem.Allocator.free__anon_3793.exit.i.i, %Then.i, %TryRet
%.sroa.1151.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 1, ptr %.sroa.1151.0..sroa_idx, align 4
br label %common.ret
TryCont: ; preds = %Then5
store i64 77, ptr %159, align 8, !noalias !47260
%180 = getelementptr inbounds %value.Value.Payload.U64, ptr %159, i64 0, i32 1
store i64 %156, ptr %180, align 8, !noalias !47260
%181 = getelementptr inbounds { %value.Value, i16, [6 x i8] }, ptr %88, i64 0, i32 1
store i16 0, ptr %181, align 8, !alias.scope !47260
store ptr %159, ptr %88, align 8, !alias.scope !47260
call fastcc void @Sema.Block.WipAnonDecl.finish(ptr noalias %87, ptr %89, ptr @3160, ptr %88, i32 0)
%182 = getelementptr inbounds { i32, i16, [2 x i8] }, ptr %87, i64 0, i32 1
%183 = load i16, ptr %182, align 4
%.not450 = icmp eq i16 %183, 0
br i1 %.not450, label %TryCont8, label %TryRet7
TryRet7: ; preds = %TryCont
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %89)
%.sroa.1154.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %183, ptr %.sroa.1154.0..sroa_idx, align 4
br label %common.ret
TryCont8: ; preds = %TryCont
%184 = load i32, ptr %87, align 4
call fastcc void @Sema.analyzeDeclRef(ptr noalias %86, ptr %1, i32 %184)
%185 = load i64, ptr %86, align 8
store i64 %185, ptr %0, align 4
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %89)
br label %common.ret
Case9: ; preds = %type.Type.zigTypeTag.exit484
%186 = icmp ult i64 %141, 68
br i1 %186, label %type.Type.tag.exit.i499, label %Else.i.i497
Else.i.i497: ; preds = %Case9
%187 = inttoptr i64 %141 to ptr
%188 = load i64, ptr %187, align 8
br label %type.Type.tag.exit.i499
type.Type.tag.exit.i499: ; preds = %Else.i.i497, %Case9
%common.ret.op.i.i498 = phi i64 [ %188, %Else.i.i497 ], [ %141, %Case9 ]
switch i64 %common.ret.op.i.i498, label %Block146 [
i64 75, label %type.Type.isSlice.exit
i64 82, label %Then10
i64 83, label %Then10
i64 59, label %Then10
i64 60, label %Then10
]
type.Type.isSlice.exit: ; preds = %type.Type.tag.exit.i499
%189 = inttoptr i64 %141 to ptr
%190 = load i64, ptr %189, align 8
%191 = icmp eq i64 %190, 75
%spec.select.i.i500 = select i1 %191, ptr %189, ptr null
%192 = getelementptr inbounds %type.Type.Payload.Pointer, ptr %spec.select.i.i500, i64 0, i32 1, i32 10
%193 = load i2, ptr %192, align 1
%194 = icmp eq i2 %193, -2
br i1 %194, label %Then10, label %Block146
Then10: ; preds = %type.Type.isSlice.exit, %type.Type.tag.exit.i499, %type.Type.tag.exit.i499, %type.Type.tag.exit.i499, %type.Type.tag.exit.i499
br i1 %.0.i777, label %Then12, label %Block16
Then12: ; preds = %Then10
call fastcc void @Sema.analyzeLoad(ptr noalias %84, ptr %1, ptr %2, ptr %3, i32 %4, ptr %3)
%195 = getelementptr inbounds { i32, i16, [2 x i8] }, ptr %84, i64 0, i32 1
%196 = load i16, ptr %195, align 4
%.not448 = icmp eq i16 %196, 0
br i1 %.not448, label %TryCont15, label %TryRet14
TryRet14: ; preds = %Then12
%.sroa.1162.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %196, ptr %.sroa.1162.0..sroa_idx, align 4
br label %common.ret
TryCont15: ; preds = %Then12
%197 = load i32, ptr %84, align 4
br label %Block16
Block16: ; preds = %TryCont15, %Then10
%..sroa.speculated = phi i64 [ %storemerge.i.i, %Then10 ], [ %131, %TryCont15 ]
%198 = phi i32 [ %4, %Then10 ], [ %197, %TryCont15 ]
%.not.i505 = icmp eq i64 %6, 3
br i1 %.not.i505, label %Block.i508, label %Else36
Block.i508: ; preds = %Block16
%.not797 = icmp eq ptr %5, @json.stringify__anon_115004__anon_146671
br i1 %.not797, label %Then20, label %Then4.i513.preheader
Then4.i513.preheader: ; preds = %Block.i508
%199 = load i8, ptr %5, align 1
%.not14.i512 = icmp eq i8 %199, 112
br i1 %.not14.i512, label %Loop.i510, label %Block.i523
Loop.i510: ; preds = %Then4.i513.preheader
%200 = getelementptr inbounds i8, ptr %5, i64 1
%201 = load i8, ptr %200, align 1
%.not14.i512.1 = icmp eq i8 %201, 116
br i1 %.not14.i512.1, label %Loop.i510.1, label %Block.i523
Loop.i510.1: ; preds = %Loop.i510
%202 = getelementptr inbounds i8, ptr %5, i64 2
%203 = load i8, ptr %202, align 1
%.not14.i512.2 = icmp eq i8 %203, 114
br i1 %.not14.i512.2, label %Then20, label %Block.i523
Then20: ; preds = %Loop.i510.1, %Block.i508
%204 = getelementptr inbounds %Sema, ptr %1, i64 0, i32 2
%.sroa.0.0.copyload.i515 = load ptr, ptr %204, align 8, !noalias !47268
%.sroa.2.0..sroa_idx.i516 = getelementptr inbounds %Sema, ptr %1, i64 0, i32 2, i32 1
%.sroa.2.0.copyload.i517 = load ptr, ptr %.sroa.2.0..sroa_idx.i516, align 8, !noalias !47268
%205 = tail call fastcc ptr @llvm.returnaddress(i32 0)
%206 = ptrtoint ptr %205 to i64
%207 = load ptr, ptr %.sroa.2.0.copyload.i517, align 8, !noalias !47271
%208 = tail call fastcc ptr %207(ptr nonnull align 1 %.sroa.0.0.copyload.i515, i64 56, i8 3, i64 %206) #37, !noalias !47271
%.not.i.i518 = icmp eq ptr %208, null
br i1 %.not.i.i518, label %TryRet22, label %TryCont23
Block.i523: ; preds = %Loop.i510.1, %Loop.i510, %Then4.i513.preheader
%.not798 = icmp eq ptr %5, @958
br i1 %.not798, label %Then35, label %Then4.i528.preheader
Then4.i528.preheader: ; preds = %Block.i523
%.not14.i527 = icmp eq i8 %199, 108
br i1 %.not14.i527, label %Loop.i525, label %Else36
Loop.i525: ; preds = %Then4.i528.preheader
%209 = getelementptr inbounds i8, ptr %5, i64 1
%210 = load i8, ptr %209, align 1
%.not14.i527.1 = icmp eq i8 %210, 101
br i1 %.not14.i527.1, label %Loop.i525.1, label %Else36
Loop.i525.1: ; preds = %Loop.i525
%211 = getelementptr inbounds i8, ptr %5, i64 2
%212 = load i8, ptr %211, align 1
%.not14.i527.2 = icmp eq i8 %212, 110
br i1 %.not14.i527.2, label %Then35, label %Else36
TryRet22: ; preds = %Then20
%.sroa.1166.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 1, ptr %.sroa.1166.0..sroa_idx, align 4
br label %common.ret
TryCont23: ; preds = %Then20
tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %208, i8 -86, i64 56, i1 false), !noalias !47271
call fastcc void @type.Type.slicePtrFieldType(ptr noalias %83, i64 %141, ptr %208)
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %82, ptr noundef nonnull align 8 dereferenceable(16) %204, i64 16, i1 false)
%213 = load ptr, ptr %1, align 8
%214 = icmp ult i64 %..sroa.speculated, 68
br i1 %214, label %type.Type.tag.exit.i532, label %Else.i.i530
Else.i.i530: ; preds = %TryCont23
%215 = inttoptr i64 %..sroa.speculated to ptr
%216 = load i64, ptr %215, align 8
br label %type.Type.tag.exit.i532
type.Type.tag.exit.i532: ; preds = %Else.i.i530, %TryCont23
%common.ret.op.i.i531 = phi i64 [ %216, %Else.i.i530 ], [ %..sroa.speculated, %TryCont23 ]
switch i64 %common.ret.op.i.i531, label %Else.i533 [
i64 75, label %Case.i535
i64 58, label %type.Type.ptrIsMutable.exit
i64 59, label %type.Type.ptrIsMutable.exit
i64 60, label %type.Type.ptrIsMutable.exit
i64 76, label %type.Type.ptrIsMutable.exit
i64 78, label %type.Type.ptrIsMutable.exit
i64 52, label %type.Type.ptrIsMutable.exit
i64 53, label %type.Type.ptrIsMutable.exit
i64 80, label %type.Type.ptrIsMutable.exit
i64 82, label %type.Type.ptrIsMutable.exit
i64 77, label %Case2.i
i64 79, label %Case2.i
i64 51, label %Case2.i
i64 81, label %Case2.i
i64 83, label %Case2.i
]
Else.i533: ; preds = %type.Type.tag.exit.i532
unreachable
Case.i535: ; preds = %type.Type.tag.exit.i532
%217 = inttoptr i64 %..sroa.speculated to ptr
%218 = load i64, ptr %217, align 8
%219 = icmp eq i64 %218, 75
%spec.select.i.i534 = select i1 %219, ptr %217, ptr null
%220 = getelementptr inbounds %type.Type.Payload.Pointer, ptr %spec.select.i.i534, i64 0, i32 1, i32 8
%221 = load i1, ptr %220, align 1
br label %type.Type.ptrIsMutable.exit
Case2.i: ; preds = %type.Type.tag.exit.i532, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532
br label %type.Type.ptrIsMutable.exit
type.Type.ptrIsMutable.exit: ; preds = %Case2.i, %Case.i535, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532, %type.Type.tag.exit.i532
%.0.i536 = phi i1 [ true, %Case2.i ], [ %221, %Case.i535 ], [ false, %type.Type.tag.exit.i532 ], [ false, %type.Type.tag.exit.i532 ], [ false, %type.Type.tag.exit.i532 ], [ false, %type.Type.tag.exit.i532 ], [ false, %type.Type.tag.exit.i532 ], [ false, %type.Type.tag.exit.i532 ], [ false, %type.Type.tag.exit.i532 ], [ false, %type.Type.tag.exit.i532 ], [ false, %type.Type.tag.exit.i532 ]
%222 = icmp ult i64 %..sroa.speculated, 68
br i1 %222, label %type.Type.isVolatilePtr.exit, label %type.Type.tag.exit.i538
type.Type.tag.exit.i538: ; preds = %type.Type.ptrIsMutable.exit
%223 = inttoptr i64 %..sroa.speculated to ptr
%224 = load i64, ptr %223, align 8
%cond.i = icmp eq i64 %224, 75
br i1 %cond.i, label %type.Type.castTag__anon_79638.exit.i, label %type.Type.isVolatilePtr.exit
type.Type.castTag__anon_79638.exit.i: ; preds = %type.Type.tag.exit.i538
%225 = inttoptr i64 %..sroa.speculated to ptr
%226 = getelementptr inbounds %type.Type.Payload.Pointer, ptr %225, i64 0, i32 1, i32 9
%227 = load i1, ptr %226, align 1
br label %type.Type.isVolatilePtr.exit
type.Type.isVolatilePtr.exit: ; preds = %type.Type.castTag__anon_79638.exit.i, %type.Type.tag.exit.i538, %type.Type.ptrIsMutable.exit
%common.ret.op.i539 = phi i1 [ %227, %type.Type.castTag__anon_79638.exit.i ], [ false, %type.Type.tag.exit.i538 ], [ false, %type.Type.ptrIsMutable.exit ]
%228 = tail call fastcc i4 @type.Type.ptrAddressSpace(i64 %..sroa.speculated)
%.sroa.0168.0.copyload = load i64, ptr %83, align 8
store i64 %.sroa.0168.0.copyload, ptr %81, align 8
%229 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %81, i64 0, i32 1
%230 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %81, i64 0, i32 6
call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %229, i8 0, i64 20, i1 false)
store i4 %228, ptr %230, align 4
%231 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %81, i64 0, i32 4
store <2 x i16> zeroinitializer, ptr %231, align 8
%232 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %81, i64 0, i32 3
store i32 -1, ptr %232, align 4
%233 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %81, i64 0, i32 7
store i1 false, ptr %233, align 1
%234 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %81, i64 0, i32 8
store i1 %.0.i536, ptr %234, align 2
%235 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %81, i64 0, i32 9
store i1 %common.ret.op.i539, ptr %235, align 1
%236 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %81, i64 0, i32 10
store i2 0, ptr %236, align 8
call fastcc void @type.Type.ptr(ptr noalias %80, ptr %82, ptr %213, ptr %81)
%237 = getelementptr inbounds { %type.Type, i16, [6 x i8] }, ptr %80, i64 0, i32 1
%238 = load i16, ptr %237, align 8
%.not443 = icmp eq i16 %238, 0
br i1 %.not443, label %TryCont25, label %TryRet24
TryRet24: ; preds = %type.Type.isVolatilePtr.exit
%.sroa.1172.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %238, ptr %.sroa.1172.0..sroa_idx, align 4
br label %common.ret
TryCont25: ; preds = %type.Type.isVolatilePtr.exit
%239 = load i64, ptr %80, align 8
call fastcc void @Sema.resolveDefinedValue(ptr noalias %79, ptr %1, ptr %2, ptr %3, i32 %198)
%240 = getelementptr inbounds { { %value.Value, i8, [7 x i8] }, i16, [6 x i8] }, ptr %79, i64 0, i32 1
%241 = load i16, ptr %240, align 8
%.not444 = icmp eq i16 %241, 0
br i1 %.not444, label %TryCont27, label %TryRet26
TryRet26: ; preds = %TryCont25
%.sroa.1176.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %241, ptr %.sroa.1176.0..sroa_idx, align 4
br label %common.ret
TryCont27: ; preds = %TryCont25
%.sroa.2180.0..sroa_idx = getelementptr inbounds i8, ptr %79, i64 8
%.sroa.2180.0.copyload = load i8, ptr %.sroa.2180.0..sroa_idx, align 8
%.not445 = icmp eq i8 %.sroa.2180.0.copyload, 0
br i1 %.not445, label %Block32, label %Then28
Then28: ; preds = %TryCont27
%242 = ptrtoint ptr %205 to i64
%.sroa.0178.0.copyload = load i64, ptr %79, align 8
%.sroa.2184.8.copyload = load i64, ptr %142, align 8
tail call void @llvm.experimental.noalias.scope.decl(metadata !47274)
%sunkaddr843 = getelementptr inbounds i8, ptr %1, i64 24
%.sroa.0.0.copyload.i540 = load ptr, ptr %sunkaddr843, align 8, !noalias !47274
%sunkaddr840 = getelementptr inbounds i8, ptr %1, i64 32
%.sroa.2.0.copyload.i542 = load ptr, ptr %sunkaddr840, align 8, !noalias !47274
%243 = load ptr, ptr %.sroa.2.0.copyload.i542, align 8, !noalias !47277
%244 = tail call fastcc ptr %243(ptr nonnull align 1 %.sroa.0.0.copyload.i540, i64 32, i8 3, i64 %242) #37, !noalias !47277
%.not.i.i.i543 = icmp eq ptr %244, null
br i1 %.not.i.i.i543, label %TryRet30, label %TryCont31
TryRet30: ; preds = %Then28
%.sroa.1.0..sroa_idx.i544 = getelementptr inbounds i8, ptr %78, i64 8
store i16 1, ptr %.sroa.1.0..sroa_idx.i544, align 8, !alias.scope !47274
%.sroa.1187.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 1, ptr %.sroa.1187.0..sroa_idx, align 4
br label %common.ret
TryCont31: ; preds = %Then28
%245 = getelementptr inbounds i8, ptr %244, i64 8
store i64 89, ptr %244, align 8, !noalias !47274
store i64 %.sroa.0178.0.copyload, ptr %245, align 8, !noalias !47274
%.sroa.2676.0..sroa_idx = getelementptr inbounds %value.Value.Payload.FieldPtr, ptr %244, i64 0, i32 1, i32 1
store i64 %.sroa.2184.8.copyload, ptr %.sroa.2676.0..sroa_idx, align 8, !noalias !47274
%.sroa.3677.0..sroa_idx = getelementptr inbounds %value.Value.Payload.FieldPtr, ptr %244, i64 0, i32 1, i32 2
store i64 0, ptr %.sroa.3677.0..sroa_idx, align 8, !noalias !47274
%246 = getelementptr inbounds { %value.Value, i16, [6 x i8] }, ptr %78, i64 0, i32 1
store i16 0, ptr %246, align 8, !alias.scope !47274
store ptr %244, ptr %78, align 8, !alias.scope !47274
call fastcc void @Sema.addConstant(ptr noalias %77, ptr %1, i64 %239, ptr %78)
%247 = load i64, ptr %77, align 8
store i64 %247, ptr %0, align 4
br label %common.ret
Block32: ; preds = %TryCont27
%248 = tail call fastcc i16 @Sema.requireRuntimeBlock(ptr %1, ptr %2, ptr %3, ptr @2042)
%.not446 = icmp eq i16 %248, 0
br i1 %.not446, label %TryCont34, label %TryRet33
TryRet33: ; preds = %Block32
%.sroa.1191.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %248, ptr %.sroa.1191.0..sroa_idx, align 4
br label %common.ret
TryCont34: ; preds = %Block32
call fastcc void @Sema.Block.addTyOp(ptr noalias %76, ptr %2, i8 -104, i64 %239, i32 %198)
%249 = load i64, ptr %76, align 8
store i64 %249, ptr %0, align 4
br label %common.ret
Then35: ; preds = %Loop.i525.1, %Block.i523
%250 = getelementptr inbounds %Sema, ptr %1, i64 0, i32 2
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %75, ptr noundef nonnull align 8 dereferenceable(16) %250, i64 16, i1 false)
%251 = load ptr, ptr %1, align 8
%252 = icmp ult i64 %..sroa.speculated, 68
br i1 %252, label %type.Type.tag.exit.i549, label %Else.i.i547
Else.i.i547: ; preds = %Then35
%253 = inttoptr i64 %..sroa.speculated to ptr
%254 = load i64, ptr %253, align 8
br label %type.Type.tag.exit.i549
type.Type.tag.exit.i549: ; preds = %Else.i.i547, %Then35
%common.ret.op.i.i548 = phi i64 [ %254, %Else.i.i547 ], [ %..sroa.speculated, %Then35 ]
switch i64 %common.ret.op.i.i548, label %Else.i550 [
i64 75, label %Case.i552
i64 58, label %type.Type.ptrIsMutable.exit556
i64 59, label %type.Type.ptrIsMutable.exit556
i64 60, label %type.Type.ptrIsMutable.exit556
i64 76, label %type.Type.ptrIsMutable.exit556
i64 78, label %type.Type.ptrIsMutable.exit556
i64 52, label %type.Type.ptrIsMutable.exit556
i64 53, label %type.Type.ptrIsMutable.exit556
i64 80, label %type.Type.ptrIsMutable.exit556
i64 82, label %type.Type.ptrIsMutable.exit556
i64 77, label %Case2.i553
i64 79, label %Case2.i553
i64 51, label %Case2.i553
i64 81, label %Case2.i553
i64 83, label %Case2.i553
]
Else.i550: ; preds = %type.Type.tag.exit.i549
unreachable
Case.i552: ; preds = %type.Type.tag.exit.i549
%255 = inttoptr i64 %..sroa.speculated to ptr
%256 = load i64, ptr %255, align 8
%257 = icmp eq i64 %256, 75
%spec.select.i.i551 = select i1 %257, ptr %255, ptr null
%258 = getelementptr inbounds %type.Type.Payload.Pointer, ptr %spec.select.i.i551, i64 0, i32 1, i32 8
%259 = load i1, ptr %258, align 1
br label %type.Type.ptrIsMutable.exit556
Case2.i553: ; preds = %type.Type.tag.exit.i549, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549
br label %type.Type.ptrIsMutable.exit556
type.Type.ptrIsMutable.exit556: ; preds = %Case2.i553, %Case.i552, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549, %type.Type.tag.exit.i549
%.0.i554 = phi i1 [ true, %Case2.i553 ], [ %259, %Case.i552 ], [ false, %type.Type.tag.exit.i549 ], [ false, %type.Type.tag.exit.i549 ], [ false, %type.Type.tag.exit.i549 ], [ false, %type.Type.tag.exit.i549 ], [ false, %type.Type.tag.exit.i549 ], [ false, %type.Type.tag.exit.i549 ], [ false, %type.Type.tag.exit.i549 ], [ false, %type.Type.tag.exit.i549 ], [ false, %type.Type.tag.exit.i549 ]
%260 = icmp ult i64 %..sroa.speculated, 68
br i1 %260, label %type.Type.isVolatilePtr.exit561, label %type.Type.tag.exit.i558
type.Type.tag.exit.i558: ; preds = %type.Type.ptrIsMutable.exit556
%261 = inttoptr i64 %..sroa.speculated to ptr
%262 = load i64, ptr %261, align 8
%cond.i557 = icmp eq i64 %262, 75
br i1 %cond.i557, label %type.Type.castTag__anon_79638.exit.i560, label %type.Type.isVolatilePtr.exit561
type.Type.castTag__anon_79638.exit.i560: ; preds = %type.Type.tag.exit.i558
%263 = inttoptr i64 %..sroa.speculated to ptr
%264 = getelementptr inbounds %type.Type.Payload.Pointer, ptr %263, i64 0, i32 1, i32 9
%265 = load i1, ptr %264, align 1
br label %type.Type.isVolatilePtr.exit561
type.Type.isVolatilePtr.exit561: ; preds = %type.Type.castTag__anon_79638.exit.i560, %type.Type.tag.exit.i558, %type.Type.ptrIsMutable.exit556
%common.ret.op.i559 = phi i1 [ %265, %type.Type.castTag__anon_79638.exit.i560 ], [ false, %type.Type.tag.exit.i558 ], [ false, %type.Type.ptrIsMutable.exit556 ]
%266 = tail call fastcc i4 @type.Type.ptrAddressSpace(i64 %..sroa.speculated)
store i64 12, ptr %74, align 8
%267 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %74, i64 0, i32 1
%268 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %74, i64 0, i32 6
call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %267, i8 0, i64 20, i1 false)
store i4 %266, ptr %268, align 4
%269 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %74, i64 0, i32 4
store <2 x i16> zeroinitializer, ptr %269, align 8
%270 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %74, i64 0, i32 3
store i32 -1, ptr %270, align 4
%271 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %74, i64 0, i32 7
store i1 false, ptr %271, align 1
%272 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %74, i64 0, i32 8
store i1 %.0.i554, ptr %272, align 2
%273 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %74, i64 0, i32 9
store i1 %common.ret.op.i559, ptr %273, align 1
%274 = getelementptr inbounds %type.Type.Payload.Pointer.Data, ptr %74, i64 0, i32 10
store i2 0, ptr %274, align 8
call fastcc void @type.Type.ptr(ptr noalias %73, ptr %75, ptr %251, ptr %74)
%275 = getelementptr inbounds { %type.Type, i16, [6 x i8] }, ptr %73, i64 0, i32 1
%276 = load i16, ptr %275, align 8
%.not437 = icmp eq i16 %276, 0
br i1 %.not437, label %TryCont38, label %TryRet37
Else36: ; preds = %Loop.i525.1, %Loop.i525, %Then4.i528.preheader, %Block16
%277 = load ptr, ptr %1, align 8
store ptr %5, ptr %68, align 8
%.fca.1.gep225 = getelementptr inbounds { ptr, i64 }, ptr %68, i64 0, i32 1
store i64 %6, ptr %.fca.1.gep225, align 8
%278 = getelementptr inbounds %97, ptr %68, i64 0, i32 1
store i64 %131, ptr %278, align 8
%.sroa.2684.0..sroa_idx = getelementptr inbounds %97, ptr %68, i64 0, i32 1, i32 0, i32 1
store ptr %277, ptr %.sroa.2684.0..sroa_idx, align 8
%279 = getelementptr i8, ptr %2, i64 160
%.val644 = load i32, ptr %279, align 8, !noalias !47282
call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %.sroa.7.i)
call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11)
%280 = getelementptr i8, ptr %277, i64 696
%.val.i.i = load ptr, ptr %280, align 8, !noalias !47285
%281 = zext i32 %.val644 to i64
%282 = add nuw nsw i64 %281, 1
%283 = tail call i64 @llvm.ctlz.i64(i64 %282, i1 true), !range !1878
%284 = xor i64 %283, 63
%.neg.i.i.i.i.i806 = shl nsw i64 -1, %284
%285 = add nsw i64 %.neg.i.i.i.i.i806, %282
%286 = getelementptr inbounds ptr, ptr %.val.i.i, i64 %284
%287 = load ptr, ptr %286, align 8, !noalias !47285
%288 = getelementptr inbounds %Sema, ptr %1, i64 0, i32 1
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %288, i64 16, i1 false), !noalias !47285
%289 = load i64, ptr %7, align 4
%.sroa.4.0..sroa_idx.i = getelementptr inbounds i8, ptr %7, i64 8
%.sroa.4.0.copyload.i = load i7, ptr %.sroa.4.0..sroa_idx.i, align 4, !noalias !47285
%.sroa.5.0..sroa_idx.i = getelementptr inbounds i8, ptr %7, i64 9
%switch.i.i807 = icmp ult i7 %.sroa.4.0.copyload.i, 5
%290 = getelementptr %Module.Decl, ptr %287, i64 %285, i32 5
%.val3.i.i808 = load ptr, ptr %290, align 8, !noalias !47288
%291 = getelementptr i8, ptr %.val3.i.i808, i64 8
%.val3.val.i.i809 = load ptr, ptr %291, align 8, !noalias !47288
br i1 %switch.i.i807, label %Module.LazySrcLoc.toSrcLoc.exit.i812, label %Case1.i.i810
Case1.i.i810: ; preds = %Else36
%292 = getelementptr inbounds %Module.Decl, ptr %287, i64 %285, i32 11
%293 = load i32, ptr %292, align 8, !noalias !47288
br label %Module.LazySrcLoc.toSrcLoc.exit.i812
Module.LazySrcLoc.toSrcLoc.exit.i812: ; preds = %Case1.i.i810, %Else36
%.sink.i.i811 = phi i32 [ %293, %Case1.i.i810 ], [ 0, %Else36 ]
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %.sroa.7.i, ptr noundef nonnull align 1 dereferenceable(3) %.sroa.5.0..sroa_idx.i, i64 3, i1 false)
%.sroa.010.0.copyload.i = load ptr, ptr %11, align 8, !noalias !47291
%.sroa.411.0..sroa_idx.i = getelementptr inbounds i8, ptr %11, i64 8
%.sroa.411.0.copyload.i = load ptr, ptr %.sroa.411.0..sroa_idx.i, align 8, !noalias !47291
%294 = tail call fastcc ptr @llvm.returnaddress(i32 0)
%295 = ptrtoint ptr %294 to i64
%296 = load ptr, ptr %.sroa.411.0.copyload.i, align 8, !noalias !47294
%297 = tail call fastcc ptr %296(ptr nonnull align 1 %.sroa.010.0.copyload.i, i64 72, i8 3, i64 %295) #37, !noalias !47294
%.not.i.i.i.i = icmp eq ptr %297, null
br i1 %.not.i.i.i.i, label %Module.ErrorMsg.create__anon_226000.exit.thread.i, label %TryCont.i.i814
TryCont.i.i814: ; preds = %Module.LazySrcLoc.toSrcLoc.exit.i812
tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(72) %297, i8 -86, i64 72, i1 false), !noalias !47294
call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9), !noalias !47291
call fastcc void @fmt.allocPrint__anon_226002(ptr noalias %9, ptr %11, ptr %68), !noalias !47299
%298 = getelementptr inbounds { { ptr, i64 }, i16, [6 x i8] }, ptr %9, i64 0, i32 1
%299 = load i16, ptr %298, align 8, !noalias !47299
%.not.i.i.i813 = icmp eq i16 %299, 0
br i1 %.not.i.i.i813, label %TryCont.i818, label %TryRet1.i.i816
TryRet1.i.i816: ; preds = %TryCont.i.i814
%300 = ptrtoint ptr %294 to i64
call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9), !noalias !47291
%301 = getelementptr i8, ptr %.sroa.411.0.copyload.i, i64 16
%.val10.val.i.i815 = load ptr, ptr %301, align 8, !noalias !47291
tail call fastcc void %.val10.val.i.i815(ptr nonnull align 1 %.sroa.010.0.copyload.i, ptr nonnull align 1 %297, i64 72, i8 3, i64 %300) #37, !noalias !47291
br label %Module.ErrorMsg.create__anon_226000.exit.thread.i
Module.ErrorMsg.create__anon_226000.exit.thread.i: ; preds = %TryRet1.i.i816, %Module.LazySrcLoc.toSrcLoc.exit.i812
%.sroa.49.0.ph.i = phi i16 [ 1, %Module.LazySrcLoc.toSrcLoc.exit.i812 ], [ %299, %TryRet1.i.i816 ]
call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %.sroa.7.i)
call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11)
br label %Sema.fail__anon_135111.exit
TryCont.i818: ; preds = %TryCont.i.i814
%.fca.0.load.i.i.i = load ptr, ptr %9, align 8, !noalias !47299
%.fca.1.gep.i.i.i = getelementptr inbounds { ptr, i64 }, ptr %9, i64 0, i32 1
%.fca.1.load.i.i.i = load i64, ptr %.fca.1.gep.i.i.i, align 8, !noalias !47299
call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9), !noalias !47291
store ptr %.val3.val.i.i809, ptr %297, align 8, !noalias !47291
%.sroa.416.0..sroa.012.0..sroa_idx.i = getelementptr inbounds i8, ptr %297, i64 8
store i32 %.sink.i.i811, ptr %.sroa.416.0..sroa.012.0..sroa_idx.i, align 8, !noalias !47291
%.sroa.517.0..sroa.012.0..sroa_idx.i = getelementptr inbounds i8, ptr %297, i64 12
store i64 %289, ptr %.sroa.517.0..sroa.012.0..sroa_idx.i, align 4
%.sroa.618.0..sroa.012.0..sroa_idx.i = getelementptr inbounds i8, ptr %297, i64 20
store i7 %.sroa.4.0.copyload.i, ptr %.sroa.618.0..sroa.012.0..sroa_idx.i, align 4, !noalias !47291
%.sroa.719.0..sroa.012.0..sroa_idx.i = getelementptr inbounds i8, ptr %297, i64 21
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %.sroa.719.0..sroa.012.0..sroa_idx.i, ptr noundef nonnull align 1 dereferenceable(3) %.sroa.7.i, i64 3, i1 false)
%.sroa.820.0..sroa.012.0..sroa_idx.i = getelementptr inbounds i8, ptr %297, i64 24
store ptr %.fca.0.load.i.i.i, ptr %.sroa.820.0..sroa.012.0..sroa_idx.i, align 8, !noalias !47291
%.sroa.9.0..sroa.012.0..sroa_idx.i = getelementptr inbounds i8, ptr %297, i64 32
store i64 %.fca.1.load.i.i.i, ptr %.sroa.9.0..sroa.012.0..sroa_idx.i, align 8, !noalias !47291
%.sroa.10.0..sroa.012.0..sroa_idx.i = getelementptr inbounds i8, ptr %297, i64 40
tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.10.0..sroa.012.0..sroa_idx.i, i8 0, i64 32, i1 false)
call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %.sroa.7.i)
call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11)
%302 = tail call fastcc i16 @Sema.failWithOwnedErrorMsg(ptr %1, ptr %297)
br label %Sema.fail__anon_135111.exit
Sema.fail__anon_135111.exit: ; preds = %TryCont.i818, %Module.ErrorMsg.create__anon_226000.exit.thread.i
%common.ret.op.i817 = phi i16 [ %302, %TryCont.i818 ], [ %.sroa.49.0.ph.i, %Module.ErrorMsg.create__anon_226000.exit.thread.i ]
%.sroa.1227.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %common.ret.op.i817, ptr %.sroa.1227.0..sroa_idx, align 4
br label %common.ret
TryRet37: ; preds = %type.Type.isVolatilePtr.exit561
%.sroa.1198.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %276, ptr %.sroa.1198.0..sroa_idx, align 4
br label %common.ret
TryCont38: ; preds = %type.Type.isVolatilePtr.exit561
%303 = load i64, ptr %73, align 8
call fastcc void @Sema.resolveDefinedValue(ptr noalias %72, ptr %1, ptr %2, ptr %3, i32 %198)
%304 = getelementptr inbounds { { %value.Value, i8, [7 x i8] }, i16, [6 x i8] }, ptr %72, i64 0, i32 1
%305 = load i16, ptr %304, align 8
%.not438 = icmp eq i16 %305, 0
br i1 %.not438, label %TryCont40, label %TryRet39
TryRet39: ; preds = %TryCont38
%.sroa.1202.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %305, ptr %.sroa.1202.0..sroa_idx, align 4
br label %common.ret
TryCont40: ; preds = %TryCont38
%.sroa.2206.0..sroa_idx = getelementptr inbounds i8, ptr %72, i64 8
%.sroa.2206.0.copyload = load i8, ptr %.sroa.2206.0..sroa_idx, align 8
%.not439 = icmp eq i8 %.sroa.2206.0.copyload, 0
br i1 %.not439, label %Block45, label %Then41
Then41: ; preds = %TryCont40
%.sroa.0204.0.copyload = load i64, ptr %72, align 8
%.sroa.2211.8.copyload = load i64, ptr %142, align 8
tail call void @llvm.experimental.noalias.scope.decl(metadata !47302)
%sunkaddr841 = getelementptr inbounds i8, ptr %1, i64 24
%.sroa.0.0.copyload.i562 = load ptr, ptr %sunkaddr841, align 8, !noalias !47302
%.sroa.2.0..sroa_idx.i563 = getelementptr inbounds %Sema, ptr %1, i64 0, i32 2, i32 1
%.sroa.2.0.copyload.i564 = load ptr, ptr %.sroa.2.0..sroa_idx.i563, align 8, !noalias !47302
%306 = tail call fastcc ptr @llvm.returnaddress(i32 0)
%307 = ptrtoint ptr %306 to i64
%308 = load ptr, ptr %.sroa.2.0.copyload.i564, align 8, !noalias !47305
%309 = tail call fastcc ptr %308(ptr nonnull align 1 %.sroa.0.0.copyload.i562, i64 32, i8 3, i64 %307) #37, !noalias !47305
%.not.i.i.i565 = icmp eq ptr %309, null
br i1 %.not.i.i.i565, label %TryRet43, label %TryCont44
TryRet43: ; preds = %Then41
%.sroa.1.0..sroa_idx.i566 = getelementptr inbounds i8, ptr %71, i64 8
store i16 1, ptr %.sroa.1.0..sroa_idx.i566, align 8, !alias.scope !47302
%.sroa.1214.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 1, ptr %.sroa.1214.0..sroa_idx, align 4
br label %common.ret
TryCont44: ; preds = %Then41
%310 = getelementptr inbounds i8, ptr %309, i64 8
store i64 89, ptr %309, align 8, !noalias !47302
store i64 %.sroa.0204.0.copyload, ptr %310, align 8, !noalias !47302
%.sroa.2681.0..sroa_idx = getelementptr inbounds %value.Value.Payload.FieldPtr, ptr %309, i64 0, i32 1, i32 1
store i64 %.sroa.2211.8.copyload, ptr %.sroa.2681.0..sroa_idx, align 8, !noalias !47302
%.sroa.3682.0..sroa_idx = getelementptr inbounds %value.Value.Payload.FieldPtr, ptr %309, i64 0, i32 1, i32 2
store i64 1, ptr %.sroa.3682.0..sroa_idx, align 8, !noalias !47302
%311 = getelementptr inbounds { %value.Value, i16, [6 x i8] }, ptr %71, i64 0, i32 1
store i16 0, ptr %311, align 8, !alias.scope !47302
store ptr %309, ptr %71, align 8, !alias.scope !47302
call fastcc void @Sema.addConstant(ptr noalias %70, ptr %1, i64 %303, ptr %71)
%312 = load i64, ptr %70, align 8
store i64 %312, ptr %0, align 4
br label %common.ret
Block45: ; preds = %TryCont40
%313 = tail call fastcc i16 @Sema.requireRuntimeBlock(ptr %1, ptr %2, ptr %3, ptr @2042)
%.not440 = icmp eq i16 %313, 0
br i1 %.not440, label %TryCont47, label %TryRet46
TryRet46: ; preds = %Block45
%.sroa.1218.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %313, ptr %.sroa.1218.0..sroa_idx, align 4
br label %common.ret
TryCont47: ; preds = %Block45
call fastcc void @Sema.Block.addTyOp(ptr noalias %69, ptr %2, i8 -105, i64 %303, i32 %198)
%314 = load i64, ptr %69, align 8
store i64 %314, ptr %0, align 4
br label %common.ret
Case49: ; preds = %type.Type.zigTypeTag.exit484
call fastcc void @Sema.resolveConstValue(ptr noalias %67, ptr %1, ptr %2, ptr @2043, i32 %4, ptr @crypto.tls.Client.init__anon_99877__anon_130457, i64 0)
%315 = getelementptr inbounds { %value.Value, i16, [6 x i8] }, ptr %67, i64 0, i32 1
%316 = load i16, ptr %315, align 8
%.not405 = icmp eq i16 %316, 0
br i1 %.not405, label %TryCont51, label %TryRet50
TryRet50: ; preds = %Case49
%.sroa.1231.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %316, ptr %.sroa.1231.0..sroa_idx, align 4
br label %common.ret
TryCont51: ; preds = %Case49
call fastcc void @Sema.analyzeLoad(ptr noalias %66, ptr %1, ptr %2, ptr %3, i32 %4, ptr %3)
%317 = getelementptr inbounds { i32, i16, [2 x i8] }, ptr %66, i64 0, i32 1
%318 = load i16, ptr %317, align 4
%.not406 = icmp eq i16 %318, 0
br i1 %.not406, label %TryCont53, label %TryRet52
TryRet52: ; preds = %TryCont51
%.sroa.1235.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %318, ptr %.sroa.1235.0..sroa_idx, align 4
br label %common.ret
TryCont53: ; preds = %TryCont51
%319 = load i32, ptr %66, align 4
br i1 %.0.i777, label %Then54, label %Block58
Then54: ; preds = %TryCont53
call fastcc void @Sema.analyzeLoad(ptr noalias %65, ptr %1, ptr %2, ptr %3, i32 %319, ptr %3)
%320 = getelementptr inbounds { i32, i16, [2 x i8] }, ptr %65, i64 0, i32 1
%321 = load i16, ptr %320, align 4
%.not436 = icmp eq i16 %321, 0
br i1 %.not436, label %TryCont57, label %TryRet56
TryRet56: ; preds = %Then54
%.sroa.1239.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %321, ptr %.sroa.1239.0..sroa_idx, align 4
br label %common.ret
TryCont57: ; preds = %Then54
%322 = load i32, ptr %65, align 4
br label %Block58
Block58: ; preds = %TryCont57, %TryCont53
%323 = phi i32 [ %322, %TryCont57 ], [ %319, %TryCont53 ]
call fastcc void @Sema.resolveDefinedValue(ptr noalias %64, ptr %1, ptr %2, ptr %3, i32 %323)
%324 = getelementptr inbounds { { %value.Value, i8, [7 x i8] }, i16, [6 x i8] }, ptr %64, i64 0, i32 1
%325 = load i16, ptr %324, align 8
%326 = icmp eq i16 %325, 0
br i1 %326, label %Then59, label %Else60
Then59: ; preds = %Block58
%327 = load i64, ptr %64, align 8
call fastcc void @value.Value.toType(ptr noalias %62, i64 %327, ptr %63)
%328 = load i64, ptr %62, align 8
%329 = call fastcc i5 @type.Type.zigTypeTag(i64 %328)
%330 = zext i5 %329 to i32
switch i32 %330, label %Else62 [
i32 15, label %Case63
i32 17, label %Case84
i32 16, label %Case107
i32 8, label %Case125
i32 19, label %Case125
]
Else60: ; preds = %Block58
tail call fastcc void @builtin.default_panic(ptr @builtin.panic_messages.unwrap_error__anon_7066, i64 23)
unreachable
Else62: ; preds = %Then59
%331 = load ptr, ptr %1, align 8
store i64 %328, ptr %28, align 8
%.sroa.2733.0..sroa_idx = getelementptr inbounds i8, ptr %28, i64 8
store ptr %331, ptr %.sroa.2733.0..sroa_idx, align 8
%332 = getelementptr i8, ptr %2, i64 160
%.val643 = load i32, ptr %332, align 8, !noalias !47310
%333 = call fastcc i16 @Sema.fail__anon_135181(ptr %1, i32 %.val643, ptr %3, ptr %28)
%.sroa.1353.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %333, ptr %.sroa.1353.0..sroa_idx, align 4
br label %common.ret
Case63: ; preds = %Then59
%334 = icmp ult i64 %328, 68
br i1 %334, label %Else65, label %Block.i571
Block.i571: ; preds = %Case63
%335 = inttoptr i64 %328 to ptr
%336 = load i64, ptr %335, align 8
%337 = icmp eq i64 %336, 92
br i1 %337, label %Then64, label %Else65
Then64: ; preds = %Block.i571
%338 = inttoptr i64 %328 to ptr
%339 = getelementptr inbounds %type.Type.Payload.ErrorSet, ptr %338, i64 0, i32 1
%340 = load ptr, ptr %339, align 8
call fastcc void @"array_hash_map.ArrayHashMapUnmanaged([]const u8,void,array_hash_map.StringContext,true).getEntry"(ptr noalias %61, ptr %340, ptr %5, i64 %6)
%341 = getelementptr inbounds { %"array_hash_map.ArrayHashMapUnmanaged([]const u8,void,array_hash_map.StringContext,true).Entry", i8, [7 x i8] }, ptr %61, i64 0, i32 1
%342 = load i8, ptr %341, align 8
%.not432 = icmp eq i8 %342, 0
br i1 %.not432, label %Block68, label %Then66
Else65: ; preds = %Block.i571, %Case63
%343 = load ptr, ptr %1, align 8
call fastcc void @Module.getErrorValue(ptr noalias %59, ptr %343, ptr %5, i64 %6)
%344 = getelementptr inbounds { %"hash_map.HashMapUnmanaged([]const u8,u32,hash_map.StringContext,80).KV", i16, [6 x i8] }, ptr %59, i64 0, i32 1
%345 = load i16, ptr %344, align 8
%.not427 = icmp eq i16 %345, 0
br i1 %.not427, label %Block72, label %TryRet70
Then66: ; preds = %Then64
%346 = load ptr, ptr %61, align 8
br label %Block72
Block68: ; preds = %Then64
%347 = load ptr, ptr %1, align 8
store ptr %5, ptr %60, align 8
%.fca.1.gep247 = getelementptr inbounds { ptr, i64 }, ptr %60, i64 0, i32 1
store i64 %6, ptr %.fca.1.gep247, align 8
%348 = getelementptr inbounds %97, ptr %60, i64 0, i32 1
store i64 %328, ptr %348, align 8
%.sroa.2698.0..sroa_idx = getelementptr inbounds %97, ptr %60, i64 0, i32 1, i32 0, i32 1
store ptr %347, ptr %.sroa.2698.0..sroa_idx, align 8
%349 = getelementptr i8, ptr %2, i64 160
%.val642 = load i32, ptr %349, align 8, !noalias !47313
%350 = call fastcc i16 @Sema.fail__anon_135114(ptr %1, i32 %.val642, ptr %3, ptr %60)
%.sroa.1249.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %350, ptr %.sroa.1249.0..sroa_idx, align 4
br label %common.ret
TryRet70: ; preds = %Else65
%.sroa.1255.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %345, ptr %.sroa.1255.0..sroa_idx, align 4
br label %common.ret
Block72: ; preds = %Then66, %Else65
%.sink = phi ptr [ %346, %Then66 ], [ %59, %Else65 ]
%351 = icmp ult i64 %328, 68
%sunkaddr842 = getelementptr inbounds i8, ptr %.sink, i64 8
%.fca.1.load = load i64, ptr %sunkaddr842, align 8
%.unpack.pn = load ptr, ptr %.sink, align 8
%352 = getelementptr inbounds %Sema.Block, ptr %2, i64 0, i32 1
%353 = load ptr, ptr %352, align 8, !noalias !47316
%354 = getelementptr inbounds %Sema, ptr %353, i64 0, i32 1
call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17)
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %354, i64 16, i1 false), !noalias !47319
%.16..16..16..16..16..16..16..16..16..16..sroa_idx835 = getelementptr inbounds i8, ptr %17, i64 16
call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.16..16..16..16..16..16..16..16..16..16..sroa_idx835, i8 0, i64 16, i1 false), !noalias !47319
%.sroa.2700.0..sroa_idx = getelementptr inbounds i8, ptr %58, i64 8
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.2700.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %17, i64 32, i1 false)
call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17)
store ptr %2, ptr %58, align 8
%.sroa.3701.0..sroa_idx = getelementptr inbounds i8, ptr %58, i64 40
store i1 false, ptr %.sroa.3701.0..sroa_idx, align 8
br i1 %351, label %type.Type.tag.exit.i575, label %Else.i.i573
Else.i.i573: ; preds = %Block72
%355 = inttoptr i64 %328 to ptr
%356 = load i64, ptr %355, align 8
br label %type.Type.tag.exit.i575
type.Type.tag.exit.i575: ; preds = %Else.i.i573, %Block72
%common.ret.op.i.i574 = phi i64 [ %356, %Else.i.i573 ], [ %328, %Block72 ]
switch i64 %common.ret.op.i.i574, label %Then73 [
i64 32, label %Else74
i64 94, label %type.Type.isAnyError.exit
]
type.Type.isAnyError.exit: ; preds = %type.Type.tag.exit.i575
%357 = inttoptr i64 %328 to ptr
%358 = load i64, ptr %357, align 8
%359 = icmp eq i64 %358, 94
%spec.select.i.i577 = select i1 %359, ptr %357, ptr null
%360 = getelementptr inbounds %type.Type.Payload.ErrorSetInferred, ptr %spec.select.i.i577, i64 0, i32 1
%361 = load ptr, ptr %360, align 8
%362 = getelementptr inbounds %Module.Fn.InferredErrorSet, ptr %361, i64 0, i32 3
%363 = load i1, ptr %362, align 1
br i1 %363, label %Else74, label %Then73
Then73: ; preds = %type.Type.isAnyError.exit, %type.Type.tag.exit.i575
store i64 %328, ptr %57, align 8
store ptr %.sroa.2700.0..sroa_idx, ptr %56, align 8, !alias.scope !47322
%.sroa.2.0..sroa_idx.i581 = getelementptr inbounds i8, ptr %56, i64 8
store ptr @heap.arena_allocator.ArenaAllocator.allocator__anon_3789, ptr %.sroa.2.0..sroa_idx.i581, align 8, !alias.scope !47322
call fastcc void @type.Type.copy(ptr noalias %55, ptr %57, ptr %56)
%364 = getelementptr inbounds { %type.Type, i16, [6 x i8] }, ptr %55, i64 0, i32 1
%365 = load i16, ptr %364, align 8
%.not431 = icmp eq i16 %365, 0
br i1 %.not431, label %Then73.Block79_crit_edge, label %TryRet75
Then73.Block79_crit_edge: ; preds = %Then73
%.pre803 = call fastcc ptr @llvm.returnaddress(i32 0)
%.pre804 = ptrtoint ptr %.pre803 to i64
br label %Block79
Else74: ; preds = %type.Type.isAnyError.exit, %type.Type.tag.exit.i575
call void @llvm.experimental.noalias.scope.decl(metadata !47325)
%366 = call fastcc ptr @llvm.returnaddress(i32 0)
%367 = ptrtoint ptr %366 to i64
%368 = call fastcc ptr @heap.arena_allocator.ArenaAllocator.alloc(ptr nonnull align 1 %.sroa.2700.0..sroa_idx, i64 24, i8 3, i64 %367) #37, !noalias !47328
%.not.i.i.i586 = icmp eq ptr %368, null
br i1 %.not.i.i.i586, label %TryRet77, label %type.Type.Tag.create__anon_135116.exit
type.Type.Tag.create__anon_135116.exit: ; preds = %Else74
%369 = ptrtoint ptr %366 to i64
store i64 93, ptr %368, align 8, !noalias !47325
%370 = getelementptr inbounds %type.Type.Payload.Name, ptr %368, i64 0, i32 1
store ptr %.unpack.pn, ptr %370, align 8, !noalias !47325
%.repack1.i = getelementptr inbounds %type.Type.Payload.Name, ptr %368, i64 0, i32 1, i32 1
store i64 %.fca.1.load, ptr %.repack1.i, align 8, !noalias !47325
%371 = getelementptr inbounds { %type.Type, i16, [6 x i8] }, ptr %54, i64 0, i32 1
store i16 0, ptr %371, align 8, !alias.scope !47325
store ptr %368, ptr %54, align 8, !alias.scope !47325
br label %Block79
TryRet75: ; preds = %Then73
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %58)
%.sroa.1260.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %365, ptr %.sroa.1260.0..sroa_idx, align 4
br label %common.ret
TryRet77: ; preds = %Else74
%.sroa.1.0..sroa_idx.i587 = getelementptr inbounds i8, ptr %54, i64 8
store i16 1, ptr %.sroa.1.0..sroa_idx.i587, align 8, !alias.scope !47325
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %58)
%.sroa.1263.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 1, ptr %.sroa.1263.0..sroa_idx, align 4
br label %common.ret
Block79: ; preds = %type.Type.Tag.create__anon_135116.exit, %Then73.Block79_crit_edge
%.pre-phi805 = phi i64 [ %.pre804, %Then73.Block79_crit_edge ], [ %369, %type.Type.Tag.create__anon_135116.exit ]
%372 = phi ptr [ %55, %Then73.Block79_crit_edge ], [ %54, %type.Type.Tag.create__anon_135116.exit ]
call void @llvm.experimental.noalias.scope.decl(metadata !47333)
%373 = call fastcc ptr @heap.arena_allocator.ArenaAllocator.alloc(ptr nonnull align 1 %.sroa.2700.0..sroa_idx, i64 24, i8 3, i64 %.pre-phi805) #37, !noalias !47336
%.not.i.i.i594 = icmp eq ptr %373, null
br i1 %.not.i.i.i594, label %TryRet80, label %TryCont81
TryRet80: ; preds = %Block79
%.sroa.1.0..sroa_idx.i595 = getelementptr inbounds i8, ptr %53, i64 8
store i16 1, ptr %.sroa.1.0..sroa_idx.i595, align 8, !alias.scope !47333
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %58)
%.sroa.1278.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 1, ptr %.sroa.1278.0..sroa_idx, align 4
br label %common.ret
TryCont81: ; preds = %Block79
%374 = getelementptr inbounds i8, ptr %373, i64 8
store i64 102, ptr %373, align 8, !noalias !47333
store ptr %.unpack.pn, ptr %374, align 8, !noalias !47333
%.sroa.2710.0..sroa_idx = getelementptr inbounds %value.Value.Payload.Error, ptr %373, i64 0, i32 1, i32 0, i32 1
store i64 %.fca.1.load, ptr %.sroa.2710.0..sroa_idx, align 8, !noalias !47333
%375 = getelementptr inbounds { %value.Value, i16, [6 x i8] }, ptr %53, i64 0, i32 1
store i16 0, ptr %375, align 8, !alias.scope !47333
store ptr %373, ptr %53, align 8, !alias.scope !47333
call fastcc void @Sema.Block.WipAnonDecl.finish(ptr noalias %52, ptr %58, ptr %372, ptr %53, i32 0)
%376 = getelementptr inbounds { i32, i16, [2 x i8] }, ptr %52, i64 0, i32 1
%377 = load i16, ptr %376, align 4
%.not430 = icmp eq i16 %377, 0
br i1 %.not430, label %TryCont83, label %TryRet82
TryRet82: ; preds = %TryCont81
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %58)
%.sroa.1281.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %377, ptr %.sroa.1281.0..sroa_idx, align 4
br label %common.ret
TryCont83: ; preds = %TryCont81
%378 = load i32, ptr %52, align 4
call fastcc void @Sema.analyzeDeclRef(ptr noalias %51, ptr %1, i32 %378)
%379 = load i64, ptr %51, align 8
store i64 %379, ptr %0, align 4
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %58)
br label %common.ret
Case84: ; preds = %Then59
%380 = call fastcc ptr @type.Type.getNamespace(i64 %328)
%.not417 = icmp eq ptr %380, null
br i1 %.not417, label %Block92, label %Then85
Then85: ; preds = %Case84
call fastcc void @Sema.namespaceLookupRef(ptr noalias %50, ptr %1, ptr %2, ptr %3, ptr %380, ptr %5, i64 %6)
%381 = getelementptr inbounds { { i32, i8, [3 x i8] }, i16, [2 x i8] }, ptr %50, i64 0, i32 1
%382 = load i16, ptr %381, align 4
%.not424 = icmp eq i16 %382, 0
br i1 %.not424, label %TryCont88, label %TryRet87
TryRet87: ; preds = %Then85
%.sroa.1285.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %382, ptr %.sroa.1285.0..sroa_idx, align 4
br label %common.ret
TryCont88: ; preds = %Then85
%.sroa.2288.0..sroa_idx = getelementptr inbounds i8, ptr %50, i64 4
%.sroa.2288.0.copyload = load i8, ptr %.sroa.2288.0..sroa_idx, align 4
%.not425 = icmp eq i8 %.sroa.2288.0.copyload, 0
br i1 %.not425, label %Block92, label %Then89
Then89: ; preds = %TryCont88
%.sroa.0287.0.copyload = load i32, ptr %50, align 4
store i32 %.sroa.0287.0.copyload, ptr %0, align 4
%.sroa.2291.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 0, ptr %.sroa.2291.0..sroa_idx, align 4
br label %common.ret
Block92: ; preds = %TryCont88, %Case84
call fastcc void @Sema.resolveTypeFields(ptr noalias %49, ptr %1, ptr %62)
%383 = getelementptr inbounds { %type.Type, i16, [6 x i8] }, ptr %49, i64 0, i32 1
%384 = load i16, ptr %383, align 8
%.not418 = icmp eq i16 %384, 0
br i1 %.not418, label %TryCont94, label %TryRet93
TryRet93: ; preds = %Block92
%.sroa.1295.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %384, ptr %.sroa.1295.0..sroa_idx, align 4
br label %common.ret
TryCont94: ; preds = %Block92
%385 = load i64, ptr %49, align 8
%386 = icmp ult i64 %385, 68
br i1 %386, label %Block106, label %type.Type.tag.exit.i599
type.Type.tag.exit.i599: ; preds = %TryCont94
%387 = inttoptr i64 %385 to ptr
%388 = load i64, ptr %387, align 8, !noalias !47341
%cond.i598 = icmp eq i64 %388, 101
br i1 %cond.i598, label %Then95, label %Block106
Then95: ; preds = %type.Type.tag.exit.i599
%389 = inttoptr i64 %385 to ptr
%390 = getelementptr inbounds %type.Type.Payload.Union, ptr %389, i64 0, i32 1
%391 = load ptr, ptr %390, align 8, !noalias !47341
%.sroa.0.0.copyload2.i = load i64, ptr %391, align 8, !noalias !47341
call fastcc void @type.Type.enumFieldIndex(ptr noalias %48, i64 %.sroa.0.0.copyload2.i, ptr %5, i64 %6)
%392 = getelementptr inbounds { i64, i8, [7 x i8] }, ptr %48, i64 0, i32 1
%393 = load i8, ptr %392, align 8
%.not420 = icmp eq i8 %393, 0
br i1 %.not420, label %Block106, label %Then97
Then97: ; preds = %Then95
%394 = load i64, ptr %48, align 8
%395 = getelementptr inbounds %Sema.Block, ptr %2, i64 0, i32 1
%396 = load ptr, ptr %395, align 8, !noalias !47344
%397 = getelementptr inbounds %Sema, ptr %396, i64 0, i32 1
call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16)
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(16) %397, i64 16, i1 false), !noalias !47347
%.16..16..16..16..16..16..16..16..16..16..sroa_idx836 = getelementptr inbounds i8, ptr %16, i64 16
call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.16..16..16..16..16..16..16..16..16..16..sroa_idx836, i8 0, i64 16, i1 false), !noalias !47347
%.sroa.2717.0..sroa_idx = getelementptr inbounds i8, ptr %47, i64 8
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.2717.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %16, i64 32, i1 false)
call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16)
store ptr %2, ptr %47, align 8
%.sroa.3718.0..sroa_idx = getelementptr inbounds i8, ptr %47, i64 40
store i1 false, ptr %.sroa.3718.0..sroa_idx, align 8
store i64 %.sroa.0.0.copyload2.i, ptr %46, align 8
store ptr %.sroa.2717.0..sroa_idx, ptr %45, align 8, !alias.scope !47350
%.sroa.2.0..sroa_idx.i603 = getelementptr inbounds i8, ptr %45, i64 8
store ptr @heap.arena_allocator.ArenaAllocator.allocator__anon_3789, ptr %.sroa.2.0..sroa_idx.i603, align 8, !alias.scope !47350
call fastcc void @type.Type.copy(ptr noalias %44, ptr %46, ptr %45)
%398 = getelementptr inbounds { %type.Type, i16, [6 x i8] }, ptr %44, i64 0, i32 1
%399 = load i16, ptr %398, align 8
%.not421 = icmp eq i16 %399, 0
br i1 %.not421, label %TryCont100, label %TryRet99
TryRet99: ; preds = %Then97
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %47)
%.sroa.1300.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %399, ptr %.sroa.1300.0..sroa_idx, align 4
br label %common.ret
TryCont100: ; preds = %Then97
%400 = load i64, ptr %44, align 8
store i64 %400, ptr %43, align 8
call void @llvm.experimental.noalias.scope.decl(metadata !47353)
%401 = call fastcc ptr @llvm.returnaddress(i32 0)
%402 = ptrtoint ptr %401 to i64
%403 = call fastcc ptr @heap.arena_allocator.ArenaAllocator.alloc(ptr nonnull align 1 %.sroa.2717.0..sroa_idx, i64 16, i8 3, i64 %402) #37, !noalias !47356
%.not.i.i.i608 = icmp eq ptr %403, null
br i1 %.not.i.i.i608, label %TryRet101, label %TryCont102
TryRet101: ; preds = %TryCont100
%.sroa.1.0..sroa_idx.i609 = getelementptr inbounds i8, ptr %42, i64 8
store i16 1, ptr %.sroa.1.0..sroa_idx.i609, align 8, !alias.scope !47353
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %47)
%.sroa.1303.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 1, ptr %.sroa.1303.0..sroa_idx, align 4
br label %common.ret
TryCont102: ; preds = %TryCont100
%404 = trunc i64 %394 to i32
%405 = getelementptr inbounds i8, ptr %403, i64 12
store i32 -1431655766, ptr %405, align 1, !noalias !47353
store i64 101, ptr %403, align 8, !noalias !47353
%406 = getelementptr inbounds %value.Value.Payload.U32, ptr %403, i64 0, i32 1
store i32 %404, ptr %406, align 4, !noalias !47353
%407 = getelementptr inbounds { %value.Value, i16, [6 x i8] }, ptr %42, i64 0, i32 1
store i16 0, ptr %407, align 8, !alias.scope !47353
store ptr %403, ptr %42, align 8, !alias.scope !47353
call fastcc void @Sema.Block.WipAnonDecl.finish(ptr noalias %41, ptr %47, ptr %43, ptr %42, i32 0)
%408 = getelementptr inbounds { i32, i16, [2 x i8] }, ptr %41, i64 0, i32 1
%409 = load i16, ptr %408, align 4
%.not423 = icmp eq i16 %409, 0
br i1 %.not423, label %TryCont104, label %TryRet103
TryRet103: ; preds = %TryCont102
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %47)
%.sroa.1306.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %409, ptr %.sroa.1306.0..sroa_idx, align 4
br label %common.ret
TryCont104: ; preds = %TryCont102
%410 = load i32, ptr %41, align 4
call fastcc void @Sema.analyzeDeclRef(ptr noalias %40, ptr %1, i32 %410)
%411 = load i64, ptr %40, align 8
store i64 %411, ptr %0, align 4
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %47)
br label %common.ret
Block106: ; preds = %Then95, %type.Type.tag.exit.i599, %TryCont94
%412 = call fastcc i16 @Sema.failWithBadMemberAccess(ptr %1, ptr %2, ptr %62, ptr %7, ptr %5, i64 %6)
%.sroa.1310.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %412, ptr %.sroa.1310.0..sroa_idx, align 4
br label %common.ret
Case107: ; preds = %Then59
%413 = call fastcc ptr @type.Type.getNamespace(i64 %328)
%.not410 = icmp eq ptr %413, null
br i1 %.not410, label %Block115, label %Then108
Then108: ; preds = %Case107
call fastcc void @Sema.namespaceLookupRef(ptr noalias %39, ptr %1, ptr %2, ptr %3, ptr %413, ptr %5, i64 %6)
%414 = getelementptr inbounds { { i32, i8, [3 x i8] }, i16, [2 x i8] }, ptr %39, i64 0, i32 1
%415 = load i16, ptr %414, align 4
%.not415 = icmp eq i16 %415, 0
br i1 %.not415, label %TryCont111, label %TryRet110
TryRet110: ; preds = %Then108
%.sroa.1314.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %415, ptr %.sroa.1314.0..sroa_idx, align 4
br label %common.ret
TryCont111: ; preds = %Then108
%.sroa.2317.0..sroa_idx = getelementptr inbounds i8, ptr %39, i64 4
%.sroa.2317.0.copyload = load i8, ptr %.sroa.2317.0..sroa_idx, align 4
%.not416 = icmp eq i8 %.sroa.2317.0.copyload, 0
br i1 %.not416, label %Block115, label %Then112
Then112: ; preds = %TryCont111
%.sroa.0316.0.copyload = load i32, ptr %39, align 4
store i32 %.sroa.0316.0.copyload, ptr %0, align 4
%.sroa.2320.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 0, ptr %.sroa.2320.0..sroa_idx, align 4
br label %common.ret
Block115: ; preds = %TryCont111, %Case107
call fastcc void @type.Type.enumFieldIndex(ptr noalias %38, i64 %328, ptr %5, i64 %6)
%416 = getelementptr inbounds { i64, i8, [7 x i8] }, ptr %38, i64 0, i32 1
%417 = load i8, ptr %416, align 8
%.not411 = icmp eq i8 %417, 0
br i1 %.not411, label %Else117, label %Then116
Then116: ; preds = %Block115
%418 = load i64, ptr %38, align 8
%419 = getelementptr inbounds %Sema.Block, ptr %2, i64 0, i32 1
%420 = load ptr, ptr %419, align 8, !noalias !47361
%421 = getelementptr inbounds %Sema, ptr %420, i64 0, i32 1
call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15)
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %421, i64 16, i1 false), !noalias !47364
%.16..16..16..16..16..16..16..16..16..16..sroa_idx837 = getelementptr inbounds i8, ptr %15, i64 16
call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.16..16..16..16..16..16..16..16..16..16..sroa_idx837, i8 0, i64 16, i1 false), !noalias !47364
%.sroa.2725.0..sroa_idx = getelementptr inbounds i8, ptr %37, i64 8
call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.2725.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %15, i64 32, i1 false)
call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15)
store ptr %2, ptr %37, align 8
%.sroa.3726.0..sroa_idx = getelementptr inbounds i8, ptr %37, i64 40
store i1 false, ptr %.sroa.3726.0..sroa_idx, align 8
store i64 %328, ptr %36, align 8
store ptr %.sroa.2725.0..sroa_idx, ptr %35, align 8, !alias.scope !47367
%.sroa.2.0..sroa_idx.i613 = getelementptr inbounds i8, ptr %35, i64 8
store ptr @heap.arena_allocator.ArenaAllocator.allocator__anon_3789, ptr %.sroa.2.0..sroa_idx.i613, align 8, !alias.scope !47367
call fastcc void @type.Type.copy(ptr noalias %34, ptr %36, ptr %35)
%422 = getelementptr inbounds { %type.Type, i16, [6 x i8] }, ptr %34, i64 0, i32 1
%423 = load i16, ptr %422, align 8
%.not412 = icmp eq i16 %423, 0
br i1 %.not412, label %TryCont120, label %TryRet119
Else117: ; preds = %Block115
%424 = call fastcc i16 @Sema.failWithBadMemberAccess(ptr %1, ptr %2, ptr %62, ptr %7, ptr %5, i64 %6)
%.sroa.1324.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %424, ptr %.sroa.1324.0..sroa_idx, align 4
br label %common.ret
TryRet119: ; preds = %Then116
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %37)
%.sroa.1329.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %423, ptr %.sroa.1329.0..sroa_idx, align 4
br label %common.ret
TryCont120: ; preds = %Then116
%425 = load i64, ptr %34, align 8
store i64 %425, ptr %33, align 8
call void @llvm.experimental.noalias.scope.decl(metadata !47370)
%426 = call fastcc ptr @llvm.returnaddress(i32 0)
%427 = ptrtoint ptr %426 to i64
%428 = call fastcc ptr @heap.arena_allocator.ArenaAllocator.alloc(ptr nonnull align 1 %.sroa.2725.0..sroa_idx, i64 16, i8 3, i64 %427) #37, !noalias !47373
%.not.i.i.i618 = icmp eq ptr %428, null
br i1 %.not.i.i.i618, label %TryRet121, label %TryCont122
TryRet121: ; preds = %TryCont120
%.sroa.1.0..sroa_idx.i619 = getelementptr inbounds i8, ptr %32, i64 8
store i16 1, ptr %.sroa.1.0..sroa_idx.i619, align 8, !alias.scope !47370
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %37)
%.sroa.1332.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 1, ptr %.sroa.1332.0..sroa_idx, align 4
br label %common.ret
TryCont122: ; preds = %TryCont120
%429 = trunc i64 %418 to i32
%430 = getelementptr inbounds i8, ptr %428, i64 12
store i32 -1431655766, ptr %430, align 1, !noalias !47370
store i64 101, ptr %428, align 8, !noalias !47370
%431 = getelementptr inbounds %value.Value.Payload.U32, ptr %428, i64 0, i32 1
store i32 %429, ptr %431, align 4, !noalias !47370
%432 = getelementptr inbounds { %value.Value, i16, [6 x i8] }, ptr %32, i64 0, i32 1
store i16 0, ptr %432, align 8, !alias.scope !47370
store ptr %428, ptr %32, align 8, !alias.scope !47370
call fastcc void @Sema.Block.WipAnonDecl.finish(ptr noalias %31, ptr %37, ptr %33, ptr %32, i32 0)
%433 = getelementptr inbounds { i32, i16, [2 x i8] }, ptr %31, i64 0, i32 1
%434 = load i16, ptr %433, align 4
%.not414 = icmp eq i16 %434, 0
br i1 %.not414, label %TryCont124, label %TryRet123
TryRet123: ; preds = %TryCont122
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %37)
%.sroa.1335.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %434, ptr %.sroa.1335.0..sroa_idx, align 4
br label %common.ret
TryCont124: ; preds = %TryCont122
%435 = load i32, ptr %31, align 4
call fastcc void @Sema.analyzeDeclRef(ptr noalias %30, ptr %1, i32 %435)
%436 = load i64, ptr %30, align 8
store i64 %436, ptr %0, align 4
call fastcc void @Sema.Block.WipAnonDecl.deinit(ptr %37)
br label %common.ret
Case125: ; preds = %Then59, %Then59
%437 = call fastcc ptr @type.Type.getNamespace(i64 %328)
%.not407 = icmp eq ptr %437, null
br i1 %.not407, label %Block133, label %Then126
Then126: ; preds = %Case125
call fastcc void @Sema.namespaceLookupRef(ptr noalias %29, ptr %1, ptr %2, ptr %3, ptr %437, ptr %5, i64 %6)
%438 = getelementptr inbounds { { i32, i8, [3 x i8] }, i16, [2 x i8] }, ptr %29, i64 0, i32 1
%439 = load i16, ptr %438, align 4
%.not408 = icmp eq i16 %439, 0
br i1 %.not408, label %TryCont129, label %TryRet128
TryRet128: ; preds = %Then126
%.sroa.1339.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %439, ptr %.sroa.1339.0..sroa_idx, align 4
br label %common.ret
TryCont129: ; preds = %Then126
%.sroa.2342.0..sroa_idx = getelementptr inbounds i8, ptr %29, i64 4
%.sroa.2342.0.copyload = load i8, ptr %.sroa.2342.0..sroa_idx, align 4
%.not409 = icmp eq i8 %.sroa.2342.0.copyload, 0
br i1 %.not409, label %Block133, label %Then130
Then130: ; preds = %TryCont129
%.sroa.0341.0.copyload = load i32, ptr %29, align 4
store i32 %.sroa.0341.0.copyload, ptr %0, align 4
%.sroa.2345.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 0, ptr %.sroa.2345.0..sroa_idx, align 4
br label %common.ret
Block133: ; preds = %TryCont129, %Case125
%440 = call fastcc i16 @Sema.failWithBadMemberAccess(ptr %1, ptr %2, ptr %62, ptr %7, ptr %5, i64 %6)
%.sroa.1349.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %440, ptr %.sroa.1349.0..sroa_idx, align 4
br label %common.ret
Case134: ; preds = %type.Type.zigTypeTag.exit484
br i1 %.0.i777, label %Then135, label %Block139
Then135: ; preds = %Case134
call fastcc void @Sema.analyzeLoad(ptr noalias %27, ptr %1, ptr %2, ptr %3, i32 %4, ptr %3)
%441 = getelementptr inbounds { i32, i16, [2 x i8] }, ptr %27, i64 0, i32 1
%442 = load i16, ptr %441, align 4
%.not404 = icmp eq i16 %442, 0
br i1 %.not404, label %TryCont138, label %TryRet137
TryRet137: ; preds = %Then135
%.sroa.1357.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %442, ptr %.sroa.1357.0..sroa_idx, align 4
br label %common.ret
TryCont138: ; preds = %Then135
%443 = load i32, ptr %27, align 4
br label %Block139
Block139: ; preds = %TryCont138, %Case134
%444 = phi i32 [ %443, %TryCont138 ], [ %4, %Case134 ]
call fastcc void @Sema.structFieldPtr(ptr noalias %26, ptr %1, ptr %2, ptr %3, i32 %444, ptr %5, i64 %6, ptr %7, ptr %142, i1 %8)
%445 = load i64, ptr %26, align 8
store i64 %445, ptr %0, align 4
br label %common.ret
Case140: ; preds = %type.Type.zigTypeTag.exit484
br i1 %.0.i777, label %Then141, label %Block145
Then141: ; preds = %Case140
call fastcc void @Sema.analyzeLoad(ptr noalias %25, ptr %1, ptr %2, ptr %3, i32 %4, ptr %3)
%446 = getelementptr inbounds { i32, i16, [2 x i8] }, ptr %25, i64 0, i32 1
%447 = load i16, ptr %446, align 4
%.not = icmp eq i16 %447, 0
br i1 %.not, label %TryCont144, label %TryRet143
TryRet143: ; preds = %Then141
%.sroa.1362.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %447, ptr %.sroa.1362.0..sroa_idx, align 4
br label %common.ret
TryCont144: ; preds = %Then141
%448 = load i32, ptr %25, align 4
br label %Block145
Block145: ; preds = %TryCont144, %Case140
%449 = phi i32 [ %448, %TryCont144 ], [ %4, %Case140 ]
call fastcc void @Sema.unionFieldPtr(ptr noalias %24, ptr %1, ptr %2, ptr %3, i32 %449, ptr %5, i64 %6, ptr %7, ptr %142, i1 %8)
%450 = load i64, ptr %24, align 8
store i64 %450, ptr %0, align 4
br label %common.ret
Block146: ; preds = %type.Type.isSlice.exit, %type.Type.tag.exit.i499, %type.Type.zigTypeTag.exit484
%451 = load ptr, ptr %1, align 8
store i64 %131, ptr %23, align 8
%.sroa.2735.0..sroa_idx = getelementptr inbounds i8, ptr %23, i64 8
store ptr %451, ptr %.sroa.2735.0..sroa_idx, align 8
call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9)
%452 = getelementptr i8, ptr %2, i64 160
%.val640 = load i32, ptr %452, align 8
call fastcc void @Sema.errMsg__anon_203447(ptr noalias %9, ptr %1, i32 %.val640, ptr %3, ptr %23)
%453 = getelementptr inbounds { ptr, i16, [6 x i8] }, ptr %9, i64 0, i32 1
%454 = load i16, ptr %453, align 8
%.not.i623 = icmp eq i16 %454, 0
br i1 %.not.i623, label %TryCont.i625, label %Sema.fail__anon_135183.exit
TryCont.i625: ; preds = %Block146
%455 = load ptr, ptr %9, align 8
%456 = tail call fastcc i16 @Sema.failWithOwnedErrorMsg(ptr %1, ptr %455)
br label %Sema.fail__anon_135183.exit
Sema.fail__anon_135183.exit: ; preds = %TryCont.i625, %Block146
%common.ret.op.i624 = phi i16 [ %456, %TryCont.i625 ], [ %454, %Block146 ]
call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9)
%.sroa.1367.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4
store i16 %common.ret.op.i624, ptr %.sroa.1367.0..sroa_idx, align 4
br label %common.ret
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment