Last active
June 6, 2018 10:01
-
-
Save sbogolepov/d51b1f990506820baa588b6c364be4c7 to your computer and use it in GitHub Desktop.
Switch lowering outcome
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import kotlin.system.measureNanoTime | |
enum class MyEnum { | |
ITEM1, ITEM2, ITEM3, ITEM4, ITEM5, ITEM6, ITEM7, ITEM8, ITEM9, ITEM10, ITEM11, ITEM12, ITEM13, ITEM14, ITEM15, ITEM16, ITEM17, ITEM18, ITEM19, ITEM20, ITEM21, ITEM22, ITEM23, ITEM24, ITEM25, ITEM26, ITEM27, ITEM28, ITEM29, ITEM30, ITEM31, ITEM32, ITEM33, ITEM34, ITEM35, ITEM36, ITEM37, ITEM38, ITEM39, ITEM40, ITEM41, ITEM42, ITEM43, ITEM44, ITEM45, ITEM46, ITEM47, ITEM48, ITEM49, ITEM50, ITEM51, ITEM52, ITEM53, ITEM54, ITEM55, ITEM56, ITEM57, ITEM58, ITEM59, ITEM60, ITEM61, ITEM62, ITEM63, ITEM64, ITEM65, ITEM66, ITEM67, ITEM68, ITEM69, ITEM70, ITEM71, ITEM72, ITEM73, ITEM74, ITEM75, ITEM76, ITEM77, ITEM78, ITEM79, ITEM80, ITEM81, ITEM82, ITEM83, ITEM84, ITEM85, ITEM86, ITEM87, ITEM88, ITEM89, ITEM90, ITEM91, ITEM92, ITEM93, ITEM94, ITEM95, ITEM96, ITEM97, ITEM98, ITEM99, ITEM100 | |
} | |
private fun enumSwitch(x: MyEnum) : Int { | |
when (x) { | |
MyEnum.ITEM5 -> return 1 | |
MyEnum.ITEM10 -> return 2 | |
MyEnum.ITEM15 -> return 3 | |
MyEnum.ITEM20 -> return 4 | |
MyEnum.ITEM25 -> return 5 | |
MyEnum.ITEM30 -> return 6 | |
MyEnum.ITEM35 -> return 7 | |
MyEnum.ITEM40 -> return 8 | |
MyEnum.ITEM45 -> return 9 | |
MyEnum.ITEM50 -> return 10 | |
MyEnum.ITEM55 -> return 11 | |
MyEnum.ITEM60 -> return 12 | |
MyEnum.ITEM65 -> return 13 | |
MyEnum.ITEM70 -> return 14 | |
MyEnum.ITEM75 -> return 15 | |
MyEnum.ITEM80 -> return 16 | |
MyEnum.ITEM85 -> return 17 | |
MyEnum.ITEM90 -> return 18 | |
MyEnum.ITEM95 -> return 19 | |
MyEnum.ITEM100 -> return 20 | |
else -> return -1 | |
} | |
} | |
class Blackhole { | |
companion object { | |
var consumer = 0 | |
fun consume(value: Any) { | |
consumer += value.hashCode() | |
} | |
} | |
} | |
lateinit var enumData : Array<MyEnum> | |
const val BENCHMARK_SIZE = 100_000 | |
fun setupEnums() { | |
enumData = Array(BENCHMARK_SIZE) { | |
MyEnum.values()[it % MyEnum.values().size] | |
} | |
} | |
fun testEnumsSwitch() { | |
val n = enumData.size -1 | |
val data = enumData | |
for (i in 0..n) { | |
Blackhole.consume(enumSwitch(data[i])) | |
} | |
} | |
fun main(args: Array<String>) { | |
setupEnums() | |
val time = measureNanoTime { | |
testEnumsSwitch() | |
} | |
println(time) | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
define internal i32 @"kfun:enumSwitch#internal"(%struct.ObjHeader*) personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !492, metadata !412) #0, !dbg !494 | |
%2 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %0, i64 1, !dbg !495 | |
%3 = bitcast %struct.ObjHeader* %2 to i32*, !dbg !495 | |
%4 = load i32, i32* %3, align 4, !dbg !495 | |
switch i32 %4, label %5 [ | |
i32 4, label %25 | |
i32 9, label %6 | |
i32 14, label %7 | |
i32 19, label %8 | |
i32 24, label %9 | |
i32 29, label %10 | |
i32 34, label %11 | |
i32 39, label %12 | |
i32 44, label %13 | |
i32 49, label %14 | |
i32 54, label %15 | |
i32 59, label %16 | |
i32 64, label %17 | |
i32 69, label %18 | |
i32 74, label %19 | |
i32 79, label %20 | |
i32 84, label %21 | |
i32 89, label %22 | |
i32 94, label %23 | |
i32 99, label %24 | |
] | |
; <label>:5: ; preds = %1 | |
br label %25 | |
; <label>:6: ; preds = %1 | |
br label %25 | |
; <label>:7: ; preds = %1 | |
br label %25 | |
; <label>:8: ; preds = %1 | |
br label %25 | |
; <label>:9: ; preds = %1 | |
br label %25 | |
; <label>:10: ; preds = %1 | |
br label %25 | |
; <label>:11: ; preds = %1 | |
br label %25 | |
; <label>:12: ; preds = %1 | |
br label %25 | |
; <label>:13: ; preds = %1 | |
br label %25 | |
; <label>:14: ; preds = %1 | |
br label %25 | |
; <label>:15: ; preds = %1 | |
br label %25 | |
; <label>:16: ; preds = %1 | |
br label %25 | |
; <label>:17: ; preds = %1 | |
br label %25 | |
; <label>:18: ; preds = %1 | |
br label %25 | |
; <label>:19: ; preds = %1 | |
br label %25 | |
; <label>:20: ; preds = %1 | |
br label %25 | |
; <label>:21: ; preds = %1 | |
br label %25 | |
; <label>:22: ; preds = %1 | |
br label %25 | |
; <label>:23: ; preds = %1 | |
br label %25 | |
; <label>:24: ; preds = %1 | |
br label %25 | |
; <label>:25: ; preds = %24, %23, %22, %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6, %5, %1 | |
%26 = phi i32 [ -1, %5 ], [ 1, %1 ], [ 2, %6 ], [ 3, %7 ], [ 4, %8 ], [ 5, %9 ], [ 6, %10 ], [ 7, %11 ], [ 8, %12 ], [ 9, %13 ], [ 10, %14 ], [ 11, %15 ], [ 12, %16 ], [ 13, %17 ], [ 14, %18 ], [ 15, %19 ], [ 16, %20 ], [ 17, %21 ], [ 18, %22 ], [ 19, %23 ], [ 20, %24 ] | |
ret i32 %26 | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
define internal i32 @"kfun:enumSwitch#internal"(%struct.ObjHeader*) personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { | |
%2 = alloca [2 x %struct.ObjHeader*], align 8 | |
%3 = alloca [42 x %struct.ObjHeader*], align 8 | |
%4 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 0 | |
%5 = bitcast [42 x %struct.ObjHeader*]* %3 to i8* | |
call void @llvm.memset.p0i8.i32(i8* %5, i8 0, i32 336, i32 8, i1 false) | |
%6 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 1 | |
store %struct.ObjHeader* %0, %struct.ObjHeader** %6, align 8 | |
%7 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 3 | |
%8 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 4 | |
%9 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 5 | |
%10 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 6 | |
%11 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 7 | |
%12 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 8 | |
%13 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 9 | |
%14 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 10 | |
%15 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 11 | |
%16 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 12 | |
%17 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 13 | |
%18 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 14 | |
%19 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 15 | |
%20 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 16 | |
%21 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 17 | |
%22 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 18 | |
%23 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 19 | |
%24 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 20 | |
%25 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 21 | |
%26 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 22 | |
%27 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 23 | |
%28 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 24 | |
%29 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 25 | |
%30 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 26 | |
%31 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 27 | |
%32 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 28 | |
%33 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 29 | |
%34 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 30 | |
%35 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 31 | |
%36 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 32 | |
%37 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 33 | |
%38 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 34 | |
%39 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 35 | |
%40 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 36 | |
%41 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 37 | |
%42 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 38 | |
%43 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 39 | |
%44 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 40 | |
%45 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 41 | |
%46 = getelementptr inbounds [42 x %struct.ObjHeader*], [42 x %struct.ObjHeader*]* %3, i64 0, i64 2 | |
%47 = bitcast [2 x %struct.ObjHeader*]* %2 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %47) | |
%48 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 0 | |
call void @llvm.memset.p0i8.i32(i8* %47, i8 0, i32 16, i32 8, i1 false) | |
%49 = load %struct.ObjHeader*, %struct.ObjHeader** @"kobjref:MyEnum.$OBJECT", align 8 | |
%50 = icmp ugt %struct.ObjHeader* %49, inttoptr (i64 1 to %struct.ObjHeader*) | |
br i1 %50, label %95, label %51 | |
; <label>:51: ; preds = %1 | |
%52 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%53 = invoke fastcc %struct.ObjHeader* @InitSharedInstance(%struct.ObjHeader** nonnull @"kobjref:MyEnum.$OBJECT", %struct.ObjHeader** nonnull @"kshadowobjref:MyEnum.$OBJECT", %struct.TypeInfo* getelementptr inbounds ({ %struct.TypeInfo, [3 x i8*] }, { %struct.TypeInfo, [3 x i8*] }* @"ktypeglobal:MyEnum.$OBJECT#internal", i64 0, i32 0), void (%struct.ObjHeader*)* nonnull @"kfun:MyEnum.$OBJECT.<init>()kotlin.Any", %struct.ObjHeader** %52) | |
to label %95 unwind label %54 | |
; <label>:54: ; preds = %51 | |
%55 = landingpad { i8*, i32 } | |
cleanup | |
%56 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%57 = load %struct.ObjHeader*, %struct.ObjHeader** %56, align 8, !tbaa !476 | |
%58 = icmp eq %struct.ObjHeader* %57, null | |
br i1 %58, label %68, label %59 | |
; <label>:59: ; preds = %54 | |
%60 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %57, i64 0, i32 0 | |
%61 = load %struct.TypeInfo*, %struct.TypeInfo** %60, align 8, !tbaa !477 | |
%62 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %57, i64 0, i32 1 | |
%63 = load %struct.ContainerHeader*, %struct.ContainerHeader** %62, align 8, !tbaa !479 | |
%64 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %61, i64 0, i32 0 | |
%65 = load %struct.TypeInfo*, %struct.TypeInfo** %64, align 8, !tbaa !480 | |
%66 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %65, i64 0, i32 5 | |
%67 = load i32, i32* %66, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %67, %struct.ContainerHeader* %63) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %56, align 8, !tbaa !476 | |
br label %68 | |
; <label>:68: ; preds = %59, %54 | |
%69 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%70 = icmp eq %struct.ObjHeader* %69, null | |
br i1 %70, label %2461, label %71 | |
; <label>:71: ; preds = %68 | |
%72 = bitcast %struct.ObjHeader* %69 to %struct.ContainerChunk** | |
%73 = load %struct.ContainerChunk*, %struct.ContainerChunk** %72, align 8, !tbaa !476 | |
%74 = icmp eq %struct.ContainerChunk* %73, null | |
br i1 %74, label %93, label %75 | |
; <label>:75: ; preds = %71 | |
br label %76 | |
; <label>:76: ; preds = %76, %75 | |
%77 = phi %struct.ContainerChunk* [ %81, %76 ], [ %73, %75 ] | |
%78 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %77, i64 1 | |
%79 = bitcast %struct.ContainerChunk* %78 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %79) #0 | |
%80 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %77, i64 0, i32 0 | |
%81 = load %struct.ContainerChunk*, %struct.ContainerChunk** %80, align 8, !tbaa !476 | |
%82 = icmp eq %struct.ContainerChunk* %81, null | |
br i1 %82, label %83, label %76 | |
; <label>:83: ; preds = %76 | |
%84 = load %struct.ContainerChunk*, %struct.ContainerChunk** %72, align 8, !tbaa !482 | |
%85 = icmp eq %struct.ContainerChunk* %84, null | |
br i1 %85, label %93, label %86 | |
; <label>:86: ; preds = %83 | |
br label %87 | |
; <label>:87: ; preds = %87, %86 | |
%88 = phi %struct.ContainerChunk* [ %91, %87 ], [ %84, %86 ] | |
%89 = bitcast %struct.ContainerChunk* %88 to i8* | |
%90 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %88, i64 0, i32 0 | |
%91 = load %struct.ContainerChunk*, %struct.ContainerChunk** %90, align 8, !tbaa !484 | |
call void @free(i8* %89) #0 | |
%92 = icmp eq %struct.ContainerChunk* %91, null | |
br i1 %92, label %93, label %87 | |
; <label>:93: ; preds = %87, %83, %71 | |
%94 = bitcast %struct.ObjHeader* %69 to i8* | |
call void @free(i8* %94) #0 | |
br label %2461 | |
; <label>:95: ; preds = %51, %1 | |
%96 = phi %struct.ObjHeader* [ %49, %1 ], [ %53, %51 ] | |
%97 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %96, i64 1 | |
%98 = bitcast %struct.ObjHeader* %97 to %struct.ObjHeader** | |
%99 = load %struct.ObjHeader*, %struct.ObjHeader** %98, align 8 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %46, %struct.ObjHeader* %99) | |
%100 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%101 = load %struct.ObjHeader*, %struct.ObjHeader** %100, align 8, !tbaa !476 | |
%102 = icmp eq %struct.ObjHeader* %101, null | |
br i1 %102, label %112, label %103 | |
; <label>:103: ; preds = %95 | |
%104 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %101, i64 0, i32 0 | |
%105 = load %struct.TypeInfo*, %struct.TypeInfo** %104, align 8, !tbaa !477 | |
%106 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %101, i64 0, i32 1 | |
%107 = load %struct.ContainerHeader*, %struct.ContainerHeader** %106, align 8, !tbaa !479 | |
%108 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %105, i64 0, i32 0 | |
%109 = load %struct.TypeInfo*, %struct.TypeInfo** %108, align 8, !tbaa !480 | |
%110 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %109, i64 0, i32 5 | |
%111 = load i32, i32* %110, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %111, %struct.ContainerHeader* %107) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %100, align 8, !tbaa !476 | |
br label %112 | |
; <label>:112: ; preds = %103, %95 | |
%113 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%114 = icmp eq %struct.ObjHeader* %113, null | |
br i1 %114, label %139, label %115 | |
; <label>:115: ; preds = %112 | |
%116 = bitcast %struct.ObjHeader* %113 to %struct.ContainerChunk** | |
%117 = load %struct.ContainerChunk*, %struct.ContainerChunk** %116, align 8, !tbaa !476 | |
%118 = icmp eq %struct.ContainerChunk* %117, null | |
br i1 %118, label %137, label %119 | |
; <label>:119: ; preds = %115 | |
br label %120 | |
; <label>:120: ; preds = %120, %119 | |
%121 = phi %struct.ContainerChunk* [ %125, %120 ], [ %117, %119 ] | |
%122 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %121, i64 1 | |
%123 = bitcast %struct.ContainerChunk* %122 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %123) #0 | |
%124 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %121, i64 0, i32 0 | |
%125 = load %struct.ContainerChunk*, %struct.ContainerChunk** %124, align 8, !tbaa !476 | |
%126 = icmp eq %struct.ContainerChunk* %125, null | |
br i1 %126, label %127, label %120 | |
; <label>:127: ; preds = %120 | |
%128 = load %struct.ContainerChunk*, %struct.ContainerChunk** %116, align 8, !tbaa !482 | |
%129 = icmp eq %struct.ContainerChunk* %128, null | |
br i1 %129, label %137, label %130 | |
; <label>:130: ; preds = %127 | |
br label %131 | |
; <label>:131: ; preds = %131, %130 | |
%132 = phi %struct.ContainerChunk* [ %135, %131 ], [ %128, %130 ] | |
%133 = bitcast %struct.ContainerChunk* %132 to i8* | |
%134 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %132, i64 0, i32 0 | |
%135 = load %struct.ContainerChunk*, %struct.ContainerChunk** %134, align 8, !tbaa !484 | |
call void @free(i8* %133) #0 | |
%136 = icmp eq %struct.ContainerChunk* %135, null | |
br i1 %136, label %137, label %131 | |
; <label>:137: ; preds = %131, %127, %115 | |
%138 = bitcast %struct.ObjHeader* %113 to i8* | |
call void @free(i8* %138) #0 | |
br label %139 | |
; <label>:139: ; preds = %137, %112 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47) | |
%140 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %99, i64 1 | |
%141 = bitcast %struct.ObjHeader* %140 to i32* | |
%142 = load i32, i32* %141, align 8, !tbaa !492 | |
%143 = icmp ugt i32 %142, 45 | |
br i1 %143, label %147, label %144 | |
; <label>:144: ; preds = %139 | |
%145 = invoke fastcc %struct.ObjHeader* @ThrowArrayIndexOutOfBoundsException() #27 | |
to label %146 unwind label %2459 | |
; <label>:146: ; preds = %144 | |
unreachable | |
; <label>:147: ; preds = %139 | |
%148 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %99, i64 1, i32 1 | |
%149 = getelementptr inbounds %struct.ContainerHeader*, %struct.ContainerHeader** %148, i64 45 | |
%150 = bitcast %struct.ContainerHeader** %149 to %struct.ObjHeader** | |
%151 = load %struct.ObjHeader*, %struct.ObjHeader** %150, align 8, !tbaa !476 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %7, %struct.ObjHeader* %151) #0 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !494, metadata !412), !dbg !498 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !499, metadata !500), !dbg !498 | |
%152 = icmp eq %struct.ObjHeader* %0, null, !dbg !501 | |
br i1 %152, label %153, label %155, !dbg !501 | |
; <label>:153: ; preds = %147 | |
%154 = icmp eq %struct.ObjHeader* %151, null, !dbg !501 | |
br i1 %154, label %2411, label %167 | |
; <label>:155: ; preds = %147 | |
%156 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %0, i64 0, i32 0, !dbg !501 | |
%157 = load %struct.TypeInfo*, %struct.TypeInfo** %156, align 8, !dbg !501 | |
%158 = getelementptr inbounds %struct.TypeInfo, %struct.TypeInfo* %157, i64 0, i32 0, !dbg !501 | |
%159 = load %struct.TypeInfo*, %struct.TypeInfo** %158, align 8, !dbg !501 | |
%160 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %159, i64 1, i32 1, i32 0, i64 8, !dbg !501 | |
%161 = bitcast i8* %160 to i1 (%struct.ObjHeader*, %struct.ObjHeader*)**, !dbg !501 | |
%162 = load i1 (%struct.ObjHeader*, %struct.ObjHeader*)*, i1 (%struct.ObjHeader*, %struct.ObjHeader*)** %161, align 8, !dbg !501 | |
%163 = invoke i1 %162(%struct.ObjHeader* nonnull %0, %struct.ObjHeader* %151) | |
to label %166 unwind label %164, !dbg !501 | |
; <label>:164: ; preds = %155 | |
%165 = landingpad { i8*, i32 } | |
cleanup, !dbg !502 | |
br label %2461, !dbg !502 | |
; <label>:166: ; preds = %155 | |
br i1 %163, label %2411, label %167 | |
; <label>:167: ; preds = %166, %153 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %47) | |
call void @llvm.memset.p0i8.i32(i8* %47, i8 0, i32 16, i32 8, i1 false) | |
%168 = load %struct.ObjHeader*, %struct.ObjHeader** @"kobjref:MyEnum.$OBJECT", align 8 | |
%169 = icmp ugt %struct.ObjHeader* %168, inttoptr (i64 1 to %struct.ObjHeader*) | |
br i1 %169, label %214, label %170 | |
; <label>:170: ; preds = %167 | |
%171 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%172 = invoke fastcc %struct.ObjHeader* @InitSharedInstance(%struct.ObjHeader** nonnull @"kobjref:MyEnum.$OBJECT", %struct.ObjHeader** nonnull @"kshadowobjref:MyEnum.$OBJECT", %struct.TypeInfo* getelementptr inbounds ({ %struct.TypeInfo, [3 x i8*] }, { %struct.TypeInfo, [3 x i8*] }* @"ktypeglobal:MyEnum.$OBJECT#internal", i64 0, i32 0), void (%struct.ObjHeader*)* nonnull @"kfun:MyEnum.$OBJECT.<init>()kotlin.Any", %struct.ObjHeader** %171) | |
to label %214 unwind label %173 | |
; <label>:173: ; preds = %170 | |
%174 = landingpad { i8*, i32 } | |
cleanup | |
%175 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%176 = load %struct.ObjHeader*, %struct.ObjHeader** %175, align 8, !tbaa !476 | |
%177 = icmp eq %struct.ObjHeader* %176, null | |
br i1 %177, label %187, label %178 | |
; <label>:178: ; preds = %173 | |
%179 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %176, i64 0, i32 0 | |
%180 = load %struct.TypeInfo*, %struct.TypeInfo** %179, align 8, !tbaa !477 | |
%181 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %176, i64 0, i32 1 | |
%182 = load %struct.ContainerHeader*, %struct.ContainerHeader** %181, align 8, !tbaa !479 | |
%183 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %180, i64 0, i32 0 | |
%184 = load %struct.TypeInfo*, %struct.TypeInfo** %183, align 8, !tbaa !480 | |
%185 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %184, i64 0, i32 5 | |
%186 = load i32, i32* %185, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %186, %struct.ContainerHeader* %182) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %175, align 8, !tbaa !476 | |
br label %187 | |
; <label>:187: ; preds = %178, %173 | |
%188 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%189 = icmp eq %struct.ObjHeader* %188, null | |
br i1 %189, label %2461, label %190 | |
; <label>:190: ; preds = %187 | |
%191 = bitcast %struct.ObjHeader* %188 to %struct.ContainerChunk** | |
%192 = load %struct.ContainerChunk*, %struct.ContainerChunk** %191, align 8, !tbaa !476 | |
%193 = icmp eq %struct.ContainerChunk* %192, null | |
br i1 %193, label %212, label %194 | |
; <label>:194: ; preds = %190 | |
br label %195 | |
; <label>:195: ; preds = %195, %194 | |
%196 = phi %struct.ContainerChunk* [ %200, %195 ], [ %192, %194 ] | |
%197 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %196, i64 1 | |
%198 = bitcast %struct.ContainerChunk* %197 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %198) #0 | |
%199 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %196, i64 0, i32 0 | |
%200 = load %struct.ContainerChunk*, %struct.ContainerChunk** %199, align 8, !tbaa !476 | |
%201 = icmp eq %struct.ContainerChunk* %200, null | |
br i1 %201, label %202, label %195 | |
; <label>:202: ; preds = %195 | |
%203 = load %struct.ContainerChunk*, %struct.ContainerChunk** %191, align 8, !tbaa !482 | |
%204 = icmp eq %struct.ContainerChunk* %203, null | |
br i1 %204, label %212, label %205 | |
; <label>:205: ; preds = %202 | |
br label %206 | |
; <label>:206: ; preds = %206, %205 | |
%207 = phi %struct.ContainerChunk* [ %210, %206 ], [ %203, %205 ] | |
%208 = bitcast %struct.ContainerChunk* %207 to i8* | |
%209 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %207, i64 0, i32 0 | |
%210 = load %struct.ContainerChunk*, %struct.ContainerChunk** %209, align 8, !tbaa !484 | |
call void @free(i8* %208) #0 | |
%211 = icmp eq %struct.ContainerChunk* %210, null | |
br i1 %211, label %212, label %206 | |
; <label>:212: ; preds = %206, %202, %190 | |
%213 = bitcast %struct.ObjHeader* %188 to i8* | |
call void @free(i8* %213) #0 | |
br label %2461 | |
; <label>:214: ; preds = %170, %167 | |
%215 = phi %struct.ObjHeader* [ %168, %167 ], [ %172, %170 ] | |
%216 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %215, i64 1 | |
%217 = bitcast %struct.ObjHeader* %216 to %struct.ObjHeader** | |
%218 = load %struct.ObjHeader*, %struct.ObjHeader** %217, align 8 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %8, %struct.ObjHeader* %218) | |
%219 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%220 = load %struct.ObjHeader*, %struct.ObjHeader** %219, align 8, !tbaa !476 | |
%221 = icmp eq %struct.ObjHeader* %220, null | |
br i1 %221, label %231, label %222 | |
; <label>:222: ; preds = %214 | |
%223 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %220, i64 0, i32 0 | |
%224 = load %struct.TypeInfo*, %struct.TypeInfo** %223, align 8, !tbaa !477 | |
%225 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %220, i64 0, i32 1 | |
%226 = load %struct.ContainerHeader*, %struct.ContainerHeader** %225, align 8, !tbaa !479 | |
%227 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %224, i64 0, i32 0 | |
%228 = load %struct.TypeInfo*, %struct.TypeInfo** %227, align 8, !tbaa !480 | |
%229 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %228, i64 0, i32 5 | |
%230 = load i32, i32* %229, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %230, %struct.ContainerHeader* %226) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %219, align 8, !tbaa !476 | |
br label %231 | |
; <label>:231: ; preds = %222, %214 | |
%232 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%233 = icmp eq %struct.ObjHeader* %232, null | |
br i1 %233, label %258, label %234 | |
; <label>:234: ; preds = %231 | |
%235 = bitcast %struct.ObjHeader* %232 to %struct.ContainerChunk** | |
%236 = load %struct.ContainerChunk*, %struct.ContainerChunk** %235, align 8, !tbaa !476 | |
%237 = icmp eq %struct.ContainerChunk* %236, null | |
br i1 %237, label %256, label %238 | |
; <label>:238: ; preds = %234 | |
br label %239 | |
; <label>:239: ; preds = %239, %238 | |
%240 = phi %struct.ContainerChunk* [ %244, %239 ], [ %236, %238 ] | |
%241 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %240, i64 1 | |
%242 = bitcast %struct.ContainerChunk* %241 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %242) #0 | |
%243 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %240, i64 0, i32 0 | |
%244 = load %struct.ContainerChunk*, %struct.ContainerChunk** %243, align 8, !tbaa !476 | |
%245 = icmp eq %struct.ContainerChunk* %244, null | |
br i1 %245, label %246, label %239 | |
; <label>:246: ; preds = %239 | |
%247 = load %struct.ContainerChunk*, %struct.ContainerChunk** %235, align 8, !tbaa !482 | |
%248 = icmp eq %struct.ContainerChunk* %247, null | |
br i1 %248, label %256, label %249 | |
; <label>:249: ; preds = %246 | |
br label %250 | |
; <label>:250: ; preds = %250, %249 | |
%251 = phi %struct.ContainerChunk* [ %254, %250 ], [ %247, %249 ] | |
%252 = bitcast %struct.ContainerChunk* %251 to i8* | |
%253 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %251, i64 0, i32 0 | |
%254 = load %struct.ContainerChunk*, %struct.ContainerChunk** %253, align 8, !tbaa !484 | |
call void @free(i8* %252) #0 | |
%255 = icmp eq %struct.ContainerChunk* %254, null | |
br i1 %255, label %256, label %250 | |
; <label>:256: ; preds = %250, %246, %234 | |
%257 = bitcast %struct.ObjHeader* %232 to i8* | |
call void @free(i8* %257) #0 | |
br label %258 | |
; <label>:258: ; preds = %256, %231 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47) | |
%259 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %218, i64 1 | |
%260 = bitcast %struct.ObjHeader* %259 to i32* | |
%261 = load i32, i32* %260, align 8, !tbaa !492 | |
%262 = icmp ugt i32 %261, 1 | |
br i1 %262, label %266, label %263 | |
; <label>:263: ; preds = %258 | |
%264 = invoke fastcc %struct.ObjHeader* @ThrowArrayIndexOutOfBoundsException() #27 | |
to label %265 unwind label %2459 | |
; <label>:265: ; preds = %263 | |
unreachable | |
; <label>:266: ; preds = %258 | |
%267 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %218, i64 1, i32 1 | |
%268 = getelementptr inbounds %struct.ContainerHeader*, %struct.ContainerHeader** %267, i64 1 | |
%269 = bitcast %struct.ContainerHeader** %268 to %struct.ObjHeader** | |
%270 = load %struct.ObjHeader*, %struct.ObjHeader** %269, align 8, !tbaa !476 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %9, %struct.ObjHeader* %270) #0 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !494, metadata !412), !dbg !498 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !499, metadata !500), !dbg !498 | |
br i1 %152, label %271, label %273, !dbg !501 | |
; <label>:271: ; preds = %266 | |
%272 = icmp eq %struct.ObjHeader* %270, null, !dbg !501 | |
br i1 %272, label %2411, label %285 | |
; <label>:273: ; preds = %266 | |
%274 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %0, i64 0, i32 0, !dbg !501 | |
%275 = load %struct.TypeInfo*, %struct.TypeInfo** %274, align 8, !dbg !501 | |
%276 = getelementptr inbounds %struct.TypeInfo, %struct.TypeInfo* %275, i64 0, i32 0, !dbg !501 | |
%277 = load %struct.TypeInfo*, %struct.TypeInfo** %276, align 8, !dbg !501 | |
%278 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %277, i64 1, i32 1, i32 0, i64 8, !dbg !501 | |
%279 = bitcast i8* %278 to i1 (%struct.ObjHeader*, %struct.ObjHeader*)**, !dbg !501 | |
%280 = load i1 (%struct.ObjHeader*, %struct.ObjHeader*)*, i1 (%struct.ObjHeader*, %struct.ObjHeader*)** %279, align 8, !dbg !501 | |
%281 = invoke i1 %280(%struct.ObjHeader* nonnull %0, %struct.ObjHeader* %270) | |
to label %284 unwind label %282, !dbg !501 | |
; <label>:282: ; preds = %273 | |
%283 = landingpad { i8*, i32 } | |
cleanup, !dbg !502 | |
br label %2461, !dbg !502 | |
; <label>:284: ; preds = %273 | |
br i1 %281, label %2411, label %285 | |
; <label>:285: ; preds = %284, %271 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %47) | |
call void @llvm.memset.p0i8.i32(i8* %47, i8 0, i32 16, i32 8, i1 false) | |
%286 = load %struct.ObjHeader*, %struct.ObjHeader** @"kobjref:MyEnum.$OBJECT", align 8 | |
%287 = icmp ugt %struct.ObjHeader* %286, inttoptr (i64 1 to %struct.ObjHeader*) | |
br i1 %287, label %332, label %288 | |
; <label>:288: ; preds = %285 | |
%289 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%290 = invoke fastcc %struct.ObjHeader* @InitSharedInstance(%struct.ObjHeader** nonnull @"kobjref:MyEnum.$OBJECT", %struct.ObjHeader** nonnull @"kshadowobjref:MyEnum.$OBJECT", %struct.TypeInfo* getelementptr inbounds ({ %struct.TypeInfo, [3 x i8*] }, { %struct.TypeInfo, [3 x i8*] }* @"ktypeglobal:MyEnum.$OBJECT#internal", i64 0, i32 0), void (%struct.ObjHeader*)* nonnull @"kfun:MyEnum.$OBJECT.<init>()kotlin.Any", %struct.ObjHeader** %289) | |
to label %332 unwind label %291 | |
; <label>:291: ; preds = %288 | |
%292 = landingpad { i8*, i32 } | |
cleanup | |
%293 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%294 = load %struct.ObjHeader*, %struct.ObjHeader** %293, align 8, !tbaa !476 | |
%295 = icmp eq %struct.ObjHeader* %294, null | |
br i1 %295, label %305, label %296 | |
; <label>:296: ; preds = %291 | |
%297 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %294, i64 0, i32 0 | |
%298 = load %struct.TypeInfo*, %struct.TypeInfo** %297, align 8, !tbaa !477 | |
%299 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %294, i64 0, i32 1 | |
%300 = load %struct.ContainerHeader*, %struct.ContainerHeader** %299, align 8, !tbaa !479 | |
%301 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %298, i64 0, i32 0 | |
%302 = load %struct.TypeInfo*, %struct.TypeInfo** %301, align 8, !tbaa !480 | |
%303 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %302, i64 0, i32 5 | |
%304 = load i32, i32* %303, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %304, %struct.ContainerHeader* %300) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %293, align 8, !tbaa !476 | |
br label %305 | |
; <label>:305: ; preds = %296, %291 | |
%306 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%307 = icmp eq %struct.ObjHeader* %306, null | |
br i1 %307, label %2461, label %308 | |
; <label>:308: ; preds = %305 | |
%309 = bitcast %struct.ObjHeader* %306 to %struct.ContainerChunk** | |
%310 = load %struct.ContainerChunk*, %struct.ContainerChunk** %309, align 8, !tbaa !476 | |
%311 = icmp eq %struct.ContainerChunk* %310, null | |
br i1 %311, label %330, label %312 | |
; <label>:312: ; preds = %308 | |
br label %313 | |
; <label>:313: ; preds = %313, %312 | |
%314 = phi %struct.ContainerChunk* [ %318, %313 ], [ %310, %312 ] | |
%315 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %314, i64 1 | |
%316 = bitcast %struct.ContainerChunk* %315 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %316) #0 | |
%317 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %314, i64 0, i32 0 | |
%318 = load %struct.ContainerChunk*, %struct.ContainerChunk** %317, align 8, !tbaa !476 | |
%319 = icmp eq %struct.ContainerChunk* %318, null | |
br i1 %319, label %320, label %313 | |
; <label>:320: ; preds = %313 | |
%321 = load %struct.ContainerChunk*, %struct.ContainerChunk** %309, align 8, !tbaa !482 | |
%322 = icmp eq %struct.ContainerChunk* %321, null | |
br i1 %322, label %330, label %323 | |
; <label>:323: ; preds = %320 | |
br label %324 | |
; <label>:324: ; preds = %324, %323 | |
%325 = phi %struct.ContainerChunk* [ %328, %324 ], [ %321, %323 ] | |
%326 = bitcast %struct.ContainerChunk* %325 to i8* | |
%327 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %325, i64 0, i32 0 | |
%328 = load %struct.ContainerChunk*, %struct.ContainerChunk** %327, align 8, !tbaa !484 | |
call void @free(i8* %326) #0 | |
%329 = icmp eq %struct.ContainerChunk* %328, null | |
br i1 %329, label %330, label %324 | |
; <label>:330: ; preds = %324, %320, %308 | |
%331 = bitcast %struct.ObjHeader* %306 to i8* | |
call void @free(i8* %331) #0 | |
br label %2461 | |
; <label>:332: ; preds = %288, %285 | |
%333 = phi %struct.ObjHeader* [ %286, %285 ], [ %290, %288 ] | |
%334 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %333, i64 1 | |
%335 = bitcast %struct.ObjHeader* %334 to %struct.ObjHeader** | |
%336 = load %struct.ObjHeader*, %struct.ObjHeader** %335, align 8 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %10, %struct.ObjHeader* %336) | |
%337 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%338 = load %struct.ObjHeader*, %struct.ObjHeader** %337, align 8, !tbaa !476 | |
%339 = icmp eq %struct.ObjHeader* %338, null | |
br i1 %339, label %349, label %340 | |
; <label>:340: ; preds = %332 | |
%341 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %338, i64 0, i32 0 | |
%342 = load %struct.TypeInfo*, %struct.TypeInfo** %341, align 8, !tbaa !477 | |
%343 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %338, i64 0, i32 1 | |
%344 = load %struct.ContainerHeader*, %struct.ContainerHeader** %343, align 8, !tbaa !479 | |
%345 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %342, i64 0, i32 0 | |
%346 = load %struct.TypeInfo*, %struct.TypeInfo** %345, align 8, !tbaa !480 | |
%347 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %346, i64 0, i32 5 | |
%348 = load i32, i32* %347, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %348, %struct.ContainerHeader* %344) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %337, align 8, !tbaa !476 | |
br label %349 | |
; <label>:349: ; preds = %340, %332 | |
%350 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%351 = icmp eq %struct.ObjHeader* %350, null | |
br i1 %351, label %376, label %352 | |
; <label>:352: ; preds = %349 | |
%353 = bitcast %struct.ObjHeader* %350 to %struct.ContainerChunk** | |
%354 = load %struct.ContainerChunk*, %struct.ContainerChunk** %353, align 8, !tbaa !476 | |
%355 = icmp eq %struct.ContainerChunk* %354, null | |
br i1 %355, label %374, label %356 | |
; <label>:356: ; preds = %352 | |
br label %357 | |
; <label>:357: ; preds = %357, %356 | |
%358 = phi %struct.ContainerChunk* [ %362, %357 ], [ %354, %356 ] | |
%359 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %358, i64 1 | |
%360 = bitcast %struct.ContainerChunk* %359 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %360) #0 | |
%361 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %358, i64 0, i32 0 | |
%362 = load %struct.ContainerChunk*, %struct.ContainerChunk** %361, align 8, !tbaa !476 | |
%363 = icmp eq %struct.ContainerChunk* %362, null | |
br i1 %363, label %364, label %357 | |
; <label>:364: ; preds = %357 | |
%365 = load %struct.ContainerChunk*, %struct.ContainerChunk** %353, align 8, !tbaa !482 | |
%366 = icmp eq %struct.ContainerChunk* %365, null | |
br i1 %366, label %374, label %367 | |
; <label>:367: ; preds = %364 | |
br label %368 | |
; <label>:368: ; preds = %368, %367 | |
%369 = phi %struct.ContainerChunk* [ %372, %368 ], [ %365, %367 ] | |
%370 = bitcast %struct.ContainerChunk* %369 to i8* | |
%371 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %369, i64 0, i32 0 | |
%372 = load %struct.ContainerChunk*, %struct.ContainerChunk** %371, align 8, !tbaa !484 | |
call void @free(i8* %370) #0 | |
%373 = icmp eq %struct.ContainerChunk* %372, null | |
br i1 %373, label %374, label %368 | |
; <label>:374: ; preds = %368, %364, %352 | |
%375 = bitcast %struct.ObjHeader* %350 to i8* | |
call void @free(i8* %375) #0 | |
br label %376 | |
; <label>:376: ; preds = %374, %349 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47) | |
%377 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %336, i64 1 | |
%378 = bitcast %struct.ObjHeader* %377 to i32* | |
%379 = load i32, i32* %378, align 8, !tbaa !492 | |
%380 = icmp ugt i32 %379, 7 | |
br i1 %380, label %384, label %381 | |
; <label>:381: ; preds = %376 | |
%382 = invoke fastcc %struct.ObjHeader* @ThrowArrayIndexOutOfBoundsException() #27 | |
to label %383 unwind label %2459 | |
; <label>:383: ; preds = %381 | |
unreachable | |
; <label>:384: ; preds = %376 | |
%385 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %336, i64 1, i32 1 | |
%386 = getelementptr inbounds %struct.ContainerHeader*, %struct.ContainerHeader** %385, i64 7 | |
%387 = bitcast %struct.ContainerHeader** %386 to %struct.ObjHeader** | |
%388 = load %struct.ObjHeader*, %struct.ObjHeader** %387, align 8, !tbaa !476 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %11, %struct.ObjHeader* %388) #0 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !494, metadata !412), !dbg !498 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !499, metadata !500), !dbg !498 | |
br i1 %152, label %389, label %391, !dbg !501 | |
; <label>:389: ; preds = %384 | |
%390 = icmp eq %struct.ObjHeader* %388, null, !dbg !501 | |
br i1 %390, label %2411, label %403 | |
; <label>:391: ; preds = %384 | |
%392 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %0, i64 0, i32 0, !dbg !501 | |
%393 = load %struct.TypeInfo*, %struct.TypeInfo** %392, align 8, !dbg !501 | |
%394 = getelementptr inbounds %struct.TypeInfo, %struct.TypeInfo* %393, i64 0, i32 0, !dbg !501 | |
%395 = load %struct.TypeInfo*, %struct.TypeInfo** %394, align 8, !dbg !501 | |
%396 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %395, i64 1, i32 1, i32 0, i64 8, !dbg !501 | |
%397 = bitcast i8* %396 to i1 (%struct.ObjHeader*, %struct.ObjHeader*)**, !dbg !501 | |
%398 = load i1 (%struct.ObjHeader*, %struct.ObjHeader*)*, i1 (%struct.ObjHeader*, %struct.ObjHeader*)** %397, align 8, !dbg !501 | |
%399 = invoke i1 %398(%struct.ObjHeader* nonnull %0, %struct.ObjHeader* %388) | |
to label %402 unwind label %400, !dbg !501 | |
; <label>:400: ; preds = %391 | |
%401 = landingpad { i8*, i32 } | |
cleanup, !dbg !502 | |
br label %2461, !dbg !502 | |
; <label>:402: ; preds = %391 | |
br i1 %399, label %2411, label %403 | |
; <label>:403: ; preds = %402, %389 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %47) | |
call void @llvm.memset.p0i8.i32(i8* %47, i8 0, i32 16, i32 8, i1 false) | |
%404 = load %struct.ObjHeader*, %struct.ObjHeader** @"kobjref:MyEnum.$OBJECT", align 8 | |
%405 = icmp ugt %struct.ObjHeader* %404, inttoptr (i64 1 to %struct.ObjHeader*) | |
br i1 %405, label %450, label %406 | |
; <label>:406: ; preds = %403 | |
%407 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%408 = invoke fastcc %struct.ObjHeader* @InitSharedInstance(%struct.ObjHeader** nonnull @"kobjref:MyEnum.$OBJECT", %struct.ObjHeader** nonnull @"kshadowobjref:MyEnum.$OBJECT", %struct.TypeInfo* getelementptr inbounds ({ %struct.TypeInfo, [3 x i8*] }, { %struct.TypeInfo, [3 x i8*] }* @"ktypeglobal:MyEnum.$OBJECT#internal", i64 0, i32 0), void (%struct.ObjHeader*)* nonnull @"kfun:MyEnum.$OBJECT.<init>()kotlin.Any", %struct.ObjHeader** %407) | |
to label %450 unwind label %409 | |
; <label>:409: ; preds = %406 | |
%410 = landingpad { i8*, i32 } | |
cleanup | |
%411 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%412 = load %struct.ObjHeader*, %struct.ObjHeader** %411, align 8, !tbaa !476 | |
%413 = icmp eq %struct.ObjHeader* %412, null | |
br i1 %413, label %423, label %414 | |
; <label>:414: ; preds = %409 | |
%415 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %412, i64 0, i32 0 | |
%416 = load %struct.TypeInfo*, %struct.TypeInfo** %415, align 8, !tbaa !477 | |
%417 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %412, i64 0, i32 1 | |
%418 = load %struct.ContainerHeader*, %struct.ContainerHeader** %417, align 8, !tbaa !479 | |
%419 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %416, i64 0, i32 0 | |
%420 = load %struct.TypeInfo*, %struct.TypeInfo** %419, align 8, !tbaa !480 | |
%421 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %420, i64 0, i32 5 | |
%422 = load i32, i32* %421, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %422, %struct.ContainerHeader* %418) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %411, align 8, !tbaa !476 | |
br label %423 | |
; <label>:423: ; preds = %414, %409 | |
%424 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%425 = icmp eq %struct.ObjHeader* %424, null | |
br i1 %425, label %2461, label %426 | |
; <label>:426: ; preds = %423 | |
%427 = bitcast %struct.ObjHeader* %424 to %struct.ContainerChunk** | |
%428 = load %struct.ContainerChunk*, %struct.ContainerChunk** %427, align 8, !tbaa !476 | |
%429 = icmp eq %struct.ContainerChunk* %428, null | |
br i1 %429, label %448, label %430 | |
; <label>:430: ; preds = %426 | |
br label %431 | |
; <label>:431: ; preds = %431, %430 | |
%432 = phi %struct.ContainerChunk* [ %436, %431 ], [ %428, %430 ] | |
%433 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %432, i64 1 | |
%434 = bitcast %struct.ContainerChunk* %433 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %434) #0 | |
%435 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %432, i64 0, i32 0 | |
%436 = load %struct.ContainerChunk*, %struct.ContainerChunk** %435, align 8, !tbaa !476 | |
%437 = icmp eq %struct.ContainerChunk* %436, null | |
br i1 %437, label %438, label %431 | |
; <label>:438: ; preds = %431 | |
%439 = load %struct.ContainerChunk*, %struct.ContainerChunk** %427, align 8, !tbaa !482 | |
%440 = icmp eq %struct.ContainerChunk* %439, null | |
br i1 %440, label %448, label %441 | |
; <label>:441: ; preds = %438 | |
br label %442 | |
; <label>:442: ; preds = %442, %441 | |
%443 = phi %struct.ContainerChunk* [ %446, %442 ], [ %439, %441 ] | |
%444 = bitcast %struct.ContainerChunk* %443 to i8* | |
%445 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %443, i64 0, i32 0 | |
%446 = load %struct.ContainerChunk*, %struct.ContainerChunk** %445, align 8, !tbaa !484 | |
call void @free(i8* %444) #0 | |
%447 = icmp eq %struct.ContainerChunk* %446, null | |
br i1 %447, label %448, label %442 | |
; <label>:448: ; preds = %442, %438, %426 | |
%449 = bitcast %struct.ObjHeader* %424 to i8* | |
call void @free(i8* %449) #0 | |
br label %2461 | |
; <label>:450: ; preds = %406, %403 | |
%451 = phi %struct.ObjHeader* [ %404, %403 ], [ %408, %406 ] | |
%452 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %451, i64 1 | |
%453 = bitcast %struct.ObjHeader* %452 to %struct.ObjHeader** | |
%454 = load %struct.ObjHeader*, %struct.ObjHeader** %453, align 8 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %12, %struct.ObjHeader* %454) | |
%455 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%456 = load %struct.ObjHeader*, %struct.ObjHeader** %455, align 8, !tbaa !476 | |
%457 = icmp eq %struct.ObjHeader* %456, null | |
br i1 %457, label %467, label %458 | |
; <label>:458: ; preds = %450 | |
%459 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %456, i64 0, i32 0 | |
%460 = load %struct.TypeInfo*, %struct.TypeInfo** %459, align 8, !tbaa !477 | |
%461 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %456, i64 0, i32 1 | |
%462 = load %struct.ContainerHeader*, %struct.ContainerHeader** %461, align 8, !tbaa !479 | |
%463 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %460, i64 0, i32 0 | |
%464 = load %struct.TypeInfo*, %struct.TypeInfo** %463, align 8, !tbaa !480 | |
%465 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %464, i64 0, i32 5 | |
%466 = load i32, i32* %465, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %466, %struct.ContainerHeader* %462) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %455, align 8, !tbaa !476 | |
br label %467 | |
; <label>:467: ; preds = %458, %450 | |
%468 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%469 = icmp eq %struct.ObjHeader* %468, null | |
br i1 %469, label %494, label %470 | |
; <label>:470: ; preds = %467 | |
%471 = bitcast %struct.ObjHeader* %468 to %struct.ContainerChunk** | |
%472 = load %struct.ContainerChunk*, %struct.ContainerChunk** %471, align 8, !tbaa !476 | |
%473 = icmp eq %struct.ContainerChunk* %472, null | |
br i1 %473, label %492, label %474 | |
; <label>:474: ; preds = %470 | |
br label %475 | |
; <label>:475: ; preds = %475, %474 | |
%476 = phi %struct.ContainerChunk* [ %480, %475 ], [ %472, %474 ] | |
%477 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %476, i64 1 | |
%478 = bitcast %struct.ContainerChunk* %477 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %478) #0 | |
%479 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %476, i64 0, i32 0 | |
%480 = load %struct.ContainerChunk*, %struct.ContainerChunk** %479, align 8, !tbaa !476 | |
%481 = icmp eq %struct.ContainerChunk* %480, null | |
br i1 %481, label %482, label %475 | |
; <label>:482: ; preds = %475 | |
%483 = load %struct.ContainerChunk*, %struct.ContainerChunk** %471, align 8, !tbaa !482 | |
%484 = icmp eq %struct.ContainerChunk* %483, null | |
br i1 %484, label %492, label %485 | |
; <label>:485: ; preds = %482 | |
br label %486 | |
; <label>:486: ; preds = %486, %485 | |
%487 = phi %struct.ContainerChunk* [ %490, %486 ], [ %483, %485 ] | |
%488 = bitcast %struct.ContainerChunk* %487 to i8* | |
%489 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %487, i64 0, i32 0 | |
%490 = load %struct.ContainerChunk*, %struct.ContainerChunk** %489, align 8, !tbaa !484 | |
call void @free(i8* %488) #0 | |
%491 = icmp eq %struct.ContainerChunk* %490, null | |
br i1 %491, label %492, label %486 | |
; <label>:492: ; preds = %486, %482, %470 | |
%493 = bitcast %struct.ObjHeader* %468 to i8* | |
call void @free(i8* %493) #0 | |
br label %494 | |
; <label>:494: ; preds = %492, %467 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47) | |
%495 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %454, i64 1 | |
%496 = bitcast %struct.ObjHeader* %495 to i32* | |
%497 = load i32, i32* %496, align 8, !tbaa !492 | |
%498 = icmp ugt i32 %497, 13 | |
br i1 %498, label %502, label %499 | |
; <label>:499: ; preds = %494 | |
%500 = invoke fastcc %struct.ObjHeader* @ThrowArrayIndexOutOfBoundsException() #27 | |
to label %501 unwind label %2459 | |
; <label>:501: ; preds = %499 | |
unreachable | |
; <label>:502: ; preds = %494 | |
%503 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %454, i64 1, i32 1 | |
%504 = getelementptr inbounds %struct.ContainerHeader*, %struct.ContainerHeader** %503, i64 13 | |
%505 = bitcast %struct.ContainerHeader** %504 to %struct.ObjHeader** | |
%506 = load %struct.ObjHeader*, %struct.ObjHeader** %505, align 8, !tbaa !476 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %13, %struct.ObjHeader* %506) #0 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !494, metadata !412), !dbg !498 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !499, metadata !500), !dbg !498 | |
br i1 %152, label %507, label %509, !dbg !501 | |
; <label>:507: ; preds = %502 | |
%508 = icmp eq %struct.ObjHeader* %506, null, !dbg !501 | |
br i1 %508, label %2411, label %521 | |
; <label>:509: ; preds = %502 | |
%510 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %0, i64 0, i32 0, !dbg !501 | |
%511 = load %struct.TypeInfo*, %struct.TypeInfo** %510, align 8, !dbg !501 | |
%512 = getelementptr inbounds %struct.TypeInfo, %struct.TypeInfo* %511, i64 0, i32 0, !dbg !501 | |
%513 = load %struct.TypeInfo*, %struct.TypeInfo** %512, align 8, !dbg !501 | |
%514 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %513, i64 1, i32 1, i32 0, i64 8, !dbg !501 | |
%515 = bitcast i8* %514 to i1 (%struct.ObjHeader*, %struct.ObjHeader*)**, !dbg !501 | |
%516 = load i1 (%struct.ObjHeader*, %struct.ObjHeader*)*, i1 (%struct.ObjHeader*, %struct.ObjHeader*)** %515, align 8, !dbg !501 | |
%517 = invoke i1 %516(%struct.ObjHeader* nonnull %0, %struct.ObjHeader* %506) | |
to label %520 unwind label %518, !dbg !501 | |
; <label>:518: ; preds = %509 | |
%519 = landingpad { i8*, i32 } | |
cleanup, !dbg !502 | |
br label %2461, !dbg !502 | |
; <label>:520: ; preds = %509 | |
br i1 %517, label %2411, label %521 | |
; <label>:521: ; preds = %520, %507 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %47) | |
call void @llvm.memset.p0i8.i32(i8* %47, i8 0, i32 16, i32 8, i1 false) | |
%522 = load %struct.ObjHeader*, %struct.ObjHeader** @"kobjref:MyEnum.$OBJECT", align 8 | |
%523 = icmp ugt %struct.ObjHeader* %522, inttoptr (i64 1 to %struct.ObjHeader*) | |
br i1 %523, label %568, label %524 | |
; <label>:524: ; preds = %521 | |
%525 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%526 = invoke fastcc %struct.ObjHeader* @InitSharedInstance(%struct.ObjHeader** nonnull @"kobjref:MyEnum.$OBJECT", %struct.ObjHeader** nonnull @"kshadowobjref:MyEnum.$OBJECT", %struct.TypeInfo* getelementptr inbounds ({ %struct.TypeInfo, [3 x i8*] }, { %struct.TypeInfo, [3 x i8*] }* @"ktypeglobal:MyEnum.$OBJECT#internal", i64 0, i32 0), void (%struct.ObjHeader*)* nonnull @"kfun:MyEnum.$OBJECT.<init>()kotlin.Any", %struct.ObjHeader** %525) | |
to label %568 unwind label %527 | |
; <label>:527: ; preds = %524 | |
%528 = landingpad { i8*, i32 } | |
cleanup | |
%529 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%530 = load %struct.ObjHeader*, %struct.ObjHeader** %529, align 8, !tbaa !476 | |
%531 = icmp eq %struct.ObjHeader* %530, null | |
br i1 %531, label %541, label %532 | |
; <label>:532: ; preds = %527 | |
%533 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %530, i64 0, i32 0 | |
%534 = load %struct.TypeInfo*, %struct.TypeInfo** %533, align 8, !tbaa !477 | |
%535 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %530, i64 0, i32 1 | |
%536 = load %struct.ContainerHeader*, %struct.ContainerHeader** %535, align 8, !tbaa !479 | |
%537 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %534, i64 0, i32 0 | |
%538 = load %struct.TypeInfo*, %struct.TypeInfo** %537, align 8, !tbaa !480 | |
%539 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %538, i64 0, i32 5 | |
%540 = load i32, i32* %539, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %540, %struct.ContainerHeader* %536) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %529, align 8, !tbaa !476 | |
br label %541 | |
; <label>:541: ; preds = %532, %527 | |
%542 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%543 = icmp eq %struct.ObjHeader* %542, null | |
br i1 %543, label %2461, label %544 | |
; <label>:544: ; preds = %541 | |
%545 = bitcast %struct.ObjHeader* %542 to %struct.ContainerChunk** | |
%546 = load %struct.ContainerChunk*, %struct.ContainerChunk** %545, align 8, !tbaa !476 | |
%547 = icmp eq %struct.ContainerChunk* %546, null | |
br i1 %547, label %566, label %548 | |
; <label>:548: ; preds = %544 | |
br label %549 | |
; <label>:549: ; preds = %549, %548 | |
%550 = phi %struct.ContainerChunk* [ %554, %549 ], [ %546, %548 ] | |
%551 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %550, i64 1 | |
%552 = bitcast %struct.ContainerChunk* %551 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %552) #0 | |
%553 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %550, i64 0, i32 0 | |
%554 = load %struct.ContainerChunk*, %struct.ContainerChunk** %553, align 8, !tbaa !476 | |
%555 = icmp eq %struct.ContainerChunk* %554, null | |
br i1 %555, label %556, label %549 | |
; <label>:556: ; preds = %549 | |
%557 = load %struct.ContainerChunk*, %struct.ContainerChunk** %545, align 8, !tbaa !482 | |
%558 = icmp eq %struct.ContainerChunk* %557, null | |
br i1 %558, label %566, label %559 | |
; <label>:559: ; preds = %556 | |
br label %560 | |
; <label>:560: ; preds = %560, %559 | |
%561 = phi %struct.ContainerChunk* [ %564, %560 ], [ %557, %559 ] | |
%562 = bitcast %struct.ContainerChunk* %561 to i8* | |
%563 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %561, i64 0, i32 0 | |
%564 = load %struct.ContainerChunk*, %struct.ContainerChunk** %563, align 8, !tbaa !484 | |
call void @free(i8* %562) #0 | |
%565 = icmp eq %struct.ContainerChunk* %564, null | |
br i1 %565, label %566, label %560 | |
; <label>:566: ; preds = %560, %556, %544 | |
%567 = bitcast %struct.ObjHeader* %542 to i8* | |
call void @free(i8* %567) #0 | |
br label %2461 | |
; <label>:568: ; preds = %524, %521 | |
%569 = phi %struct.ObjHeader* [ %522, %521 ], [ %526, %524 ] | |
%570 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %569, i64 1 | |
%571 = bitcast %struct.ObjHeader* %570 to %struct.ObjHeader** | |
%572 = load %struct.ObjHeader*, %struct.ObjHeader** %571, align 8 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %14, %struct.ObjHeader* %572) | |
%573 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%574 = load %struct.ObjHeader*, %struct.ObjHeader** %573, align 8, !tbaa !476 | |
%575 = icmp eq %struct.ObjHeader* %574, null | |
br i1 %575, label %585, label %576 | |
; <label>:576: ; preds = %568 | |
%577 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %574, i64 0, i32 0 | |
%578 = load %struct.TypeInfo*, %struct.TypeInfo** %577, align 8, !tbaa !477 | |
%579 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %574, i64 0, i32 1 | |
%580 = load %struct.ContainerHeader*, %struct.ContainerHeader** %579, align 8, !tbaa !479 | |
%581 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %578, i64 0, i32 0 | |
%582 = load %struct.TypeInfo*, %struct.TypeInfo** %581, align 8, !tbaa !480 | |
%583 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %582, i64 0, i32 5 | |
%584 = load i32, i32* %583, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %584, %struct.ContainerHeader* %580) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %573, align 8, !tbaa !476 | |
br label %585 | |
; <label>:585: ; preds = %576, %568 | |
%586 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%587 = icmp eq %struct.ObjHeader* %586, null | |
br i1 %587, label %612, label %588 | |
; <label>:588: ; preds = %585 | |
%589 = bitcast %struct.ObjHeader* %586 to %struct.ContainerChunk** | |
%590 = load %struct.ContainerChunk*, %struct.ContainerChunk** %589, align 8, !tbaa !476 | |
%591 = icmp eq %struct.ContainerChunk* %590, null | |
br i1 %591, label %610, label %592 | |
; <label>:592: ; preds = %588 | |
br label %593 | |
; <label>:593: ; preds = %593, %592 | |
%594 = phi %struct.ContainerChunk* [ %598, %593 ], [ %590, %592 ] | |
%595 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %594, i64 1 | |
%596 = bitcast %struct.ContainerChunk* %595 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %596) #0 | |
%597 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %594, i64 0, i32 0 | |
%598 = load %struct.ContainerChunk*, %struct.ContainerChunk** %597, align 8, !tbaa !476 | |
%599 = icmp eq %struct.ContainerChunk* %598, null | |
br i1 %599, label %600, label %593 | |
; <label>:600: ; preds = %593 | |
%601 = load %struct.ContainerChunk*, %struct.ContainerChunk** %589, align 8, !tbaa !482 | |
%602 = icmp eq %struct.ContainerChunk* %601, null | |
br i1 %602, label %610, label %603 | |
; <label>:603: ; preds = %600 | |
br label %604 | |
; <label>:604: ; preds = %604, %603 | |
%605 = phi %struct.ContainerChunk* [ %608, %604 ], [ %601, %603 ] | |
%606 = bitcast %struct.ContainerChunk* %605 to i8* | |
%607 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %605, i64 0, i32 0 | |
%608 = load %struct.ContainerChunk*, %struct.ContainerChunk** %607, align 8, !tbaa !484 | |
call void @free(i8* %606) #0 | |
%609 = icmp eq %struct.ContainerChunk* %608, null | |
br i1 %609, label %610, label %604 | |
; <label>:610: ; preds = %604, %600, %588 | |
%611 = bitcast %struct.ObjHeader* %586 to i8* | |
call void @free(i8* %611) #0 | |
br label %612 | |
; <label>:612: ; preds = %610, %585 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47) | |
%613 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %572, i64 1 | |
%614 = bitcast %struct.ObjHeader* %613 to i32* | |
%615 = load i32, i32* %614, align 8, !tbaa !492 | |
%616 = icmp ugt i32 %615, 18 | |
br i1 %616, label %620, label %617 | |
; <label>:617: ; preds = %612 | |
%618 = invoke fastcc %struct.ObjHeader* @ThrowArrayIndexOutOfBoundsException() #27 | |
to label %619 unwind label %2459 | |
; <label>:619: ; preds = %617 | |
unreachable | |
; <label>:620: ; preds = %612 | |
%621 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %572, i64 1, i32 1 | |
%622 = getelementptr inbounds %struct.ContainerHeader*, %struct.ContainerHeader** %621, i64 18 | |
%623 = bitcast %struct.ContainerHeader** %622 to %struct.ObjHeader** | |
%624 = load %struct.ObjHeader*, %struct.ObjHeader** %623, align 8, !tbaa !476 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %15, %struct.ObjHeader* %624) #0 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !494, metadata !412), !dbg !498 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !499, metadata !500), !dbg !498 | |
br i1 %152, label %625, label %627, !dbg !501 | |
; <label>:625: ; preds = %620 | |
%626 = icmp eq %struct.ObjHeader* %624, null, !dbg !501 | |
br i1 %626, label %2411, label %639 | |
; <label>:627: ; preds = %620 | |
%628 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %0, i64 0, i32 0, !dbg !501 | |
%629 = load %struct.TypeInfo*, %struct.TypeInfo** %628, align 8, !dbg !501 | |
%630 = getelementptr inbounds %struct.TypeInfo, %struct.TypeInfo* %629, i64 0, i32 0, !dbg !501 | |
%631 = load %struct.TypeInfo*, %struct.TypeInfo** %630, align 8, !dbg !501 | |
%632 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %631, i64 1, i32 1, i32 0, i64 8, !dbg !501 | |
%633 = bitcast i8* %632 to i1 (%struct.ObjHeader*, %struct.ObjHeader*)**, !dbg !501 | |
%634 = load i1 (%struct.ObjHeader*, %struct.ObjHeader*)*, i1 (%struct.ObjHeader*, %struct.ObjHeader*)** %633, align 8, !dbg !501 | |
%635 = invoke i1 %634(%struct.ObjHeader* nonnull %0, %struct.ObjHeader* %624) | |
to label %638 unwind label %636, !dbg !501 | |
; <label>:636: ; preds = %627 | |
%637 = landingpad { i8*, i32 } | |
cleanup, !dbg !502 | |
br label %2461, !dbg !502 | |
; <label>:638: ; preds = %627 | |
br i1 %635, label %2411, label %639 | |
; <label>:639: ; preds = %638, %625 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %47) | |
call void @llvm.memset.p0i8.i32(i8* %47, i8 0, i32 16, i32 8, i1 false) | |
%640 = load %struct.ObjHeader*, %struct.ObjHeader** @"kobjref:MyEnum.$OBJECT", align 8 | |
%641 = icmp ugt %struct.ObjHeader* %640, inttoptr (i64 1 to %struct.ObjHeader*) | |
br i1 %641, label %686, label %642 | |
; <label>:642: ; preds = %639 | |
%643 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%644 = invoke fastcc %struct.ObjHeader* @InitSharedInstance(%struct.ObjHeader** nonnull @"kobjref:MyEnum.$OBJECT", %struct.ObjHeader** nonnull @"kshadowobjref:MyEnum.$OBJECT", %struct.TypeInfo* getelementptr inbounds ({ %struct.TypeInfo, [3 x i8*] }, { %struct.TypeInfo, [3 x i8*] }* @"ktypeglobal:MyEnum.$OBJECT#internal", i64 0, i32 0), void (%struct.ObjHeader*)* nonnull @"kfun:MyEnum.$OBJECT.<init>()kotlin.Any", %struct.ObjHeader** %643) | |
to label %686 unwind label %645 | |
; <label>:645: ; preds = %642 | |
%646 = landingpad { i8*, i32 } | |
cleanup | |
%647 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%648 = load %struct.ObjHeader*, %struct.ObjHeader** %647, align 8, !tbaa !476 | |
%649 = icmp eq %struct.ObjHeader* %648, null | |
br i1 %649, label %659, label %650 | |
; <label>:650: ; preds = %645 | |
%651 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %648, i64 0, i32 0 | |
%652 = load %struct.TypeInfo*, %struct.TypeInfo** %651, align 8, !tbaa !477 | |
%653 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %648, i64 0, i32 1 | |
%654 = load %struct.ContainerHeader*, %struct.ContainerHeader** %653, align 8, !tbaa !479 | |
%655 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %652, i64 0, i32 0 | |
%656 = load %struct.TypeInfo*, %struct.TypeInfo** %655, align 8, !tbaa !480 | |
%657 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %656, i64 0, i32 5 | |
%658 = load i32, i32* %657, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %658, %struct.ContainerHeader* %654) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %647, align 8, !tbaa !476 | |
br label %659 | |
; <label>:659: ; preds = %650, %645 | |
%660 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%661 = icmp eq %struct.ObjHeader* %660, null | |
br i1 %661, label %2461, label %662 | |
; <label>:662: ; preds = %659 | |
%663 = bitcast %struct.ObjHeader* %660 to %struct.ContainerChunk** | |
%664 = load %struct.ContainerChunk*, %struct.ContainerChunk** %663, align 8, !tbaa !476 | |
%665 = icmp eq %struct.ContainerChunk* %664, null | |
br i1 %665, label %684, label %666 | |
; <label>:666: ; preds = %662 | |
br label %667 | |
; <label>:667: ; preds = %667, %666 | |
%668 = phi %struct.ContainerChunk* [ %672, %667 ], [ %664, %666 ] | |
%669 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %668, i64 1 | |
%670 = bitcast %struct.ContainerChunk* %669 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %670) #0 | |
%671 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %668, i64 0, i32 0 | |
%672 = load %struct.ContainerChunk*, %struct.ContainerChunk** %671, align 8, !tbaa !476 | |
%673 = icmp eq %struct.ContainerChunk* %672, null | |
br i1 %673, label %674, label %667 | |
; <label>:674: ; preds = %667 | |
%675 = load %struct.ContainerChunk*, %struct.ContainerChunk** %663, align 8, !tbaa !482 | |
%676 = icmp eq %struct.ContainerChunk* %675, null | |
br i1 %676, label %684, label %677 | |
; <label>:677: ; preds = %674 | |
br label %678 | |
; <label>:678: ; preds = %678, %677 | |
%679 = phi %struct.ContainerChunk* [ %682, %678 ], [ %675, %677 ] | |
%680 = bitcast %struct.ContainerChunk* %679 to i8* | |
%681 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %679, i64 0, i32 0 | |
%682 = load %struct.ContainerChunk*, %struct.ContainerChunk** %681, align 8, !tbaa !484 | |
call void @free(i8* %680) #0 | |
%683 = icmp eq %struct.ContainerChunk* %682, null | |
br i1 %683, label %684, label %678 | |
; <label>:684: ; preds = %678, %674, %662 | |
%685 = bitcast %struct.ObjHeader* %660 to i8* | |
call void @free(i8* %685) #0 | |
br label %2461 | |
; <label>:686: ; preds = %642, %639 | |
%687 = phi %struct.ObjHeader* [ %640, %639 ], [ %644, %642 ] | |
%688 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %687, i64 1 | |
%689 = bitcast %struct.ObjHeader* %688 to %struct.ObjHeader** | |
%690 = load %struct.ObjHeader*, %struct.ObjHeader** %689, align 8 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %16, %struct.ObjHeader* %690) | |
%691 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%692 = load %struct.ObjHeader*, %struct.ObjHeader** %691, align 8, !tbaa !476 | |
%693 = icmp eq %struct.ObjHeader* %692, null | |
br i1 %693, label %703, label %694 | |
; <label>:694: ; preds = %686 | |
%695 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %692, i64 0, i32 0 | |
%696 = load %struct.TypeInfo*, %struct.TypeInfo** %695, align 8, !tbaa !477 | |
%697 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %692, i64 0, i32 1 | |
%698 = load %struct.ContainerHeader*, %struct.ContainerHeader** %697, align 8, !tbaa !479 | |
%699 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %696, i64 0, i32 0 | |
%700 = load %struct.TypeInfo*, %struct.TypeInfo** %699, align 8, !tbaa !480 | |
%701 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %700, i64 0, i32 5 | |
%702 = load i32, i32* %701, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %702, %struct.ContainerHeader* %698) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %691, align 8, !tbaa !476 | |
br label %703 | |
; <label>:703: ; preds = %694, %686 | |
%704 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%705 = icmp eq %struct.ObjHeader* %704, null | |
br i1 %705, label %730, label %706 | |
; <label>:706: ; preds = %703 | |
%707 = bitcast %struct.ObjHeader* %704 to %struct.ContainerChunk** | |
%708 = load %struct.ContainerChunk*, %struct.ContainerChunk** %707, align 8, !tbaa !476 | |
%709 = icmp eq %struct.ContainerChunk* %708, null | |
br i1 %709, label %728, label %710 | |
; <label>:710: ; preds = %706 | |
br label %711 | |
; <label>:711: ; preds = %711, %710 | |
%712 = phi %struct.ContainerChunk* [ %716, %711 ], [ %708, %710 ] | |
%713 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %712, i64 1 | |
%714 = bitcast %struct.ContainerChunk* %713 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %714) #0 | |
%715 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %712, i64 0, i32 0 | |
%716 = load %struct.ContainerChunk*, %struct.ContainerChunk** %715, align 8, !tbaa !476 | |
%717 = icmp eq %struct.ContainerChunk* %716, null | |
br i1 %717, label %718, label %711 | |
; <label>:718: ; preds = %711 | |
%719 = load %struct.ContainerChunk*, %struct.ContainerChunk** %707, align 8, !tbaa !482 | |
%720 = icmp eq %struct.ContainerChunk* %719, null | |
br i1 %720, label %728, label %721 | |
; <label>:721: ; preds = %718 | |
br label %722 | |
; <label>:722: ; preds = %722, %721 | |
%723 = phi %struct.ContainerChunk* [ %726, %722 ], [ %719, %721 ] | |
%724 = bitcast %struct.ContainerChunk* %723 to i8* | |
%725 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %723, i64 0, i32 0 | |
%726 = load %struct.ContainerChunk*, %struct.ContainerChunk** %725, align 8, !tbaa !484 | |
call void @free(i8* %724) #0 | |
%727 = icmp eq %struct.ContainerChunk* %726, null | |
br i1 %727, label %728, label %722 | |
; <label>:728: ; preds = %722, %718, %706 | |
%729 = bitcast %struct.ObjHeader* %704 to i8* | |
call void @free(i8* %729) #0 | |
br label %730 | |
; <label>:730: ; preds = %728, %703 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47) | |
%731 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %690, i64 1 | |
%732 = bitcast %struct.ObjHeader* %731 to i32* | |
%733 = load i32, i32* %732, align 8, !tbaa !492 | |
%734 = icmp ugt i32 %733, 24 | |
br i1 %734, label %738, label %735 | |
; <label>:735: ; preds = %730 | |
%736 = invoke fastcc %struct.ObjHeader* @ThrowArrayIndexOutOfBoundsException() #27 | |
to label %737 unwind label %2459 | |
; <label>:737: ; preds = %735 | |
unreachable | |
; <label>:738: ; preds = %730 | |
%739 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %690, i64 1, i32 1 | |
%740 = getelementptr inbounds %struct.ContainerHeader*, %struct.ContainerHeader** %739, i64 24 | |
%741 = bitcast %struct.ContainerHeader** %740 to %struct.ObjHeader** | |
%742 = load %struct.ObjHeader*, %struct.ObjHeader** %741, align 8, !tbaa !476 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %17, %struct.ObjHeader* %742) #0 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !494, metadata !412), !dbg !498 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !499, metadata !500), !dbg !498 | |
br i1 %152, label %743, label %745, !dbg !501 | |
; <label>:743: ; preds = %738 | |
%744 = icmp eq %struct.ObjHeader* %742, null, !dbg !501 | |
br i1 %744, label %2411, label %757 | |
; <label>:745: ; preds = %738 | |
%746 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %0, i64 0, i32 0, !dbg !501 | |
%747 = load %struct.TypeInfo*, %struct.TypeInfo** %746, align 8, !dbg !501 | |
%748 = getelementptr inbounds %struct.TypeInfo, %struct.TypeInfo* %747, i64 0, i32 0, !dbg !501 | |
%749 = load %struct.TypeInfo*, %struct.TypeInfo** %748, align 8, !dbg !501 | |
%750 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %749, i64 1, i32 1, i32 0, i64 8, !dbg !501 | |
%751 = bitcast i8* %750 to i1 (%struct.ObjHeader*, %struct.ObjHeader*)**, !dbg !501 | |
%752 = load i1 (%struct.ObjHeader*, %struct.ObjHeader*)*, i1 (%struct.ObjHeader*, %struct.ObjHeader*)** %751, align 8, !dbg !501 | |
%753 = invoke i1 %752(%struct.ObjHeader* nonnull %0, %struct.ObjHeader* %742) | |
to label %756 unwind label %754, !dbg !501 | |
; <label>:754: ; preds = %745 | |
%755 = landingpad { i8*, i32 } | |
cleanup, !dbg !502 | |
br label %2461, !dbg !502 | |
; <label>:756: ; preds = %745 | |
br i1 %753, label %2411, label %757 | |
; <label>:757: ; preds = %756, %743 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %47) | |
call void @llvm.memset.p0i8.i32(i8* %47, i8 0, i32 16, i32 8, i1 false) | |
%758 = load %struct.ObjHeader*, %struct.ObjHeader** @"kobjref:MyEnum.$OBJECT", align 8 | |
%759 = icmp ugt %struct.ObjHeader* %758, inttoptr (i64 1 to %struct.ObjHeader*) | |
br i1 %759, label %804, label %760 | |
; <label>:760: ; preds = %757 | |
%761 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%762 = invoke fastcc %struct.ObjHeader* @InitSharedInstance(%struct.ObjHeader** nonnull @"kobjref:MyEnum.$OBJECT", %struct.ObjHeader** nonnull @"kshadowobjref:MyEnum.$OBJECT", %struct.TypeInfo* getelementptr inbounds ({ %struct.TypeInfo, [3 x i8*] }, { %struct.TypeInfo, [3 x i8*] }* @"ktypeglobal:MyEnum.$OBJECT#internal", i64 0, i32 0), void (%struct.ObjHeader*)* nonnull @"kfun:MyEnum.$OBJECT.<init>()kotlin.Any", %struct.ObjHeader** %761) | |
to label %804 unwind label %763 | |
; <label>:763: ; preds = %760 | |
%764 = landingpad { i8*, i32 } | |
cleanup | |
%765 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%766 = load %struct.ObjHeader*, %struct.ObjHeader** %765, align 8, !tbaa !476 | |
%767 = icmp eq %struct.ObjHeader* %766, null | |
br i1 %767, label %777, label %768 | |
; <label>:768: ; preds = %763 | |
%769 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %766, i64 0, i32 0 | |
%770 = load %struct.TypeInfo*, %struct.TypeInfo** %769, align 8, !tbaa !477 | |
%771 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %766, i64 0, i32 1 | |
%772 = load %struct.ContainerHeader*, %struct.ContainerHeader** %771, align 8, !tbaa !479 | |
%773 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %770, i64 0, i32 0 | |
%774 = load %struct.TypeInfo*, %struct.TypeInfo** %773, align 8, !tbaa !480 | |
%775 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %774, i64 0, i32 5 | |
%776 = load i32, i32* %775, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %776, %struct.ContainerHeader* %772) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %765, align 8, !tbaa !476 | |
br label %777 | |
; <label>:777: ; preds = %768, %763 | |
%778 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%779 = icmp eq %struct.ObjHeader* %778, null | |
br i1 %779, label %2461, label %780 | |
; <label>:780: ; preds = %777 | |
%781 = bitcast %struct.ObjHeader* %778 to %struct.ContainerChunk** | |
%782 = load %struct.ContainerChunk*, %struct.ContainerChunk** %781, align 8, !tbaa !476 | |
%783 = icmp eq %struct.ContainerChunk* %782, null | |
br i1 %783, label %802, label %784 | |
; <label>:784: ; preds = %780 | |
br label %785 | |
; <label>:785: ; preds = %785, %784 | |
%786 = phi %struct.ContainerChunk* [ %790, %785 ], [ %782, %784 ] | |
%787 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %786, i64 1 | |
%788 = bitcast %struct.ContainerChunk* %787 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %788) #0 | |
%789 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %786, i64 0, i32 0 | |
%790 = load %struct.ContainerChunk*, %struct.ContainerChunk** %789, align 8, !tbaa !476 | |
%791 = icmp eq %struct.ContainerChunk* %790, null | |
br i1 %791, label %792, label %785 | |
; <label>:792: ; preds = %785 | |
%793 = load %struct.ContainerChunk*, %struct.ContainerChunk** %781, align 8, !tbaa !482 | |
%794 = icmp eq %struct.ContainerChunk* %793, null | |
br i1 %794, label %802, label %795 | |
; <label>:795: ; preds = %792 | |
br label %796 | |
; <label>:796: ; preds = %796, %795 | |
%797 = phi %struct.ContainerChunk* [ %800, %796 ], [ %793, %795 ] | |
%798 = bitcast %struct.ContainerChunk* %797 to i8* | |
%799 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %797, i64 0, i32 0 | |
%800 = load %struct.ContainerChunk*, %struct.ContainerChunk** %799, align 8, !tbaa !484 | |
call void @free(i8* %798) #0 | |
%801 = icmp eq %struct.ContainerChunk* %800, null | |
br i1 %801, label %802, label %796 | |
; <label>:802: ; preds = %796, %792, %780 | |
%803 = bitcast %struct.ObjHeader* %778 to i8* | |
call void @free(i8* %803) #0 | |
br label %2461 | |
; <label>:804: ; preds = %760, %757 | |
%805 = phi %struct.ObjHeader* [ %758, %757 ], [ %762, %760 ] | |
%806 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %805, i64 1 | |
%807 = bitcast %struct.ObjHeader* %806 to %struct.ObjHeader** | |
%808 = load %struct.ObjHeader*, %struct.ObjHeader** %807, align 8 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %18, %struct.ObjHeader* %808) | |
%809 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%810 = load %struct.ObjHeader*, %struct.ObjHeader** %809, align 8, !tbaa !476 | |
%811 = icmp eq %struct.ObjHeader* %810, null | |
br i1 %811, label %821, label %812 | |
; <label>:812: ; preds = %804 | |
%813 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %810, i64 0, i32 0 | |
%814 = load %struct.TypeInfo*, %struct.TypeInfo** %813, align 8, !tbaa !477 | |
%815 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %810, i64 0, i32 1 | |
%816 = load %struct.ContainerHeader*, %struct.ContainerHeader** %815, align 8, !tbaa !479 | |
%817 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %814, i64 0, i32 0 | |
%818 = load %struct.TypeInfo*, %struct.TypeInfo** %817, align 8, !tbaa !480 | |
%819 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %818, i64 0, i32 5 | |
%820 = load i32, i32* %819, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %820, %struct.ContainerHeader* %816) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %809, align 8, !tbaa !476 | |
br label %821 | |
; <label>:821: ; preds = %812, %804 | |
%822 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%823 = icmp eq %struct.ObjHeader* %822, null | |
br i1 %823, label %848, label %824 | |
; <label>:824: ; preds = %821 | |
%825 = bitcast %struct.ObjHeader* %822 to %struct.ContainerChunk** | |
%826 = load %struct.ContainerChunk*, %struct.ContainerChunk** %825, align 8, !tbaa !476 | |
%827 = icmp eq %struct.ContainerChunk* %826, null | |
br i1 %827, label %846, label %828 | |
; <label>:828: ; preds = %824 | |
br label %829 | |
; <label>:829: ; preds = %829, %828 | |
%830 = phi %struct.ContainerChunk* [ %834, %829 ], [ %826, %828 ] | |
%831 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %830, i64 1 | |
%832 = bitcast %struct.ContainerChunk* %831 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %832) #0 | |
%833 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %830, i64 0, i32 0 | |
%834 = load %struct.ContainerChunk*, %struct.ContainerChunk** %833, align 8, !tbaa !476 | |
%835 = icmp eq %struct.ContainerChunk* %834, null | |
br i1 %835, label %836, label %829 | |
; <label>:836: ; preds = %829 | |
%837 = load %struct.ContainerChunk*, %struct.ContainerChunk** %825, align 8, !tbaa !482 | |
%838 = icmp eq %struct.ContainerChunk* %837, null | |
br i1 %838, label %846, label %839 | |
; <label>:839: ; preds = %836 | |
br label %840 | |
; <label>:840: ; preds = %840, %839 | |
%841 = phi %struct.ContainerChunk* [ %844, %840 ], [ %837, %839 ] | |
%842 = bitcast %struct.ContainerChunk* %841 to i8* | |
%843 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %841, i64 0, i32 0 | |
%844 = load %struct.ContainerChunk*, %struct.ContainerChunk** %843, align 8, !tbaa !484 | |
call void @free(i8* %842) #0 | |
%845 = icmp eq %struct.ContainerChunk* %844, null | |
br i1 %845, label %846, label %840 | |
; <label>:846: ; preds = %840, %836, %824 | |
%847 = bitcast %struct.ObjHeader* %822 to i8* | |
call void @free(i8* %847) #0 | |
br label %848 | |
; <label>:848: ; preds = %846, %821 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47) | |
%849 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %808, i64 1 | |
%850 = bitcast %struct.ObjHeader* %849 to i32* | |
%851 = load i32, i32* %850, align 8, !tbaa !492 | |
%852 = icmp ugt i32 %851, 29 | |
br i1 %852, label %856, label %853 | |
; <label>:853: ; preds = %848 | |
%854 = invoke fastcc %struct.ObjHeader* @ThrowArrayIndexOutOfBoundsException() #27 | |
to label %855 unwind label %2459 | |
; <label>:855: ; preds = %853 | |
unreachable | |
; <label>:856: ; preds = %848 | |
%857 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %808, i64 1, i32 1 | |
%858 = getelementptr inbounds %struct.ContainerHeader*, %struct.ContainerHeader** %857, i64 29 | |
%859 = bitcast %struct.ContainerHeader** %858 to %struct.ObjHeader** | |
%860 = load %struct.ObjHeader*, %struct.ObjHeader** %859, align 8, !tbaa !476 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %19, %struct.ObjHeader* %860) #0 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !494, metadata !412), !dbg !498 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !499, metadata !500), !dbg !498 | |
br i1 %152, label %861, label %863, !dbg !501 | |
; <label>:861: ; preds = %856 | |
%862 = icmp eq %struct.ObjHeader* %860, null, !dbg !501 | |
br i1 %862, label %2411, label %875 | |
; <label>:863: ; preds = %856 | |
%864 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %0, i64 0, i32 0, !dbg !501 | |
%865 = load %struct.TypeInfo*, %struct.TypeInfo** %864, align 8, !dbg !501 | |
%866 = getelementptr inbounds %struct.TypeInfo, %struct.TypeInfo* %865, i64 0, i32 0, !dbg !501 | |
%867 = load %struct.TypeInfo*, %struct.TypeInfo** %866, align 8, !dbg !501 | |
%868 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %867, i64 1, i32 1, i32 0, i64 8, !dbg !501 | |
%869 = bitcast i8* %868 to i1 (%struct.ObjHeader*, %struct.ObjHeader*)**, !dbg !501 | |
%870 = load i1 (%struct.ObjHeader*, %struct.ObjHeader*)*, i1 (%struct.ObjHeader*, %struct.ObjHeader*)** %869, align 8, !dbg !501 | |
%871 = invoke i1 %870(%struct.ObjHeader* nonnull %0, %struct.ObjHeader* %860) | |
to label %874 unwind label %872, !dbg !501 | |
; <label>:872: ; preds = %863 | |
%873 = landingpad { i8*, i32 } | |
cleanup, !dbg !502 | |
br label %2461, !dbg !502 | |
; <label>:874: ; preds = %863 | |
br i1 %871, label %2411, label %875 | |
; <label>:875: ; preds = %874, %861 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %47) | |
call void @llvm.memset.p0i8.i32(i8* %47, i8 0, i32 16, i32 8, i1 false) | |
%876 = load %struct.ObjHeader*, %struct.ObjHeader** @"kobjref:MyEnum.$OBJECT", align 8 | |
%877 = icmp ugt %struct.ObjHeader* %876, inttoptr (i64 1 to %struct.ObjHeader*) | |
br i1 %877, label %922, label %878 | |
; <label>:878: ; preds = %875 | |
%879 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%880 = invoke fastcc %struct.ObjHeader* @InitSharedInstance(%struct.ObjHeader** nonnull @"kobjref:MyEnum.$OBJECT", %struct.ObjHeader** nonnull @"kshadowobjref:MyEnum.$OBJECT", %struct.TypeInfo* getelementptr inbounds ({ %struct.TypeInfo, [3 x i8*] }, { %struct.TypeInfo, [3 x i8*] }* @"ktypeglobal:MyEnum.$OBJECT#internal", i64 0, i32 0), void (%struct.ObjHeader*)* nonnull @"kfun:MyEnum.$OBJECT.<init>()kotlin.Any", %struct.ObjHeader** %879) | |
to label %922 unwind label %881 | |
; <label>:881: ; preds = %878 | |
%882 = landingpad { i8*, i32 } | |
cleanup | |
%883 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%884 = load %struct.ObjHeader*, %struct.ObjHeader** %883, align 8, !tbaa !476 | |
%885 = icmp eq %struct.ObjHeader* %884, null | |
br i1 %885, label %895, label %886 | |
; <label>:886: ; preds = %881 | |
%887 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %884, i64 0, i32 0 | |
%888 = load %struct.TypeInfo*, %struct.TypeInfo** %887, align 8, !tbaa !477 | |
%889 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %884, i64 0, i32 1 | |
%890 = load %struct.ContainerHeader*, %struct.ContainerHeader** %889, align 8, !tbaa !479 | |
%891 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %888, i64 0, i32 0 | |
%892 = load %struct.TypeInfo*, %struct.TypeInfo** %891, align 8, !tbaa !480 | |
%893 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %892, i64 0, i32 5 | |
%894 = load i32, i32* %893, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %894, %struct.ContainerHeader* %890) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %883, align 8, !tbaa !476 | |
br label %895 | |
; <label>:895: ; preds = %886, %881 | |
%896 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%897 = icmp eq %struct.ObjHeader* %896, null | |
br i1 %897, label %2461, label %898 | |
; <label>:898: ; preds = %895 | |
%899 = bitcast %struct.ObjHeader* %896 to %struct.ContainerChunk** | |
%900 = load %struct.ContainerChunk*, %struct.ContainerChunk** %899, align 8, !tbaa !476 | |
%901 = icmp eq %struct.ContainerChunk* %900, null | |
br i1 %901, label %920, label %902 | |
; <label>:902: ; preds = %898 | |
br label %903 | |
; <label>:903: ; preds = %903, %902 | |
%904 = phi %struct.ContainerChunk* [ %908, %903 ], [ %900, %902 ] | |
%905 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %904, i64 1 | |
%906 = bitcast %struct.ContainerChunk* %905 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %906) #0 | |
%907 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %904, i64 0, i32 0 | |
%908 = load %struct.ContainerChunk*, %struct.ContainerChunk** %907, align 8, !tbaa !476 | |
%909 = icmp eq %struct.ContainerChunk* %908, null | |
br i1 %909, label %910, label %903 | |
; <label>:910: ; preds = %903 | |
%911 = load %struct.ContainerChunk*, %struct.ContainerChunk** %899, align 8, !tbaa !482 | |
%912 = icmp eq %struct.ContainerChunk* %911, null | |
br i1 %912, label %920, label %913 | |
; <label>:913: ; preds = %910 | |
br label %914 | |
; <label>:914: ; preds = %914, %913 | |
%915 = phi %struct.ContainerChunk* [ %918, %914 ], [ %911, %913 ] | |
%916 = bitcast %struct.ContainerChunk* %915 to i8* | |
%917 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %915, i64 0, i32 0 | |
%918 = load %struct.ContainerChunk*, %struct.ContainerChunk** %917, align 8, !tbaa !484 | |
call void @free(i8* %916) #0 | |
%919 = icmp eq %struct.ContainerChunk* %918, null | |
br i1 %919, label %920, label %914 | |
; <label>:920: ; preds = %914, %910, %898 | |
%921 = bitcast %struct.ObjHeader* %896 to i8* | |
call void @free(i8* %921) #0 | |
br label %2461 | |
; <label>:922: ; preds = %878, %875 | |
%923 = phi %struct.ObjHeader* [ %876, %875 ], [ %880, %878 ] | |
%924 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %923, i64 1 | |
%925 = bitcast %struct.ObjHeader* %924 to %struct.ObjHeader** | |
%926 = load %struct.ObjHeader*, %struct.ObjHeader** %925, align 8 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %20, %struct.ObjHeader* %926) | |
%927 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%928 = load %struct.ObjHeader*, %struct.ObjHeader** %927, align 8, !tbaa !476 | |
%929 = icmp eq %struct.ObjHeader* %928, null | |
br i1 %929, label %939, label %930 | |
; <label>:930: ; preds = %922 | |
%931 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %928, i64 0, i32 0 | |
%932 = load %struct.TypeInfo*, %struct.TypeInfo** %931, align 8, !tbaa !477 | |
%933 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %928, i64 0, i32 1 | |
%934 = load %struct.ContainerHeader*, %struct.ContainerHeader** %933, align 8, !tbaa !479 | |
%935 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %932, i64 0, i32 0 | |
%936 = load %struct.TypeInfo*, %struct.TypeInfo** %935, align 8, !tbaa !480 | |
%937 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %936, i64 0, i32 5 | |
%938 = load i32, i32* %937, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %938, %struct.ContainerHeader* %934) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %927, align 8, !tbaa !476 | |
br label %939 | |
; <label>:939: ; preds = %930, %922 | |
%940 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%941 = icmp eq %struct.ObjHeader* %940, null | |
br i1 %941, label %966, label %942 | |
; <label>:942: ; preds = %939 | |
%943 = bitcast %struct.ObjHeader* %940 to %struct.ContainerChunk** | |
%944 = load %struct.ContainerChunk*, %struct.ContainerChunk** %943, align 8, !tbaa !476 | |
%945 = icmp eq %struct.ContainerChunk* %944, null | |
br i1 %945, label %964, label %946 | |
; <label>:946: ; preds = %942 | |
br label %947 | |
; <label>:947: ; preds = %947, %946 | |
%948 = phi %struct.ContainerChunk* [ %952, %947 ], [ %944, %946 ] | |
%949 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %948, i64 1 | |
%950 = bitcast %struct.ContainerChunk* %949 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %950) #0 | |
%951 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %948, i64 0, i32 0 | |
%952 = load %struct.ContainerChunk*, %struct.ContainerChunk** %951, align 8, !tbaa !476 | |
%953 = icmp eq %struct.ContainerChunk* %952, null | |
br i1 %953, label %954, label %947 | |
; <label>:954: ; preds = %947 | |
%955 = load %struct.ContainerChunk*, %struct.ContainerChunk** %943, align 8, !tbaa !482 | |
%956 = icmp eq %struct.ContainerChunk* %955, null | |
br i1 %956, label %964, label %957 | |
; <label>:957: ; preds = %954 | |
br label %958 | |
; <label>:958: ; preds = %958, %957 | |
%959 = phi %struct.ContainerChunk* [ %962, %958 ], [ %955, %957 ] | |
%960 = bitcast %struct.ContainerChunk* %959 to i8* | |
%961 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %959, i64 0, i32 0 | |
%962 = load %struct.ContainerChunk*, %struct.ContainerChunk** %961, align 8, !tbaa !484 | |
call void @free(i8* %960) #0 | |
%963 = icmp eq %struct.ContainerChunk* %962, null | |
br i1 %963, label %964, label %958 | |
; <label>:964: ; preds = %958, %954, %942 | |
%965 = bitcast %struct.ObjHeader* %940 to i8* | |
call void @free(i8* %965) #0 | |
br label %966 | |
; <label>:966: ; preds = %964, %939 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47) | |
%967 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %926, i64 1 | |
%968 = bitcast %struct.ObjHeader* %967 to i32* | |
%969 = load i32, i32* %968, align 8, !tbaa !492 | |
%970 = icmp ugt i32 %969, 35 | |
br i1 %970, label %974, label %971 | |
; <label>:971: ; preds = %966 | |
%972 = invoke fastcc %struct.ObjHeader* @ThrowArrayIndexOutOfBoundsException() #27 | |
to label %973 unwind label %2459 | |
; <label>:973: ; preds = %971 | |
unreachable | |
; <label>:974: ; preds = %966 | |
%975 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %926, i64 1, i32 1 | |
%976 = getelementptr inbounds %struct.ContainerHeader*, %struct.ContainerHeader** %975, i64 35 | |
%977 = bitcast %struct.ContainerHeader** %976 to %struct.ObjHeader** | |
%978 = load %struct.ObjHeader*, %struct.ObjHeader** %977, align 8, !tbaa !476 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %21, %struct.ObjHeader* %978) #0 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !494, metadata !412), !dbg !498 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !499, metadata !500), !dbg !498 | |
br i1 %152, label %979, label %981, !dbg !501 | |
; <label>:979: ; preds = %974 | |
%980 = icmp eq %struct.ObjHeader* %978, null, !dbg !501 | |
br i1 %980, label %2411, label %993 | |
; <label>:981: ; preds = %974 | |
%982 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %0, i64 0, i32 0, !dbg !501 | |
%983 = load %struct.TypeInfo*, %struct.TypeInfo** %982, align 8, !dbg !501 | |
%984 = getelementptr inbounds %struct.TypeInfo, %struct.TypeInfo* %983, i64 0, i32 0, !dbg !501 | |
%985 = load %struct.TypeInfo*, %struct.TypeInfo** %984, align 8, !dbg !501 | |
%986 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %985, i64 1, i32 1, i32 0, i64 8, !dbg !501 | |
%987 = bitcast i8* %986 to i1 (%struct.ObjHeader*, %struct.ObjHeader*)**, !dbg !501 | |
%988 = load i1 (%struct.ObjHeader*, %struct.ObjHeader*)*, i1 (%struct.ObjHeader*, %struct.ObjHeader*)** %987, align 8, !dbg !501 | |
%989 = invoke i1 %988(%struct.ObjHeader* nonnull %0, %struct.ObjHeader* %978) | |
to label %992 unwind label %990, !dbg !501 | |
; <label>:990: ; preds = %981 | |
%991 = landingpad { i8*, i32 } | |
cleanup, !dbg !502 | |
br label %2461, !dbg !502 | |
; <label>:992: ; preds = %981 | |
br i1 %989, label %2411, label %993 | |
; <label>:993: ; preds = %992, %979 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %47) | |
call void @llvm.memset.p0i8.i32(i8* %47, i8 0, i32 16, i32 8, i1 false) | |
%994 = load %struct.ObjHeader*, %struct.ObjHeader** @"kobjref:MyEnum.$OBJECT", align 8 | |
%995 = icmp ugt %struct.ObjHeader* %994, inttoptr (i64 1 to %struct.ObjHeader*) | |
br i1 %995, label %1040, label %996 | |
; <label>:996: ; preds = %993 | |
%997 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%998 = invoke fastcc %struct.ObjHeader* @InitSharedInstance(%struct.ObjHeader** nonnull @"kobjref:MyEnum.$OBJECT", %struct.ObjHeader** nonnull @"kshadowobjref:MyEnum.$OBJECT", %struct.TypeInfo* getelementptr inbounds ({ %struct.TypeInfo, [3 x i8*] }, { %struct.TypeInfo, [3 x i8*] }* @"ktypeglobal:MyEnum.$OBJECT#internal", i64 0, i32 0), void (%struct.ObjHeader*)* nonnull @"kfun:MyEnum.$OBJECT.<init>()kotlin.Any", %struct.ObjHeader** %997) | |
to label %1040 unwind label %999 | |
; <label>:999: ; preds = %996 | |
%1000 = landingpad { i8*, i32 } | |
cleanup | |
%1001 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1002 = load %struct.ObjHeader*, %struct.ObjHeader** %1001, align 8, !tbaa !476 | |
%1003 = icmp eq %struct.ObjHeader* %1002, null | |
br i1 %1003, label %1013, label %1004 | |
; <label>:1004: ; preds = %999 | |
%1005 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1002, i64 0, i32 0 | |
%1006 = load %struct.TypeInfo*, %struct.TypeInfo** %1005, align 8, !tbaa !477 | |
%1007 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1002, i64 0, i32 1 | |
%1008 = load %struct.ContainerHeader*, %struct.ContainerHeader** %1007, align 8, !tbaa !479 | |
%1009 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1006, i64 0, i32 0 | |
%1010 = load %struct.TypeInfo*, %struct.TypeInfo** %1009, align 8, !tbaa !480 | |
%1011 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1010, i64 0, i32 5 | |
%1012 = load i32, i32* %1011, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %1012, %struct.ContainerHeader* %1008) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %1001, align 8, !tbaa !476 | |
br label %1013 | |
; <label>:1013: ; preds = %1004, %999 | |
%1014 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%1015 = icmp eq %struct.ObjHeader* %1014, null | |
br i1 %1015, label %2461, label %1016 | |
; <label>:1016: ; preds = %1013 | |
%1017 = bitcast %struct.ObjHeader* %1014 to %struct.ContainerChunk** | |
%1018 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1017, align 8, !tbaa !476 | |
%1019 = icmp eq %struct.ContainerChunk* %1018, null | |
br i1 %1019, label %1038, label %1020 | |
; <label>:1020: ; preds = %1016 | |
br label %1021 | |
; <label>:1021: ; preds = %1021, %1020 | |
%1022 = phi %struct.ContainerChunk* [ %1026, %1021 ], [ %1018, %1020 ] | |
%1023 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1022, i64 1 | |
%1024 = bitcast %struct.ContainerChunk* %1023 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %1024) #0 | |
%1025 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1022, i64 0, i32 0 | |
%1026 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1025, align 8, !tbaa !476 | |
%1027 = icmp eq %struct.ContainerChunk* %1026, null | |
br i1 %1027, label %1028, label %1021 | |
; <label>:1028: ; preds = %1021 | |
%1029 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1017, align 8, !tbaa !482 | |
%1030 = icmp eq %struct.ContainerChunk* %1029, null | |
br i1 %1030, label %1038, label %1031 | |
; <label>:1031: ; preds = %1028 | |
br label %1032 | |
; <label>:1032: ; preds = %1032, %1031 | |
%1033 = phi %struct.ContainerChunk* [ %1036, %1032 ], [ %1029, %1031 ] | |
%1034 = bitcast %struct.ContainerChunk* %1033 to i8* | |
%1035 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1033, i64 0, i32 0 | |
%1036 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1035, align 8, !tbaa !484 | |
call void @free(i8* %1034) #0 | |
%1037 = icmp eq %struct.ContainerChunk* %1036, null | |
br i1 %1037, label %1038, label %1032 | |
; <label>:1038: ; preds = %1032, %1028, %1016 | |
%1039 = bitcast %struct.ObjHeader* %1014 to i8* | |
call void @free(i8* %1039) #0 | |
br label %2461 | |
; <label>:1040: ; preds = %996, %993 | |
%1041 = phi %struct.ObjHeader* [ %994, %993 ], [ %998, %996 ] | |
%1042 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1041, i64 1 | |
%1043 = bitcast %struct.ObjHeader* %1042 to %struct.ObjHeader** | |
%1044 = load %struct.ObjHeader*, %struct.ObjHeader** %1043, align 8 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %22, %struct.ObjHeader* %1044) | |
%1045 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1046 = load %struct.ObjHeader*, %struct.ObjHeader** %1045, align 8, !tbaa !476 | |
%1047 = icmp eq %struct.ObjHeader* %1046, null | |
br i1 %1047, label %1057, label %1048 | |
; <label>:1048: ; preds = %1040 | |
%1049 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1046, i64 0, i32 0 | |
%1050 = load %struct.TypeInfo*, %struct.TypeInfo** %1049, align 8, !tbaa !477 | |
%1051 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1046, i64 0, i32 1 | |
%1052 = load %struct.ContainerHeader*, %struct.ContainerHeader** %1051, align 8, !tbaa !479 | |
%1053 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1050, i64 0, i32 0 | |
%1054 = load %struct.TypeInfo*, %struct.TypeInfo** %1053, align 8, !tbaa !480 | |
%1055 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1054, i64 0, i32 5 | |
%1056 = load i32, i32* %1055, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %1056, %struct.ContainerHeader* %1052) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %1045, align 8, !tbaa !476 | |
br label %1057 | |
; <label>:1057: ; preds = %1048, %1040 | |
%1058 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%1059 = icmp eq %struct.ObjHeader* %1058, null | |
br i1 %1059, label %1084, label %1060 | |
; <label>:1060: ; preds = %1057 | |
%1061 = bitcast %struct.ObjHeader* %1058 to %struct.ContainerChunk** | |
%1062 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1061, align 8, !tbaa !476 | |
%1063 = icmp eq %struct.ContainerChunk* %1062, null | |
br i1 %1063, label %1082, label %1064 | |
; <label>:1064: ; preds = %1060 | |
br label %1065 | |
; <label>:1065: ; preds = %1065, %1064 | |
%1066 = phi %struct.ContainerChunk* [ %1070, %1065 ], [ %1062, %1064 ] | |
%1067 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1066, i64 1 | |
%1068 = bitcast %struct.ContainerChunk* %1067 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %1068) #0 | |
%1069 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1066, i64 0, i32 0 | |
%1070 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1069, align 8, !tbaa !476 | |
%1071 = icmp eq %struct.ContainerChunk* %1070, null | |
br i1 %1071, label %1072, label %1065 | |
; <label>:1072: ; preds = %1065 | |
%1073 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1061, align 8, !tbaa !482 | |
%1074 = icmp eq %struct.ContainerChunk* %1073, null | |
br i1 %1074, label %1082, label %1075 | |
; <label>:1075: ; preds = %1072 | |
br label %1076 | |
; <label>:1076: ; preds = %1076, %1075 | |
%1077 = phi %struct.ContainerChunk* [ %1080, %1076 ], [ %1073, %1075 ] | |
%1078 = bitcast %struct.ContainerChunk* %1077 to i8* | |
%1079 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1077, i64 0, i32 0 | |
%1080 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1079, align 8, !tbaa !484 | |
call void @free(i8* %1078) #0 | |
%1081 = icmp eq %struct.ContainerChunk* %1080, null | |
br i1 %1081, label %1082, label %1076 | |
; <label>:1082: ; preds = %1076, %1072, %1060 | |
%1083 = bitcast %struct.ObjHeader* %1058 to i8* | |
call void @free(i8* %1083) #0 | |
br label %1084 | |
; <label>:1084: ; preds = %1082, %1057 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47) | |
%1085 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %1044, i64 1 | |
%1086 = bitcast %struct.ObjHeader* %1085 to i32* | |
%1087 = load i32, i32* %1086, align 8, !tbaa !492 | |
%1088 = icmp ugt i32 %1087, 40 | |
br i1 %1088, label %1092, label %1089 | |
; <label>:1089: ; preds = %1084 | |
%1090 = invoke fastcc %struct.ObjHeader* @ThrowArrayIndexOutOfBoundsException() #27 | |
to label %1091 unwind label %2459 | |
; <label>:1091: ; preds = %1089 | |
unreachable | |
; <label>:1092: ; preds = %1084 | |
%1093 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %1044, i64 1, i32 1 | |
%1094 = getelementptr inbounds %struct.ContainerHeader*, %struct.ContainerHeader** %1093, i64 40 | |
%1095 = bitcast %struct.ContainerHeader** %1094 to %struct.ObjHeader** | |
%1096 = load %struct.ObjHeader*, %struct.ObjHeader** %1095, align 8, !tbaa !476 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %23, %struct.ObjHeader* %1096) #0 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !494, metadata !412), !dbg !498 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !499, metadata !500), !dbg !498 | |
br i1 %152, label %1097, label %1099, !dbg !501 | |
; <label>:1097: ; preds = %1092 | |
%1098 = icmp eq %struct.ObjHeader* %1096, null, !dbg !501 | |
br i1 %1098, label %2411, label %1111 | |
; <label>:1099: ; preds = %1092 | |
%1100 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %0, i64 0, i32 0, !dbg !501 | |
%1101 = load %struct.TypeInfo*, %struct.TypeInfo** %1100, align 8, !dbg !501 | |
%1102 = getelementptr inbounds %struct.TypeInfo, %struct.TypeInfo* %1101, i64 0, i32 0, !dbg !501 | |
%1103 = load %struct.TypeInfo*, %struct.TypeInfo** %1102, align 8, !dbg !501 | |
%1104 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1103, i64 1, i32 1, i32 0, i64 8, !dbg !501 | |
%1105 = bitcast i8* %1104 to i1 (%struct.ObjHeader*, %struct.ObjHeader*)**, !dbg !501 | |
%1106 = load i1 (%struct.ObjHeader*, %struct.ObjHeader*)*, i1 (%struct.ObjHeader*, %struct.ObjHeader*)** %1105, align 8, !dbg !501 | |
%1107 = invoke i1 %1106(%struct.ObjHeader* nonnull %0, %struct.ObjHeader* %1096) | |
to label %1110 unwind label %1108, !dbg !501 | |
; <label>:1108: ; preds = %1099 | |
%1109 = landingpad { i8*, i32 } | |
cleanup, !dbg !502 | |
br label %2461, !dbg !502 | |
; <label>:1110: ; preds = %1099 | |
br i1 %1107, label %2411, label %1111 | |
; <label>:1111: ; preds = %1110, %1097 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %47) | |
call void @llvm.memset.p0i8.i32(i8* %47, i8 0, i32 16, i32 8, i1 false) | |
%1112 = load %struct.ObjHeader*, %struct.ObjHeader** @"kobjref:MyEnum.$OBJECT", align 8 | |
%1113 = icmp ugt %struct.ObjHeader* %1112, inttoptr (i64 1 to %struct.ObjHeader*) | |
br i1 %1113, label %1158, label %1114 | |
; <label>:1114: ; preds = %1111 | |
%1115 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1116 = invoke fastcc %struct.ObjHeader* @InitSharedInstance(%struct.ObjHeader** nonnull @"kobjref:MyEnum.$OBJECT", %struct.ObjHeader** nonnull @"kshadowobjref:MyEnum.$OBJECT", %struct.TypeInfo* getelementptr inbounds ({ %struct.TypeInfo, [3 x i8*] }, { %struct.TypeInfo, [3 x i8*] }* @"ktypeglobal:MyEnum.$OBJECT#internal", i64 0, i32 0), void (%struct.ObjHeader*)* nonnull @"kfun:MyEnum.$OBJECT.<init>()kotlin.Any", %struct.ObjHeader** %1115) | |
to label %1158 unwind label %1117 | |
; <label>:1117: ; preds = %1114 | |
%1118 = landingpad { i8*, i32 } | |
cleanup | |
%1119 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1120 = load %struct.ObjHeader*, %struct.ObjHeader** %1119, align 8, !tbaa !476 | |
%1121 = icmp eq %struct.ObjHeader* %1120, null | |
br i1 %1121, label %1131, label %1122 | |
; <label>:1122: ; preds = %1117 | |
%1123 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1120, i64 0, i32 0 | |
%1124 = load %struct.TypeInfo*, %struct.TypeInfo** %1123, align 8, !tbaa !477 | |
%1125 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1120, i64 0, i32 1 | |
%1126 = load %struct.ContainerHeader*, %struct.ContainerHeader** %1125, align 8, !tbaa !479 | |
%1127 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1124, i64 0, i32 0 | |
%1128 = load %struct.TypeInfo*, %struct.TypeInfo** %1127, align 8, !tbaa !480 | |
%1129 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1128, i64 0, i32 5 | |
%1130 = load i32, i32* %1129, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %1130, %struct.ContainerHeader* %1126) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %1119, align 8, !tbaa !476 | |
br label %1131 | |
; <label>:1131: ; preds = %1122, %1117 | |
%1132 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%1133 = icmp eq %struct.ObjHeader* %1132, null | |
br i1 %1133, label %2461, label %1134 | |
; <label>:1134: ; preds = %1131 | |
%1135 = bitcast %struct.ObjHeader* %1132 to %struct.ContainerChunk** | |
%1136 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1135, align 8, !tbaa !476 | |
%1137 = icmp eq %struct.ContainerChunk* %1136, null | |
br i1 %1137, label %1156, label %1138 | |
; <label>:1138: ; preds = %1134 | |
br label %1139 | |
; <label>:1139: ; preds = %1139, %1138 | |
%1140 = phi %struct.ContainerChunk* [ %1144, %1139 ], [ %1136, %1138 ] | |
%1141 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1140, i64 1 | |
%1142 = bitcast %struct.ContainerChunk* %1141 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %1142) #0 | |
%1143 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1140, i64 0, i32 0 | |
%1144 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1143, align 8, !tbaa !476 | |
%1145 = icmp eq %struct.ContainerChunk* %1144, null | |
br i1 %1145, label %1146, label %1139 | |
; <label>:1146: ; preds = %1139 | |
%1147 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1135, align 8, !tbaa !482 | |
%1148 = icmp eq %struct.ContainerChunk* %1147, null | |
br i1 %1148, label %1156, label %1149 | |
; <label>:1149: ; preds = %1146 | |
br label %1150 | |
; <label>:1150: ; preds = %1150, %1149 | |
%1151 = phi %struct.ContainerChunk* [ %1154, %1150 ], [ %1147, %1149 ] | |
%1152 = bitcast %struct.ContainerChunk* %1151 to i8* | |
%1153 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1151, i64 0, i32 0 | |
%1154 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1153, align 8, !tbaa !484 | |
call void @free(i8* %1152) #0 | |
%1155 = icmp eq %struct.ContainerChunk* %1154, null | |
br i1 %1155, label %1156, label %1150 | |
; <label>:1156: ; preds = %1150, %1146, %1134 | |
%1157 = bitcast %struct.ObjHeader* %1132 to i8* | |
call void @free(i8* %1157) #0 | |
br label %2461 | |
; <label>:1158: ; preds = %1114, %1111 | |
%1159 = phi %struct.ObjHeader* [ %1112, %1111 ], [ %1116, %1114 ] | |
%1160 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1159, i64 1 | |
%1161 = bitcast %struct.ObjHeader* %1160 to %struct.ObjHeader** | |
%1162 = load %struct.ObjHeader*, %struct.ObjHeader** %1161, align 8 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %24, %struct.ObjHeader* %1162) | |
%1163 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1164 = load %struct.ObjHeader*, %struct.ObjHeader** %1163, align 8, !tbaa !476 | |
%1165 = icmp eq %struct.ObjHeader* %1164, null | |
br i1 %1165, label %1175, label %1166 | |
; <label>:1166: ; preds = %1158 | |
%1167 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1164, i64 0, i32 0 | |
%1168 = load %struct.TypeInfo*, %struct.TypeInfo** %1167, align 8, !tbaa !477 | |
%1169 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1164, i64 0, i32 1 | |
%1170 = load %struct.ContainerHeader*, %struct.ContainerHeader** %1169, align 8, !tbaa !479 | |
%1171 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1168, i64 0, i32 0 | |
%1172 = load %struct.TypeInfo*, %struct.TypeInfo** %1171, align 8, !tbaa !480 | |
%1173 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1172, i64 0, i32 5 | |
%1174 = load i32, i32* %1173, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %1174, %struct.ContainerHeader* %1170) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %1163, align 8, !tbaa !476 | |
br label %1175 | |
; <label>:1175: ; preds = %1166, %1158 | |
%1176 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%1177 = icmp eq %struct.ObjHeader* %1176, null | |
br i1 %1177, label %1202, label %1178 | |
; <label>:1178: ; preds = %1175 | |
%1179 = bitcast %struct.ObjHeader* %1176 to %struct.ContainerChunk** | |
%1180 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1179, align 8, !tbaa !476 | |
%1181 = icmp eq %struct.ContainerChunk* %1180, null | |
br i1 %1181, label %1200, label %1182 | |
; <label>:1182: ; preds = %1178 | |
br label %1183 | |
; <label>:1183: ; preds = %1183, %1182 | |
%1184 = phi %struct.ContainerChunk* [ %1188, %1183 ], [ %1180, %1182 ] | |
%1185 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1184, i64 1 | |
%1186 = bitcast %struct.ContainerChunk* %1185 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %1186) #0 | |
%1187 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1184, i64 0, i32 0 | |
%1188 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1187, align 8, !tbaa !476 | |
%1189 = icmp eq %struct.ContainerChunk* %1188, null | |
br i1 %1189, label %1190, label %1183 | |
; <label>:1190: ; preds = %1183 | |
%1191 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1179, align 8, !tbaa !482 | |
%1192 = icmp eq %struct.ContainerChunk* %1191, null | |
br i1 %1192, label %1200, label %1193 | |
; <label>:1193: ; preds = %1190 | |
br label %1194 | |
; <label>:1194: ; preds = %1194, %1193 | |
%1195 = phi %struct.ContainerChunk* [ %1198, %1194 ], [ %1191, %1193 ] | |
%1196 = bitcast %struct.ContainerChunk* %1195 to i8* | |
%1197 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1195, i64 0, i32 0 | |
%1198 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1197, align 8, !tbaa !484 | |
call void @free(i8* %1196) #0 | |
%1199 = icmp eq %struct.ContainerChunk* %1198, null | |
br i1 %1199, label %1200, label %1194 | |
; <label>:1200: ; preds = %1194, %1190, %1178 | |
%1201 = bitcast %struct.ObjHeader* %1176 to i8* | |
call void @free(i8* %1201) #0 | |
br label %1202 | |
; <label>:1202: ; preds = %1200, %1175 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47) | |
%1203 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %1162, i64 1 | |
%1204 = bitcast %struct.ObjHeader* %1203 to i32* | |
%1205 = load i32, i32* %1204, align 8, !tbaa !492 | |
%1206 = icmp ugt i32 %1205, 46 | |
br i1 %1206, label %1210, label %1207 | |
; <label>:1207: ; preds = %1202 | |
%1208 = invoke fastcc %struct.ObjHeader* @ThrowArrayIndexOutOfBoundsException() #27 | |
to label %1209 unwind label %2459 | |
; <label>:1209: ; preds = %1207 | |
unreachable | |
; <label>:1210: ; preds = %1202 | |
%1211 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %1162, i64 1, i32 1 | |
%1212 = getelementptr inbounds %struct.ContainerHeader*, %struct.ContainerHeader** %1211, i64 46 | |
%1213 = bitcast %struct.ContainerHeader** %1212 to %struct.ObjHeader** | |
%1214 = load %struct.ObjHeader*, %struct.ObjHeader** %1213, align 8, !tbaa !476 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %25, %struct.ObjHeader* %1214) #0 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !494, metadata !412), !dbg !498 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !499, metadata !500), !dbg !498 | |
br i1 %152, label %1215, label %1217, !dbg !501 | |
; <label>:1215: ; preds = %1210 | |
%1216 = icmp eq %struct.ObjHeader* %1214, null, !dbg !501 | |
br i1 %1216, label %2411, label %1229 | |
; <label>:1217: ; preds = %1210 | |
%1218 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %0, i64 0, i32 0, !dbg !501 | |
%1219 = load %struct.TypeInfo*, %struct.TypeInfo** %1218, align 8, !dbg !501 | |
%1220 = getelementptr inbounds %struct.TypeInfo, %struct.TypeInfo* %1219, i64 0, i32 0, !dbg !501 | |
%1221 = load %struct.TypeInfo*, %struct.TypeInfo** %1220, align 8, !dbg !501 | |
%1222 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1221, i64 1, i32 1, i32 0, i64 8, !dbg !501 | |
%1223 = bitcast i8* %1222 to i1 (%struct.ObjHeader*, %struct.ObjHeader*)**, !dbg !501 | |
%1224 = load i1 (%struct.ObjHeader*, %struct.ObjHeader*)*, i1 (%struct.ObjHeader*, %struct.ObjHeader*)** %1223, align 8, !dbg !501 | |
%1225 = invoke i1 %1224(%struct.ObjHeader* nonnull %0, %struct.ObjHeader* %1214) | |
to label %1228 unwind label %1226, !dbg !501 | |
; <label>:1226: ; preds = %1217 | |
%1227 = landingpad { i8*, i32 } | |
cleanup, !dbg !502 | |
br label %2461, !dbg !502 | |
; <label>:1228: ; preds = %1217 | |
br i1 %1225, label %2411, label %1229 | |
; <label>:1229: ; preds = %1228, %1215 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %47) | |
call void @llvm.memset.p0i8.i32(i8* %47, i8 0, i32 16, i32 8, i1 false) | |
%1230 = load %struct.ObjHeader*, %struct.ObjHeader** @"kobjref:MyEnum.$OBJECT", align 8 | |
%1231 = icmp ugt %struct.ObjHeader* %1230, inttoptr (i64 1 to %struct.ObjHeader*) | |
br i1 %1231, label %1276, label %1232 | |
; <label>:1232: ; preds = %1229 | |
%1233 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1234 = invoke fastcc %struct.ObjHeader* @InitSharedInstance(%struct.ObjHeader** nonnull @"kobjref:MyEnum.$OBJECT", %struct.ObjHeader** nonnull @"kshadowobjref:MyEnum.$OBJECT", %struct.TypeInfo* getelementptr inbounds ({ %struct.TypeInfo, [3 x i8*] }, { %struct.TypeInfo, [3 x i8*] }* @"ktypeglobal:MyEnum.$OBJECT#internal", i64 0, i32 0), void (%struct.ObjHeader*)* nonnull @"kfun:MyEnum.$OBJECT.<init>()kotlin.Any", %struct.ObjHeader** %1233) | |
to label %1276 unwind label %1235 | |
; <label>:1235: ; preds = %1232 | |
%1236 = landingpad { i8*, i32 } | |
cleanup | |
%1237 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1238 = load %struct.ObjHeader*, %struct.ObjHeader** %1237, align 8, !tbaa !476 | |
%1239 = icmp eq %struct.ObjHeader* %1238, null | |
br i1 %1239, label %1249, label %1240 | |
; <label>:1240: ; preds = %1235 | |
%1241 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1238, i64 0, i32 0 | |
%1242 = load %struct.TypeInfo*, %struct.TypeInfo** %1241, align 8, !tbaa !477 | |
%1243 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1238, i64 0, i32 1 | |
%1244 = load %struct.ContainerHeader*, %struct.ContainerHeader** %1243, align 8, !tbaa !479 | |
%1245 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1242, i64 0, i32 0 | |
%1246 = load %struct.TypeInfo*, %struct.TypeInfo** %1245, align 8, !tbaa !480 | |
%1247 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1246, i64 0, i32 5 | |
%1248 = load i32, i32* %1247, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %1248, %struct.ContainerHeader* %1244) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %1237, align 8, !tbaa !476 | |
br label %1249 | |
; <label>:1249: ; preds = %1240, %1235 | |
%1250 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%1251 = icmp eq %struct.ObjHeader* %1250, null | |
br i1 %1251, label %2461, label %1252 | |
; <label>:1252: ; preds = %1249 | |
%1253 = bitcast %struct.ObjHeader* %1250 to %struct.ContainerChunk** | |
%1254 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1253, align 8, !tbaa !476 | |
%1255 = icmp eq %struct.ContainerChunk* %1254, null | |
br i1 %1255, label %1274, label %1256 | |
; <label>:1256: ; preds = %1252 | |
br label %1257 | |
; <label>:1257: ; preds = %1257, %1256 | |
%1258 = phi %struct.ContainerChunk* [ %1262, %1257 ], [ %1254, %1256 ] | |
%1259 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1258, i64 1 | |
%1260 = bitcast %struct.ContainerChunk* %1259 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %1260) #0 | |
%1261 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1258, i64 0, i32 0 | |
%1262 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1261, align 8, !tbaa !476 | |
%1263 = icmp eq %struct.ContainerChunk* %1262, null | |
br i1 %1263, label %1264, label %1257 | |
; <label>:1264: ; preds = %1257 | |
%1265 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1253, align 8, !tbaa !482 | |
%1266 = icmp eq %struct.ContainerChunk* %1265, null | |
br i1 %1266, label %1274, label %1267 | |
; <label>:1267: ; preds = %1264 | |
br label %1268 | |
; <label>:1268: ; preds = %1268, %1267 | |
%1269 = phi %struct.ContainerChunk* [ %1272, %1268 ], [ %1265, %1267 ] | |
%1270 = bitcast %struct.ContainerChunk* %1269 to i8* | |
%1271 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1269, i64 0, i32 0 | |
%1272 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1271, align 8, !tbaa !484 | |
call void @free(i8* %1270) #0 | |
%1273 = icmp eq %struct.ContainerChunk* %1272, null | |
br i1 %1273, label %1274, label %1268 | |
; <label>:1274: ; preds = %1268, %1264, %1252 | |
%1275 = bitcast %struct.ObjHeader* %1250 to i8* | |
call void @free(i8* %1275) #0 | |
br label %2461 | |
; <label>:1276: ; preds = %1232, %1229 | |
%1277 = phi %struct.ObjHeader* [ %1230, %1229 ], [ %1234, %1232 ] | |
%1278 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1277, i64 1 | |
%1279 = bitcast %struct.ObjHeader* %1278 to %struct.ObjHeader** | |
%1280 = load %struct.ObjHeader*, %struct.ObjHeader** %1279, align 8 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %26, %struct.ObjHeader* %1280) | |
%1281 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1282 = load %struct.ObjHeader*, %struct.ObjHeader** %1281, align 8, !tbaa !476 | |
%1283 = icmp eq %struct.ObjHeader* %1282, null | |
br i1 %1283, label %1293, label %1284 | |
; <label>:1284: ; preds = %1276 | |
%1285 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1282, i64 0, i32 0 | |
%1286 = load %struct.TypeInfo*, %struct.TypeInfo** %1285, align 8, !tbaa !477 | |
%1287 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1282, i64 0, i32 1 | |
%1288 = load %struct.ContainerHeader*, %struct.ContainerHeader** %1287, align 8, !tbaa !479 | |
%1289 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1286, i64 0, i32 0 | |
%1290 = load %struct.TypeInfo*, %struct.TypeInfo** %1289, align 8, !tbaa !480 | |
%1291 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1290, i64 0, i32 5 | |
%1292 = load i32, i32* %1291, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %1292, %struct.ContainerHeader* %1288) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %1281, align 8, !tbaa !476 | |
br label %1293 | |
; <label>:1293: ; preds = %1284, %1276 | |
%1294 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%1295 = icmp eq %struct.ObjHeader* %1294, null | |
br i1 %1295, label %1320, label %1296 | |
; <label>:1296: ; preds = %1293 | |
%1297 = bitcast %struct.ObjHeader* %1294 to %struct.ContainerChunk** | |
%1298 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1297, align 8, !tbaa !476 | |
%1299 = icmp eq %struct.ContainerChunk* %1298, null | |
br i1 %1299, label %1318, label %1300 | |
; <label>:1300: ; preds = %1296 | |
br label %1301 | |
; <label>:1301: ; preds = %1301, %1300 | |
%1302 = phi %struct.ContainerChunk* [ %1306, %1301 ], [ %1298, %1300 ] | |
%1303 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1302, i64 1 | |
%1304 = bitcast %struct.ContainerChunk* %1303 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %1304) #0 | |
%1305 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1302, i64 0, i32 0 | |
%1306 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1305, align 8, !tbaa !476 | |
%1307 = icmp eq %struct.ContainerChunk* %1306, null | |
br i1 %1307, label %1308, label %1301 | |
; <label>:1308: ; preds = %1301 | |
%1309 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1297, align 8, !tbaa !482 | |
%1310 = icmp eq %struct.ContainerChunk* %1309, null | |
br i1 %1310, label %1318, label %1311 | |
; <label>:1311: ; preds = %1308 | |
br label %1312 | |
; <label>:1312: ; preds = %1312, %1311 | |
%1313 = phi %struct.ContainerChunk* [ %1316, %1312 ], [ %1309, %1311 ] | |
%1314 = bitcast %struct.ContainerChunk* %1313 to i8* | |
%1315 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1313, i64 0, i32 0 | |
%1316 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1315, align 8, !tbaa !484 | |
call void @free(i8* %1314) #0 | |
%1317 = icmp eq %struct.ContainerChunk* %1316, null | |
br i1 %1317, label %1318, label %1312 | |
; <label>:1318: ; preds = %1312, %1308, %1296 | |
%1319 = bitcast %struct.ObjHeader* %1294 to i8* | |
call void @free(i8* %1319) #0 | |
br label %1320 | |
; <label>:1320: ; preds = %1318, %1293 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47) | |
%1321 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %1280, i64 1 | |
%1322 = bitcast %struct.ObjHeader* %1321 to i32* | |
%1323 = load i32, i32* %1322, align 8, !tbaa !492 | |
%1324 = icmp ugt i32 %1323, 51 | |
br i1 %1324, label %1328, label %1325 | |
; <label>:1325: ; preds = %1320 | |
%1326 = invoke fastcc %struct.ObjHeader* @ThrowArrayIndexOutOfBoundsException() #27 | |
to label %1327 unwind label %2459 | |
; <label>:1327: ; preds = %1325 | |
unreachable | |
; <label>:1328: ; preds = %1320 | |
%1329 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %1280, i64 1, i32 1 | |
%1330 = getelementptr inbounds %struct.ContainerHeader*, %struct.ContainerHeader** %1329, i64 51 | |
%1331 = bitcast %struct.ContainerHeader** %1330 to %struct.ObjHeader** | |
%1332 = load %struct.ObjHeader*, %struct.ObjHeader** %1331, align 8, !tbaa !476 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %27, %struct.ObjHeader* %1332) #0 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !494, metadata !412), !dbg !498 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !499, metadata !500), !dbg !498 | |
br i1 %152, label %1333, label %1335, !dbg !501 | |
; <label>:1333: ; preds = %1328 | |
%1334 = icmp eq %struct.ObjHeader* %1332, null, !dbg !501 | |
br i1 %1334, label %2411, label %1347 | |
; <label>:1335: ; preds = %1328 | |
%1336 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %0, i64 0, i32 0, !dbg !501 | |
%1337 = load %struct.TypeInfo*, %struct.TypeInfo** %1336, align 8, !dbg !501 | |
%1338 = getelementptr inbounds %struct.TypeInfo, %struct.TypeInfo* %1337, i64 0, i32 0, !dbg !501 | |
%1339 = load %struct.TypeInfo*, %struct.TypeInfo** %1338, align 8, !dbg !501 | |
%1340 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1339, i64 1, i32 1, i32 0, i64 8, !dbg !501 | |
%1341 = bitcast i8* %1340 to i1 (%struct.ObjHeader*, %struct.ObjHeader*)**, !dbg !501 | |
%1342 = load i1 (%struct.ObjHeader*, %struct.ObjHeader*)*, i1 (%struct.ObjHeader*, %struct.ObjHeader*)** %1341, align 8, !dbg !501 | |
%1343 = invoke i1 %1342(%struct.ObjHeader* nonnull %0, %struct.ObjHeader* %1332) | |
to label %1346 unwind label %1344, !dbg !501 | |
; <label>:1344: ; preds = %1335 | |
%1345 = landingpad { i8*, i32 } | |
cleanup, !dbg !502 | |
br label %2461, !dbg !502 | |
; <label>:1346: ; preds = %1335 | |
br i1 %1343, label %2411, label %1347 | |
; <label>:1347: ; preds = %1346, %1333 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %47) | |
call void @llvm.memset.p0i8.i32(i8* %47, i8 0, i32 16, i32 8, i1 false) | |
%1348 = load %struct.ObjHeader*, %struct.ObjHeader** @"kobjref:MyEnum.$OBJECT", align 8 | |
%1349 = icmp ugt %struct.ObjHeader* %1348, inttoptr (i64 1 to %struct.ObjHeader*) | |
br i1 %1349, label %1394, label %1350 | |
; <label>:1350: ; preds = %1347 | |
%1351 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1352 = invoke fastcc %struct.ObjHeader* @InitSharedInstance(%struct.ObjHeader** nonnull @"kobjref:MyEnum.$OBJECT", %struct.ObjHeader** nonnull @"kshadowobjref:MyEnum.$OBJECT", %struct.TypeInfo* getelementptr inbounds ({ %struct.TypeInfo, [3 x i8*] }, { %struct.TypeInfo, [3 x i8*] }* @"ktypeglobal:MyEnum.$OBJECT#internal", i64 0, i32 0), void (%struct.ObjHeader*)* nonnull @"kfun:MyEnum.$OBJECT.<init>()kotlin.Any", %struct.ObjHeader** %1351) | |
to label %1394 unwind label %1353 | |
; <label>:1353: ; preds = %1350 | |
%1354 = landingpad { i8*, i32 } | |
cleanup | |
%1355 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1356 = load %struct.ObjHeader*, %struct.ObjHeader** %1355, align 8, !tbaa !476 | |
%1357 = icmp eq %struct.ObjHeader* %1356, null | |
br i1 %1357, label %1367, label %1358 | |
; <label>:1358: ; preds = %1353 | |
%1359 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1356, i64 0, i32 0 | |
%1360 = load %struct.TypeInfo*, %struct.TypeInfo** %1359, align 8, !tbaa !477 | |
%1361 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1356, i64 0, i32 1 | |
%1362 = load %struct.ContainerHeader*, %struct.ContainerHeader** %1361, align 8, !tbaa !479 | |
%1363 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1360, i64 0, i32 0 | |
%1364 = load %struct.TypeInfo*, %struct.TypeInfo** %1363, align 8, !tbaa !480 | |
%1365 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1364, i64 0, i32 5 | |
%1366 = load i32, i32* %1365, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %1366, %struct.ContainerHeader* %1362) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %1355, align 8, !tbaa !476 | |
br label %1367 | |
; <label>:1367: ; preds = %1358, %1353 | |
%1368 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%1369 = icmp eq %struct.ObjHeader* %1368, null | |
br i1 %1369, label %2461, label %1370 | |
; <label>:1370: ; preds = %1367 | |
%1371 = bitcast %struct.ObjHeader* %1368 to %struct.ContainerChunk** | |
%1372 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1371, align 8, !tbaa !476 | |
%1373 = icmp eq %struct.ContainerChunk* %1372, null | |
br i1 %1373, label %1392, label %1374 | |
; <label>:1374: ; preds = %1370 | |
br label %1375 | |
; <label>:1375: ; preds = %1375, %1374 | |
%1376 = phi %struct.ContainerChunk* [ %1380, %1375 ], [ %1372, %1374 ] | |
%1377 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1376, i64 1 | |
%1378 = bitcast %struct.ContainerChunk* %1377 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %1378) #0 | |
%1379 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1376, i64 0, i32 0 | |
%1380 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1379, align 8, !tbaa !476 | |
%1381 = icmp eq %struct.ContainerChunk* %1380, null | |
br i1 %1381, label %1382, label %1375 | |
; <label>:1382: ; preds = %1375 | |
%1383 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1371, align 8, !tbaa !482 | |
%1384 = icmp eq %struct.ContainerChunk* %1383, null | |
br i1 %1384, label %1392, label %1385 | |
; <label>:1385: ; preds = %1382 | |
br label %1386 | |
; <label>:1386: ; preds = %1386, %1385 | |
%1387 = phi %struct.ContainerChunk* [ %1390, %1386 ], [ %1383, %1385 ] | |
%1388 = bitcast %struct.ContainerChunk* %1387 to i8* | |
%1389 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1387, i64 0, i32 0 | |
%1390 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1389, align 8, !tbaa !484 | |
call void @free(i8* %1388) #0 | |
%1391 = icmp eq %struct.ContainerChunk* %1390, null | |
br i1 %1391, label %1392, label %1386 | |
; <label>:1392: ; preds = %1386, %1382, %1370 | |
%1393 = bitcast %struct.ObjHeader* %1368 to i8* | |
call void @free(i8* %1393) #0 | |
br label %2461 | |
; <label>:1394: ; preds = %1350, %1347 | |
%1395 = phi %struct.ObjHeader* [ %1348, %1347 ], [ %1352, %1350 ] | |
%1396 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1395, i64 1 | |
%1397 = bitcast %struct.ObjHeader* %1396 to %struct.ObjHeader** | |
%1398 = load %struct.ObjHeader*, %struct.ObjHeader** %1397, align 8 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %28, %struct.ObjHeader* %1398) | |
%1399 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1400 = load %struct.ObjHeader*, %struct.ObjHeader** %1399, align 8, !tbaa !476 | |
%1401 = icmp eq %struct.ObjHeader* %1400, null | |
br i1 %1401, label %1411, label %1402 | |
; <label>:1402: ; preds = %1394 | |
%1403 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1400, i64 0, i32 0 | |
%1404 = load %struct.TypeInfo*, %struct.TypeInfo** %1403, align 8, !tbaa !477 | |
%1405 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1400, i64 0, i32 1 | |
%1406 = load %struct.ContainerHeader*, %struct.ContainerHeader** %1405, align 8, !tbaa !479 | |
%1407 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1404, i64 0, i32 0 | |
%1408 = load %struct.TypeInfo*, %struct.TypeInfo** %1407, align 8, !tbaa !480 | |
%1409 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1408, i64 0, i32 5 | |
%1410 = load i32, i32* %1409, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %1410, %struct.ContainerHeader* %1406) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %1399, align 8, !tbaa !476 | |
br label %1411 | |
; <label>:1411: ; preds = %1402, %1394 | |
%1412 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%1413 = icmp eq %struct.ObjHeader* %1412, null | |
br i1 %1413, label %1438, label %1414 | |
; <label>:1414: ; preds = %1411 | |
%1415 = bitcast %struct.ObjHeader* %1412 to %struct.ContainerChunk** | |
%1416 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1415, align 8, !tbaa !476 | |
%1417 = icmp eq %struct.ContainerChunk* %1416, null | |
br i1 %1417, label %1436, label %1418 | |
; <label>:1418: ; preds = %1414 | |
br label %1419 | |
; <label>:1419: ; preds = %1419, %1418 | |
%1420 = phi %struct.ContainerChunk* [ %1424, %1419 ], [ %1416, %1418 ] | |
%1421 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1420, i64 1 | |
%1422 = bitcast %struct.ContainerChunk* %1421 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %1422) #0 | |
%1423 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1420, i64 0, i32 0 | |
%1424 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1423, align 8, !tbaa !476 | |
%1425 = icmp eq %struct.ContainerChunk* %1424, null | |
br i1 %1425, label %1426, label %1419 | |
; <label>:1426: ; preds = %1419 | |
%1427 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1415, align 8, !tbaa !482 | |
%1428 = icmp eq %struct.ContainerChunk* %1427, null | |
br i1 %1428, label %1436, label %1429 | |
; <label>:1429: ; preds = %1426 | |
br label %1430 | |
; <label>:1430: ; preds = %1430, %1429 | |
%1431 = phi %struct.ContainerChunk* [ %1434, %1430 ], [ %1427, %1429 ] | |
%1432 = bitcast %struct.ContainerChunk* %1431 to i8* | |
%1433 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1431, i64 0, i32 0 | |
%1434 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1433, align 8, !tbaa !484 | |
call void @free(i8* %1432) #0 | |
%1435 = icmp eq %struct.ContainerChunk* %1434, null | |
br i1 %1435, label %1436, label %1430 | |
; <label>:1436: ; preds = %1430, %1426, %1414 | |
%1437 = bitcast %struct.ObjHeader* %1412 to i8* | |
call void @free(i8* %1437) #0 | |
br label %1438 | |
; <label>:1438: ; preds = %1436, %1411 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47) | |
%1439 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %1398, i64 1 | |
%1440 = bitcast %struct.ObjHeader* %1439 to i32* | |
%1441 = load i32, i32* %1440, align 8, !tbaa !492 | |
%1442 = icmp ugt i32 %1441, 57 | |
br i1 %1442, label %1446, label %1443 | |
; <label>:1443: ; preds = %1438 | |
%1444 = invoke fastcc %struct.ObjHeader* @ThrowArrayIndexOutOfBoundsException() #27 | |
to label %1445 unwind label %2459 | |
; <label>:1445: ; preds = %1443 | |
unreachable | |
; <label>:1446: ; preds = %1438 | |
%1447 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %1398, i64 1, i32 1 | |
%1448 = getelementptr inbounds %struct.ContainerHeader*, %struct.ContainerHeader** %1447, i64 57 | |
%1449 = bitcast %struct.ContainerHeader** %1448 to %struct.ObjHeader** | |
%1450 = load %struct.ObjHeader*, %struct.ObjHeader** %1449, align 8, !tbaa !476 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %29, %struct.ObjHeader* %1450) #0 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !494, metadata !412), !dbg !498 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !499, metadata !500), !dbg !498 | |
br i1 %152, label %1451, label %1453, !dbg !501 | |
; <label>:1451: ; preds = %1446 | |
%1452 = icmp eq %struct.ObjHeader* %1450, null, !dbg !501 | |
br i1 %1452, label %2411, label %1465 | |
; <label>:1453: ; preds = %1446 | |
%1454 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %0, i64 0, i32 0, !dbg !501 | |
%1455 = load %struct.TypeInfo*, %struct.TypeInfo** %1454, align 8, !dbg !501 | |
%1456 = getelementptr inbounds %struct.TypeInfo, %struct.TypeInfo* %1455, i64 0, i32 0, !dbg !501 | |
%1457 = load %struct.TypeInfo*, %struct.TypeInfo** %1456, align 8, !dbg !501 | |
%1458 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1457, i64 1, i32 1, i32 0, i64 8, !dbg !501 | |
%1459 = bitcast i8* %1458 to i1 (%struct.ObjHeader*, %struct.ObjHeader*)**, !dbg !501 | |
%1460 = load i1 (%struct.ObjHeader*, %struct.ObjHeader*)*, i1 (%struct.ObjHeader*, %struct.ObjHeader*)** %1459, align 8, !dbg !501 | |
%1461 = invoke i1 %1460(%struct.ObjHeader* nonnull %0, %struct.ObjHeader* %1450) | |
to label %1464 unwind label %1462, !dbg !501 | |
; <label>:1462: ; preds = %1453 | |
%1463 = landingpad { i8*, i32 } | |
cleanup, !dbg !502 | |
br label %2461, !dbg !502 | |
; <label>:1464: ; preds = %1453 | |
br i1 %1461, label %2411, label %1465 | |
; <label>:1465: ; preds = %1464, %1451 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %47) | |
call void @llvm.memset.p0i8.i32(i8* %47, i8 0, i32 16, i32 8, i1 false) | |
%1466 = load %struct.ObjHeader*, %struct.ObjHeader** @"kobjref:MyEnum.$OBJECT", align 8 | |
%1467 = icmp ugt %struct.ObjHeader* %1466, inttoptr (i64 1 to %struct.ObjHeader*) | |
br i1 %1467, label %1512, label %1468 | |
; <label>:1468: ; preds = %1465 | |
%1469 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1470 = invoke fastcc %struct.ObjHeader* @InitSharedInstance(%struct.ObjHeader** nonnull @"kobjref:MyEnum.$OBJECT", %struct.ObjHeader** nonnull @"kshadowobjref:MyEnum.$OBJECT", %struct.TypeInfo* getelementptr inbounds ({ %struct.TypeInfo, [3 x i8*] }, { %struct.TypeInfo, [3 x i8*] }* @"ktypeglobal:MyEnum.$OBJECT#internal", i64 0, i32 0), void (%struct.ObjHeader*)* nonnull @"kfun:MyEnum.$OBJECT.<init>()kotlin.Any", %struct.ObjHeader** %1469) | |
to label %1512 unwind label %1471 | |
; <label>:1471: ; preds = %1468 | |
%1472 = landingpad { i8*, i32 } | |
cleanup | |
%1473 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1474 = load %struct.ObjHeader*, %struct.ObjHeader** %1473, align 8, !tbaa !476 | |
%1475 = icmp eq %struct.ObjHeader* %1474, null | |
br i1 %1475, label %1485, label %1476 | |
; <label>:1476: ; preds = %1471 | |
%1477 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1474, i64 0, i32 0 | |
%1478 = load %struct.TypeInfo*, %struct.TypeInfo** %1477, align 8, !tbaa !477 | |
%1479 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1474, i64 0, i32 1 | |
%1480 = load %struct.ContainerHeader*, %struct.ContainerHeader** %1479, align 8, !tbaa !479 | |
%1481 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1478, i64 0, i32 0 | |
%1482 = load %struct.TypeInfo*, %struct.TypeInfo** %1481, align 8, !tbaa !480 | |
%1483 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1482, i64 0, i32 5 | |
%1484 = load i32, i32* %1483, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %1484, %struct.ContainerHeader* %1480) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %1473, align 8, !tbaa !476 | |
br label %1485 | |
; <label>:1485: ; preds = %1476, %1471 | |
%1486 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%1487 = icmp eq %struct.ObjHeader* %1486, null | |
br i1 %1487, label %2461, label %1488 | |
; <label>:1488: ; preds = %1485 | |
%1489 = bitcast %struct.ObjHeader* %1486 to %struct.ContainerChunk** | |
%1490 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1489, align 8, !tbaa !476 | |
%1491 = icmp eq %struct.ContainerChunk* %1490, null | |
br i1 %1491, label %1510, label %1492 | |
; <label>:1492: ; preds = %1488 | |
br label %1493 | |
; <label>:1493: ; preds = %1493, %1492 | |
%1494 = phi %struct.ContainerChunk* [ %1498, %1493 ], [ %1490, %1492 ] | |
%1495 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1494, i64 1 | |
%1496 = bitcast %struct.ContainerChunk* %1495 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %1496) #0 | |
%1497 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1494, i64 0, i32 0 | |
%1498 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1497, align 8, !tbaa !476 | |
%1499 = icmp eq %struct.ContainerChunk* %1498, null | |
br i1 %1499, label %1500, label %1493 | |
; <label>:1500: ; preds = %1493 | |
%1501 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1489, align 8, !tbaa !482 | |
%1502 = icmp eq %struct.ContainerChunk* %1501, null | |
br i1 %1502, label %1510, label %1503 | |
; <label>:1503: ; preds = %1500 | |
br label %1504 | |
; <label>:1504: ; preds = %1504, %1503 | |
%1505 = phi %struct.ContainerChunk* [ %1508, %1504 ], [ %1501, %1503 ] | |
%1506 = bitcast %struct.ContainerChunk* %1505 to i8* | |
%1507 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1505, i64 0, i32 0 | |
%1508 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1507, align 8, !tbaa !484 | |
call void @free(i8* %1506) #0 | |
%1509 = icmp eq %struct.ContainerChunk* %1508, null | |
br i1 %1509, label %1510, label %1504 | |
; <label>:1510: ; preds = %1504, %1500, %1488 | |
%1511 = bitcast %struct.ObjHeader* %1486 to i8* | |
call void @free(i8* %1511) #0 | |
br label %2461 | |
; <label>:1512: ; preds = %1468, %1465 | |
%1513 = phi %struct.ObjHeader* [ %1466, %1465 ], [ %1470, %1468 ] | |
%1514 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1513, i64 1 | |
%1515 = bitcast %struct.ObjHeader* %1514 to %struct.ObjHeader** | |
%1516 = load %struct.ObjHeader*, %struct.ObjHeader** %1515, align 8 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %30, %struct.ObjHeader* %1516) | |
%1517 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1518 = load %struct.ObjHeader*, %struct.ObjHeader** %1517, align 8, !tbaa !476 | |
%1519 = icmp eq %struct.ObjHeader* %1518, null | |
br i1 %1519, label %1529, label %1520 | |
; <label>:1520: ; preds = %1512 | |
%1521 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1518, i64 0, i32 0 | |
%1522 = load %struct.TypeInfo*, %struct.TypeInfo** %1521, align 8, !tbaa !477 | |
%1523 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1518, i64 0, i32 1 | |
%1524 = load %struct.ContainerHeader*, %struct.ContainerHeader** %1523, align 8, !tbaa !479 | |
%1525 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1522, i64 0, i32 0 | |
%1526 = load %struct.TypeInfo*, %struct.TypeInfo** %1525, align 8, !tbaa !480 | |
%1527 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1526, i64 0, i32 5 | |
%1528 = load i32, i32* %1527, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %1528, %struct.ContainerHeader* %1524) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %1517, align 8, !tbaa !476 | |
br label %1529 | |
; <label>:1529: ; preds = %1520, %1512 | |
%1530 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%1531 = icmp eq %struct.ObjHeader* %1530, null | |
br i1 %1531, label %1556, label %1532 | |
; <label>:1532: ; preds = %1529 | |
%1533 = bitcast %struct.ObjHeader* %1530 to %struct.ContainerChunk** | |
%1534 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1533, align 8, !tbaa !476 | |
%1535 = icmp eq %struct.ContainerChunk* %1534, null | |
br i1 %1535, label %1554, label %1536 | |
; <label>:1536: ; preds = %1532 | |
br label %1537 | |
; <label>:1537: ; preds = %1537, %1536 | |
%1538 = phi %struct.ContainerChunk* [ %1542, %1537 ], [ %1534, %1536 ] | |
%1539 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1538, i64 1 | |
%1540 = bitcast %struct.ContainerChunk* %1539 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %1540) #0 | |
%1541 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1538, i64 0, i32 0 | |
%1542 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1541, align 8, !tbaa !476 | |
%1543 = icmp eq %struct.ContainerChunk* %1542, null | |
br i1 %1543, label %1544, label %1537 | |
; <label>:1544: ; preds = %1537 | |
%1545 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1533, align 8, !tbaa !482 | |
%1546 = icmp eq %struct.ContainerChunk* %1545, null | |
br i1 %1546, label %1554, label %1547 | |
; <label>:1547: ; preds = %1544 | |
br label %1548 | |
; <label>:1548: ; preds = %1548, %1547 | |
%1549 = phi %struct.ContainerChunk* [ %1552, %1548 ], [ %1545, %1547 ] | |
%1550 = bitcast %struct.ContainerChunk* %1549 to i8* | |
%1551 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1549, i64 0, i32 0 | |
%1552 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1551, align 8, !tbaa !484 | |
call void @free(i8* %1550) #0 | |
%1553 = icmp eq %struct.ContainerChunk* %1552, null | |
br i1 %1553, label %1554, label %1548 | |
; <label>:1554: ; preds = %1548, %1544, %1532 | |
%1555 = bitcast %struct.ObjHeader* %1530 to i8* | |
call void @free(i8* %1555) #0 | |
br label %1556 | |
; <label>:1556: ; preds = %1554, %1529 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47) | |
%1557 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %1516, i64 1 | |
%1558 = bitcast %struct.ObjHeader* %1557 to i32* | |
%1559 = load i32, i32* %1558, align 8, !tbaa !492 | |
%1560 = icmp ugt i32 %1559, 62 | |
br i1 %1560, label %1564, label %1561 | |
; <label>:1561: ; preds = %1556 | |
%1562 = invoke fastcc %struct.ObjHeader* @ThrowArrayIndexOutOfBoundsException() #27 | |
to label %1563 unwind label %2459 | |
; <label>:1563: ; preds = %1561 | |
unreachable | |
; <label>:1564: ; preds = %1556 | |
%1565 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %1516, i64 1, i32 1 | |
%1566 = getelementptr inbounds %struct.ContainerHeader*, %struct.ContainerHeader** %1565, i64 62 | |
%1567 = bitcast %struct.ContainerHeader** %1566 to %struct.ObjHeader** | |
%1568 = load %struct.ObjHeader*, %struct.ObjHeader** %1567, align 8, !tbaa !476 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %31, %struct.ObjHeader* %1568) #0 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !494, metadata !412), !dbg !498 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !499, metadata !500), !dbg !498 | |
br i1 %152, label %1569, label %1571, !dbg !501 | |
; <label>:1569: ; preds = %1564 | |
%1570 = icmp eq %struct.ObjHeader* %1568, null, !dbg !501 | |
br i1 %1570, label %2411, label %1583 | |
; <label>:1571: ; preds = %1564 | |
%1572 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %0, i64 0, i32 0, !dbg !501 | |
%1573 = load %struct.TypeInfo*, %struct.TypeInfo** %1572, align 8, !dbg !501 | |
%1574 = getelementptr inbounds %struct.TypeInfo, %struct.TypeInfo* %1573, i64 0, i32 0, !dbg !501 | |
%1575 = load %struct.TypeInfo*, %struct.TypeInfo** %1574, align 8, !dbg !501 | |
%1576 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1575, i64 1, i32 1, i32 0, i64 8, !dbg !501 | |
%1577 = bitcast i8* %1576 to i1 (%struct.ObjHeader*, %struct.ObjHeader*)**, !dbg !501 | |
%1578 = load i1 (%struct.ObjHeader*, %struct.ObjHeader*)*, i1 (%struct.ObjHeader*, %struct.ObjHeader*)** %1577, align 8, !dbg !501 | |
%1579 = invoke i1 %1578(%struct.ObjHeader* nonnull %0, %struct.ObjHeader* %1568) | |
to label %1582 unwind label %1580, !dbg !501 | |
; <label>:1580: ; preds = %1571 | |
%1581 = landingpad { i8*, i32 } | |
cleanup, !dbg !502 | |
br label %2461, !dbg !502 | |
; <label>:1582: ; preds = %1571 | |
br i1 %1579, label %2411, label %1583 | |
; <label>:1583: ; preds = %1582, %1569 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %47) | |
call void @llvm.memset.p0i8.i32(i8* %47, i8 0, i32 16, i32 8, i1 false) | |
%1584 = load %struct.ObjHeader*, %struct.ObjHeader** @"kobjref:MyEnum.$OBJECT", align 8 | |
%1585 = icmp ugt %struct.ObjHeader* %1584, inttoptr (i64 1 to %struct.ObjHeader*) | |
br i1 %1585, label %1630, label %1586 | |
; <label>:1586: ; preds = %1583 | |
%1587 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1588 = invoke fastcc %struct.ObjHeader* @InitSharedInstance(%struct.ObjHeader** nonnull @"kobjref:MyEnum.$OBJECT", %struct.ObjHeader** nonnull @"kshadowobjref:MyEnum.$OBJECT", %struct.TypeInfo* getelementptr inbounds ({ %struct.TypeInfo, [3 x i8*] }, { %struct.TypeInfo, [3 x i8*] }* @"ktypeglobal:MyEnum.$OBJECT#internal", i64 0, i32 0), void (%struct.ObjHeader*)* nonnull @"kfun:MyEnum.$OBJECT.<init>()kotlin.Any", %struct.ObjHeader** %1587) | |
to label %1630 unwind label %1589 | |
; <label>:1589: ; preds = %1586 | |
%1590 = landingpad { i8*, i32 } | |
cleanup | |
%1591 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1592 = load %struct.ObjHeader*, %struct.ObjHeader** %1591, align 8, !tbaa !476 | |
%1593 = icmp eq %struct.ObjHeader* %1592, null | |
br i1 %1593, label %1603, label %1594 | |
; <label>:1594: ; preds = %1589 | |
%1595 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1592, i64 0, i32 0 | |
%1596 = load %struct.TypeInfo*, %struct.TypeInfo** %1595, align 8, !tbaa !477 | |
%1597 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1592, i64 0, i32 1 | |
%1598 = load %struct.ContainerHeader*, %struct.ContainerHeader** %1597, align 8, !tbaa !479 | |
%1599 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1596, i64 0, i32 0 | |
%1600 = load %struct.TypeInfo*, %struct.TypeInfo** %1599, align 8, !tbaa !480 | |
%1601 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1600, i64 0, i32 5 | |
%1602 = load i32, i32* %1601, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %1602, %struct.ContainerHeader* %1598) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %1591, align 8, !tbaa !476 | |
br label %1603 | |
; <label>:1603: ; preds = %1594, %1589 | |
%1604 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%1605 = icmp eq %struct.ObjHeader* %1604, null | |
br i1 %1605, label %2461, label %1606 | |
; <label>:1606: ; preds = %1603 | |
%1607 = bitcast %struct.ObjHeader* %1604 to %struct.ContainerChunk** | |
%1608 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1607, align 8, !tbaa !476 | |
%1609 = icmp eq %struct.ContainerChunk* %1608, null | |
br i1 %1609, label %1628, label %1610 | |
; <label>:1610: ; preds = %1606 | |
br label %1611 | |
; <label>:1611: ; preds = %1611, %1610 | |
%1612 = phi %struct.ContainerChunk* [ %1616, %1611 ], [ %1608, %1610 ] | |
%1613 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1612, i64 1 | |
%1614 = bitcast %struct.ContainerChunk* %1613 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %1614) #0 | |
%1615 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1612, i64 0, i32 0 | |
%1616 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1615, align 8, !tbaa !476 | |
%1617 = icmp eq %struct.ContainerChunk* %1616, null | |
br i1 %1617, label %1618, label %1611 | |
; <label>:1618: ; preds = %1611 | |
%1619 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1607, align 8, !tbaa !482 | |
%1620 = icmp eq %struct.ContainerChunk* %1619, null | |
br i1 %1620, label %1628, label %1621 | |
; <label>:1621: ; preds = %1618 | |
br label %1622 | |
; <label>:1622: ; preds = %1622, %1621 | |
%1623 = phi %struct.ContainerChunk* [ %1626, %1622 ], [ %1619, %1621 ] | |
%1624 = bitcast %struct.ContainerChunk* %1623 to i8* | |
%1625 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1623, i64 0, i32 0 | |
%1626 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1625, align 8, !tbaa !484 | |
call void @free(i8* %1624) #0 | |
%1627 = icmp eq %struct.ContainerChunk* %1626, null | |
br i1 %1627, label %1628, label %1622 | |
; <label>:1628: ; preds = %1622, %1618, %1606 | |
%1629 = bitcast %struct.ObjHeader* %1604 to i8* | |
call void @free(i8* %1629) #0 | |
br label %2461 | |
; <label>:1630: ; preds = %1586, %1583 | |
%1631 = phi %struct.ObjHeader* [ %1584, %1583 ], [ %1588, %1586 ] | |
%1632 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1631, i64 1 | |
%1633 = bitcast %struct.ObjHeader* %1632 to %struct.ObjHeader** | |
%1634 = load %struct.ObjHeader*, %struct.ObjHeader** %1633, align 8 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %32, %struct.ObjHeader* %1634) | |
%1635 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1636 = load %struct.ObjHeader*, %struct.ObjHeader** %1635, align 8, !tbaa !476 | |
%1637 = icmp eq %struct.ObjHeader* %1636, null | |
br i1 %1637, label %1647, label %1638 | |
; <label>:1638: ; preds = %1630 | |
%1639 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1636, i64 0, i32 0 | |
%1640 = load %struct.TypeInfo*, %struct.TypeInfo** %1639, align 8, !tbaa !477 | |
%1641 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1636, i64 0, i32 1 | |
%1642 = load %struct.ContainerHeader*, %struct.ContainerHeader** %1641, align 8, !tbaa !479 | |
%1643 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1640, i64 0, i32 0 | |
%1644 = load %struct.TypeInfo*, %struct.TypeInfo** %1643, align 8, !tbaa !480 | |
%1645 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1644, i64 0, i32 5 | |
%1646 = load i32, i32* %1645, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %1646, %struct.ContainerHeader* %1642) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %1635, align 8, !tbaa !476 | |
br label %1647 | |
; <label>:1647: ; preds = %1638, %1630 | |
%1648 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%1649 = icmp eq %struct.ObjHeader* %1648, null | |
br i1 %1649, label %1674, label %1650 | |
; <label>:1650: ; preds = %1647 | |
%1651 = bitcast %struct.ObjHeader* %1648 to %struct.ContainerChunk** | |
%1652 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1651, align 8, !tbaa !476 | |
%1653 = icmp eq %struct.ContainerChunk* %1652, null | |
br i1 %1653, label %1672, label %1654 | |
; <label>:1654: ; preds = %1650 | |
br label %1655 | |
; <label>:1655: ; preds = %1655, %1654 | |
%1656 = phi %struct.ContainerChunk* [ %1660, %1655 ], [ %1652, %1654 ] | |
%1657 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1656, i64 1 | |
%1658 = bitcast %struct.ContainerChunk* %1657 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %1658) #0 | |
%1659 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1656, i64 0, i32 0 | |
%1660 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1659, align 8, !tbaa !476 | |
%1661 = icmp eq %struct.ContainerChunk* %1660, null | |
br i1 %1661, label %1662, label %1655 | |
; <label>:1662: ; preds = %1655 | |
%1663 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1651, align 8, !tbaa !482 | |
%1664 = icmp eq %struct.ContainerChunk* %1663, null | |
br i1 %1664, label %1672, label %1665 | |
; <label>:1665: ; preds = %1662 | |
br label %1666 | |
; <label>:1666: ; preds = %1666, %1665 | |
%1667 = phi %struct.ContainerChunk* [ %1670, %1666 ], [ %1663, %1665 ] | |
%1668 = bitcast %struct.ContainerChunk* %1667 to i8* | |
%1669 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1667, i64 0, i32 0 | |
%1670 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1669, align 8, !tbaa !484 | |
call void @free(i8* %1668) #0 | |
%1671 = icmp eq %struct.ContainerChunk* %1670, null | |
br i1 %1671, label %1672, label %1666 | |
; <label>:1672: ; preds = %1666, %1662, %1650 | |
%1673 = bitcast %struct.ObjHeader* %1648 to i8* | |
call void @free(i8* %1673) #0 | |
br label %1674 | |
; <label>:1674: ; preds = %1672, %1647 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47) | |
%1675 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %1634, i64 1 | |
%1676 = bitcast %struct.ObjHeader* %1675 to i32* | |
%1677 = load i32, i32* %1676, align 8, !tbaa !492 | |
%1678 = icmp ugt i32 %1677, 68 | |
br i1 %1678, label %1682, label %1679 | |
; <label>:1679: ; preds = %1674 | |
%1680 = invoke fastcc %struct.ObjHeader* @ThrowArrayIndexOutOfBoundsException() #27 | |
to label %1681 unwind label %2459 | |
; <label>:1681: ; preds = %1679 | |
unreachable | |
; <label>:1682: ; preds = %1674 | |
%1683 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %1634, i64 1, i32 1 | |
%1684 = getelementptr inbounds %struct.ContainerHeader*, %struct.ContainerHeader** %1683, i64 68 | |
%1685 = bitcast %struct.ContainerHeader** %1684 to %struct.ObjHeader** | |
%1686 = load %struct.ObjHeader*, %struct.ObjHeader** %1685, align 8, !tbaa !476 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %33, %struct.ObjHeader* %1686) #0 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !494, metadata !412), !dbg !498 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !499, metadata !500), !dbg !498 | |
br i1 %152, label %1687, label %1689, !dbg !501 | |
; <label>:1687: ; preds = %1682 | |
%1688 = icmp eq %struct.ObjHeader* %1686, null, !dbg !501 | |
br i1 %1688, label %2411, label %1701 | |
; <label>:1689: ; preds = %1682 | |
%1690 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %0, i64 0, i32 0, !dbg !501 | |
%1691 = load %struct.TypeInfo*, %struct.TypeInfo** %1690, align 8, !dbg !501 | |
%1692 = getelementptr inbounds %struct.TypeInfo, %struct.TypeInfo* %1691, i64 0, i32 0, !dbg !501 | |
%1693 = load %struct.TypeInfo*, %struct.TypeInfo** %1692, align 8, !dbg !501 | |
%1694 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1693, i64 1, i32 1, i32 0, i64 8, !dbg !501 | |
%1695 = bitcast i8* %1694 to i1 (%struct.ObjHeader*, %struct.ObjHeader*)**, !dbg !501 | |
%1696 = load i1 (%struct.ObjHeader*, %struct.ObjHeader*)*, i1 (%struct.ObjHeader*, %struct.ObjHeader*)** %1695, align 8, !dbg !501 | |
%1697 = invoke i1 %1696(%struct.ObjHeader* nonnull %0, %struct.ObjHeader* %1686) | |
to label %1700 unwind label %1698, !dbg !501 | |
; <label>:1698: ; preds = %1689 | |
%1699 = landingpad { i8*, i32 } | |
cleanup, !dbg !502 | |
br label %2461, !dbg !502 | |
; <label>:1700: ; preds = %1689 | |
br i1 %1697, label %2411, label %1701 | |
; <label>:1701: ; preds = %1700, %1687 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %47) | |
call void @llvm.memset.p0i8.i32(i8* %47, i8 0, i32 16, i32 8, i1 false) | |
%1702 = load %struct.ObjHeader*, %struct.ObjHeader** @"kobjref:MyEnum.$OBJECT", align 8 | |
%1703 = icmp ugt %struct.ObjHeader* %1702, inttoptr (i64 1 to %struct.ObjHeader*) | |
br i1 %1703, label %1748, label %1704 | |
; <label>:1704: ; preds = %1701 | |
%1705 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1706 = invoke fastcc %struct.ObjHeader* @InitSharedInstance(%struct.ObjHeader** nonnull @"kobjref:MyEnum.$OBJECT", %struct.ObjHeader** nonnull @"kshadowobjref:MyEnum.$OBJECT", %struct.TypeInfo* getelementptr inbounds ({ %struct.TypeInfo, [3 x i8*] }, { %struct.TypeInfo, [3 x i8*] }* @"ktypeglobal:MyEnum.$OBJECT#internal", i64 0, i32 0), void (%struct.ObjHeader*)* nonnull @"kfun:MyEnum.$OBJECT.<init>()kotlin.Any", %struct.ObjHeader** %1705) | |
to label %1748 unwind label %1707 | |
; <label>:1707: ; preds = %1704 | |
%1708 = landingpad { i8*, i32 } | |
cleanup | |
%1709 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1710 = load %struct.ObjHeader*, %struct.ObjHeader** %1709, align 8, !tbaa !476 | |
%1711 = icmp eq %struct.ObjHeader* %1710, null | |
br i1 %1711, label %1721, label %1712 | |
; <label>:1712: ; preds = %1707 | |
%1713 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1710, i64 0, i32 0 | |
%1714 = load %struct.TypeInfo*, %struct.TypeInfo** %1713, align 8, !tbaa !477 | |
%1715 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1710, i64 0, i32 1 | |
%1716 = load %struct.ContainerHeader*, %struct.ContainerHeader** %1715, align 8, !tbaa !479 | |
%1717 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1714, i64 0, i32 0 | |
%1718 = load %struct.TypeInfo*, %struct.TypeInfo** %1717, align 8, !tbaa !480 | |
%1719 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1718, i64 0, i32 5 | |
%1720 = load i32, i32* %1719, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %1720, %struct.ContainerHeader* %1716) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %1709, align 8, !tbaa !476 | |
br label %1721 | |
; <label>:1721: ; preds = %1712, %1707 | |
%1722 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%1723 = icmp eq %struct.ObjHeader* %1722, null | |
br i1 %1723, label %2461, label %1724 | |
; <label>:1724: ; preds = %1721 | |
%1725 = bitcast %struct.ObjHeader* %1722 to %struct.ContainerChunk** | |
%1726 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1725, align 8, !tbaa !476 | |
%1727 = icmp eq %struct.ContainerChunk* %1726, null | |
br i1 %1727, label %1746, label %1728 | |
; <label>:1728: ; preds = %1724 | |
br label %1729 | |
; <label>:1729: ; preds = %1729, %1728 | |
%1730 = phi %struct.ContainerChunk* [ %1734, %1729 ], [ %1726, %1728 ] | |
%1731 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1730, i64 1 | |
%1732 = bitcast %struct.ContainerChunk* %1731 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %1732) #0 | |
%1733 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1730, i64 0, i32 0 | |
%1734 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1733, align 8, !tbaa !476 | |
%1735 = icmp eq %struct.ContainerChunk* %1734, null | |
br i1 %1735, label %1736, label %1729 | |
; <label>:1736: ; preds = %1729 | |
%1737 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1725, align 8, !tbaa !482 | |
%1738 = icmp eq %struct.ContainerChunk* %1737, null | |
br i1 %1738, label %1746, label %1739 | |
; <label>:1739: ; preds = %1736 | |
br label %1740 | |
; <label>:1740: ; preds = %1740, %1739 | |
%1741 = phi %struct.ContainerChunk* [ %1744, %1740 ], [ %1737, %1739 ] | |
%1742 = bitcast %struct.ContainerChunk* %1741 to i8* | |
%1743 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1741, i64 0, i32 0 | |
%1744 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1743, align 8, !tbaa !484 | |
call void @free(i8* %1742) #0 | |
%1745 = icmp eq %struct.ContainerChunk* %1744, null | |
br i1 %1745, label %1746, label %1740 | |
; <label>:1746: ; preds = %1740, %1736, %1724 | |
%1747 = bitcast %struct.ObjHeader* %1722 to i8* | |
call void @free(i8* %1747) #0 | |
br label %2461 | |
; <label>:1748: ; preds = %1704, %1701 | |
%1749 = phi %struct.ObjHeader* [ %1702, %1701 ], [ %1706, %1704 ] | |
%1750 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1749, i64 1 | |
%1751 = bitcast %struct.ObjHeader* %1750 to %struct.ObjHeader** | |
%1752 = load %struct.ObjHeader*, %struct.ObjHeader** %1751, align 8 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %34, %struct.ObjHeader* %1752) | |
%1753 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1754 = load %struct.ObjHeader*, %struct.ObjHeader** %1753, align 8, !tbaa !476 | |
%1755 = icmp eq %struct.ObjHeader* %1754, null | |
br i1 %1755, label %1765, label %1756 | |
; <label>:1756: ; preds = %1748 | |
%1757 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1754, i64 0, i32 0 | |
%1758 = load %struct.TypeInfo*, %struct.TypeInfo** %1757, align 8, !tbaa !477 | |
%1759 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1754, i64 0, i32 1 | |
%1760 = load %struct.ContainerHeader*, %struct.ContainerHeader** %1759, align 8, !tbaa !479 | |
%1761 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1758, i64 0, i32 0 | |
%1762 = load %struct.TypeInfo*, %struct.TypeInfo** %1761, align 8, !tbaa !480 | |
%1763 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1762, i64 0, i32 5 | |
%1764 = load i32, i32* %1763, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %1764, %struct.ContainerHeader* %1760) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %1753, align 8, !tbaa !476 | |
br label %1765 | |
; <label>:1765: ; preds = %1756, %1748 | |
%1766 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%1767 = icmp eq %struct.ObjHeader* %1766, null | |
br i1 %1767, label %1792, label %1768 | |
; <label>:1768: ; preds = %1765 | |
%1769 = bitcast %struct.ObjHeader* %1766 to %struct.ContainerChunk** | |
%1770 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1769, align 8, !tbaa !476 | |
%1771 = icmp eq %struct.ContainerChunk* %1770, null | |
br i1 %1771, label %1790, label %1772 | |
; <label>:1772: ; preds = %1768 | |
br label %1773 | |
; <label>:1773: ; preds = %1773, %1772 | |
%1774 = phi %struct.ContainerChunk* [ %1778, %1773 ], [ %1770, %1772 ] | |
%1775 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1774, i64 1 | |
%1776 = bitcast %struct.ContainerChunk* %1775 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %1776) #0 | |
%1777 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1774, i64 0, i32 0 | |
%1778 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1777, align 8, !tbaa !476 | |
%1779 = icmp eq %struct.ContainerChunk* %1778, null | |
br i1 %1779, label %1780, label %1773 | |
; <label>:1780: ; preds = %1773 | |
%1781 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1769, align 8, !tbaa !482 | |
%1782 = icmp eq %struct.ContainerChunk* %1781, null | |
br i1 %1782, label %1790, label %1783 | |
; <label>:1783: ; preds = %1780 | |
br label %1784 | |
; <label>:1784: ; preds = %1784, %1783 | |
%1785 = phi %struct.ContainerChunk* [ %1788, %1784 ], [ %1781, %1783 ] | |
%1786 = bitcast %struct.ContainerChunk* %1785 to i8* | |
%1787 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1785, i64 0, i32 0 | |
%1788 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1787, align 8, !tbaa !484 | |
call void @free(i8* %1786) #0 | |
%1789 = icmp eq %struct.ContainerChunk* %1788, null | |
br i1 %1789, label %1790, label %1784 | |
; <label>:1790: ; preds = %1784, %1780, %1768 | |
%1791 = bitcast %struct.ObjHeader* %1766 to i8* | |
call void @free(i8* %1791) #0 | |
br label %1792 | |
; <label>:1792: ; preds = %1790, %1765 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47) | |
%1793 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %1752, i64 1 | |
%1794 = bitcast %struct.ObjHeader* %1793 to i32* | |
%1795 = load i32, i32* %1794, align 8, !tbaa !492 | |
%1796 = icmp ugt i32 %1795, 73 | |
br i1 %1796, label %1800, label %1797 | |
; <label>:1797: ; preds = %1792 | |
%1798 = invoke fastcc %struct.ObjHeader* @ThrowArrayIndexOutOfBoundsException() #27 | |
to label %1799 unwind label %2459 | |
; <label>:1799: ; preds = %1797 | |
unreachable | |
; <label>:1800: ; preds = %1792 | |
%1801 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %1752, i64 1, i32 1 | |
%1802 = getelementptr inbounds %struct.ContainerHeader*, %struct.ContainerHeader** %1801, i64 73 | |
%1803 = bitcast %struct.ContainerHeader** %1802 to %struct.ObjHeader** | |
%1804 = load %struct.ObjHeader*, %struct.ObjHeader** %1803, align 8, !tbaa !476 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %35, %struct.ObjHeader* %1804) #0 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !494, metadata !412), !dbg !498 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !499, metadata !500), !dbg !498 | |
br i1 %152, label %1805, label %1807, !dbg !501 | |
; <label>:1805: ; preds = %1800 | |
%1806 = icmp eq %struct.ObjHeader* %1804, null, !dbg !501 | |
br i1 %1806, label %2411, label %1819 | |
; <label>:1807: ; preds = %1800 | |
%1808 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %0, i64 0, i32 0, !dbg !501 | |
%1809 = load %struct.TypeInfo*, %struct.TypeInfo** %1808, align 8, !dbg !501 | |
%1810 = getelementptr inbounds %struct.TypeInfo, %struct.TypeInfo* %1809, i64 0, i32 0, !dbg !501 | |
%1811 = load %struct.TypeInfo*, %struct.TypeInfo** %1810, align 8, !dbg !501 | |
%1812 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1811, i64 1, i32 1, i32 0, i64 8, !dbg !501 | |
%1813 = bitcast i8* %1812 to i1 (%struct.ObjHeader*, %struct.ObjHeader*)**, !dbg !501 | |
%1814 = load i1 (%struct.ObjHeader*, %struct.ObjHeader*)*, i1 (%struct.ObjHeader*, %struct.ObjHeader*)** %1813, align 8, !dbg !501 | |
%1815 = invoke i1 %1814(%struct.ObjHeader* nonnull %0, %struct.ObjHeader* %1804) | |
to label %1818 unwind label %1816, !dbg !501 | |
; <label>:1816: ; preds = %1807 | |
%1817 = landingpad { i8*, i32 } | |
cleanup, !dbg !502 | |
br label %2461, !dbg !502 | |
; <label>:1818: ; preds = %1807 | |
br i1 %1815, label %2411, label %1819 | |
; <label>:1819: ; preds = %1818, %1805 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %47) | |
call void @llvm.memset.p0i8.i32(i8* %47, i8 0, i32 16, i32 8, i1 false) | |
%1820 = load %struct.ObjHeader*, %struct.ObjHeader** @"kobjref:MyEnum.$OBJECT", align 8 | |
%1821 = icmp ugt %struct.ObjHeader* %1820, inttoptr (i64 1 to %struct.ObjHeader*) | |
br i1 %1821, label %1866, label %1822 | |
; <label>:1822: ; preds = %1819 | |
%1823 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1824 = invoke fastcc %struct.ObjHeader* @InitSharedInstance(%struct.ObjHeader** nonnull @"kobjref:MyEnum.$OBJECT", %struct.ObjHeader** nonnull @"kshadowobjref:MyEnum.$OBJECT", %struct.TypeInfo* getelementptr inbounds ({ %struct.TypeInfo, [3 x i8*] }, { %struct.TypeInfo, [3 x i8*] }* @"ktypeglobal:MyEnum.$OBJECT#internal", i64 0, i32 0), void (%struct.ObjHeader*)* nonnull @"kfun:MyEnum.$OBJECT.<init>()kotlin.Any", %struct.ObjHeader** %1823) | |
to label %1866 unwind label %1825 | |
; <label>:1825: ; preds = %1822 | |
%1826 = landingpad { i8*, i32 } | |
cleanup | |
%1827 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1828 = load %struct.ObjHeader*, %struct.ObjHeader** %1827, align 8, !tbaa !476 | |
%1829 = icmp eq %struct.ObjHeader* %1828, null | |
br i1 %1829, label %1839, label %1830 | |
; <label>:1830: ; preds = %1825 | |
%1831 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1828, i64 0, i32 0 | |
%1832 = load %struct.TypeInfo*, %struct.TypeInfo** %1831, align 8, !tbaa !477 | |
%1833 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1828, i64 0, i32 1 | |
%1834 = load %struct.ContainerHeader*, %struct.ContainerHeader** %1833, align 8, !tbaa !479 | |
%1835 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1832, i64 0, i32 0 | |
%1836 = load %struct.TypeInfo*, %struct.TypeInfo** %1835, align 8, !tbaa !480 | |
%1837 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1836, i64 0, i32 5 | |
%1838 = load i32, i32* %1837, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %1838, %struct.ContainerHeader* %1834) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %1827, align 8, !tbaa !476 | |
br label %1839 | |
; <label>:1839: ; preds = %1830, %1825 | |
%1840 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%1841 = icmp eq %struct.ObjHeader* %1840, null | |
br i1 %1841, label %2461, label %1842 | |
; <label>:1842: ; preds = %1839 | |
%1843 = bitcast %struct.ObjHeader* %1840 to %struct.ContainerChunk** | |
%1844 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1843, align 8, !tbaa !476 | |
%1845 = icmp eq %struct.ContainerChunk* %1844, null | |
br i1 %1845, label %1864, label %1846 | |
; <label>:1846: ; preds = %1842 | |
br label %1847 | |
; <label>:1847: ; preds = %1847, %1846 | |
%1848 = phi %struct.ContainerChunk* [ %1852, %1847 ], [ %1844, %1846 ] | |
%1849 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1848, i64 1 | |
%1850 = bitcast %struct.ContainerChunk* %1849 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %1850) #0 | |
%1851 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1848, i64 0, i32 0 | |
%1852 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1851, align 8, !tbaa !476 | |
%1853 = icmp eq %struct.ContainerChunk* %1852, null | |
br i1 %1853, label %1854, label %1847 | |
; <label>:1854: ; preds = %1847 | |
%1855 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1843, align 8, !tbaa !482 | |
%1856 = icmp eq %struct.ContainerChunk* %1855, null | |
br i1 %1856, label %1864, label %1857 | |
; <label>:1857: ; preds = %1854 | |
br label %1858 | |
; <label>:1858: ; preds = %1858, %1857 | |
%1859 = phi %struct.ContainerChunk* [ %1862, %1858 ], [ %1855, %1857 ] | |
%1860 = bitcast %struct.ContainerChunk* %1859 to i8* | |
%1861 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1859, i64 0, i32 0 | |
%1862 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1861, align 8, !tbaa !484 | |
call void @free(i8* %1860) #0 | |
%1863 = icmp eq %struct.ContainerChunk* %1862, null | |
br i1 %1863, label %1864, label %1858 | |
; <label>:1864: ; preds = %1858, %1854, %1842 | |
%1865 = bitcast %struct.ObjHeader* %1840 to i8* | |
call void @free(i8* %1865) #0 | |
br label %2461 | |
; <label>:1866: ; preds = %1822, %1819 | |
%1867 = phi %struct.ObjHeader* [ %1820, %1819 ], [ %1824, %1822 ] | |
%1868 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1867, i64 1 | |
%1869 = bitcast %struct.ObjHeader* %1868 to %struct.ObjHeader** | |
%1870 = load %struct.ObjHeader*, %struct.ObjHeader** %1869, align 8 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %36, %struct.ObjHeader* %1870) | |
%1871 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1872 = load %struct.ObjHeader*, %struct.ObjHeader** %1871, align 8, !tbaa !476 | |
%1873 = icmp eq %struct.ObjHeader* %1872, null | |
br i1 %1873, label %1883, label %1874 | |
; <label>:1874: ; preds = %1866 | |
%1875 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1872, i64 0, i32 0 | |
%1876 = load %struct.TypeInfo*, %struct.TypeInfo** %1875, align 8, !tbaa !477 | |
%1877 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1872, i64 0, i32 1 | |
%1878 = load %struct.ContainerHeader*, %struct.ContainerHeader** %1877, align 8, !tbaa !479 | |
%1879 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1876, i64 0, i32 0 | |
%1880 = load %struct.TypeInfo*, %struct.TypeInfo** %1879, align 8, !tbaa !480 | |
%1881 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1880, i64 0, i32 5 | |
%1882 = load i32, i32* %1881, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %1882, %struct.ContainerHeader* %1878) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %1871, align 8, !tbaa !476 | |
br label %1883 | |
; <label>:1883: ; preds = %1874, %1866 | |
%1884 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%1885 = icmp eq %struct.ObjHeader* %1884, null | |
br i1 %1885, label %1910, label %1886 | |
; <label>:1886: ; preds = %1883 | |
%1887 = bitcast %struct.ObjHeader* %1884 to %struct.ContainerChunk** | |
%1888 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1887, align 8, !tbaa !476 | |
%1889 = icmp eq %struct.ContainerChunk* %1888, null | |
br i1 %1889, label %1908, label %1890 | |
; <label>:1890: ; preds = %1886 | |
br label %1891 | |
; <label>:1891: ; preds = %1891, %1890 | |
%1892 = phi %struct.ContainerChunk* [ %1896, %1891 ], [ %1888, %1890 ] | |
%1893 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1892, i64 1 | |
%1894 = bitcast %struct.ContainerChunk* %1893 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %1894) #0 | |
%1895 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1892, i64 0, i32 0 | |
%1896 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1895, align 8, !tbaa !476 | |
%1897 = icmp eq %struct.ContainerChunk* %1896, null | |
br i1 %1897, label %1898, label %1891 | |
; <label>:1898: ; preds = %1891 | |
%1899 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1887, align 8, !tbaa !482 | |
%1900 = icmp eq %struct.ContainerChunk* %1899, null | |
br i1 %1900, label %1908, label %1901 | |
; <label>:1901: ; preds = %1898 | |
br label %1902 | |
; <label>:1902: ; preds = %1902, %1901 | |
%1903 = phi %struct.ContainerChunk* [ %1906, %1902 ], [ %1899, %1901 ] | |
%1904 = bitcast %struct.ContainerChunk* %1903 to i8* | |
%1905 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1903, i64 0, i32 0 | |
%1906 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1905, align 8, !tbaa !484 | |
call void @free(i8* %1904) #0 | |
%1907 = icmp eq %struct.ContainerChunk* %1906, null | |
br i1 %1907, label %1908, label %1902 | |
; <label>:1908: ; preds = %1902, %1898, %1886 | |
%1909 = bitcast %struct.ObjHeader* %1884 to i8* | |
call void @free(i8* %1909) #0 | |
br label %1910 | |
; <label>:1910: ; preds = %1908, %1883 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47) | |
%1911 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %1870, i64 1 | |
%1912 = bitcast %struct.ObjHeader* %1911 to i32* | |
%1913 = load i32, i32* %1912, align 8, !tbaa !492 | |
%1914 = icmp ugt i32 %1913, 79 | |
br i1 %1914, label %1918, label %1915 | |
; <label>:1915: ; preds = %1910 | |
%1916 = invoke fastcc %struct.ObjHeader* @ThrowArrayIndexOutOfBoundsException() #27 | |
to label %1917 unwind label %2459 | |
; <label>:1917: ; preds = %1915 | |
unreachable | |
; <label>:1918: ; preds = %1910 | |
%1919 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %1870, i64 1, i32 1 | |
%1920 = getelementptr inbounds %struct.ContainerHeader*, %struct.ContainerHeader** %1919, i64 79 | |
%1921 = bitcast %struct.ContainerHeader** %1920 to %struct.ObjHeader** | |
%1922 = load %struct.ObjHeader*, %struct.ObjHeader** %1921, align 8, !tbaa !476 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %37, %struct.ObjHeader* %1922) #0 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !494, metadata !412), !dbg !498 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !499, metadata !500), !dbg !498 | |
br i1 %152, label %1923, label %1925, !dbg !501 | |
; <label>:1923: ; preds = %1918 | |
%1924 = icmp eq %struct.ObjHeader* %1922, null, !dbg !501 | |
br i1 %1924, label %2411, label %1937 | |
; <label>:1925: ; preds = %1918 | |
%1926 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %0, i64 0, i32 0, !dbg !501 | |
%1927 = load %struct.TypeInfo*, %struct.TypeInfo** %1926, align 8, !dbg !501 | |
%1928 = getelementptr inbounds %struct.TypeInfo, %struct.TypeInfo* %1927, i64 0, i32 0, !dbg !501 | |
%1929 = load %struct.TypeInfo*, %struct.TypeInfo** %1928, align 8, !dbg !501 | |
%1930 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1929, i64 1, i32 1, i32 0, i64 8, !dbg !501 | |
%1931 = bitcast i8* %1930 to i1 (%struct.ObjHeader*, %struct.ObjHeader*)**, !dbg !501 | |
%1932 = load i1 (%struct.ObjHeader*, %struct.ObjHeader*)*, i1 (%struct.ObjHeader*, %struct.ObjHeader*)** %1931, align 8, !dbg !501 | |
%1933 = invoke i1 %1932(%struct.ObjHeader* nonnull %0, %struct.ObjHeader* %1922) | |
to label %1936 unwind label %1934, !dbg !501 | |
; <label>:1934: ; preds = %1925 | |
%1935 = landingpad { i8*, i32 } | |
cleanup, !dbg !502 | |
br label %2461, !dbg !502 | |
; <label>:1936: ; preds = %1925 | |
br i1 %1933, label %2411, label %1937 | |
; <label>:1937: ; preds = %1936, %1923 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %47) | |
call void @llvm.memset.p0i8.i32(i8* %47, i8 0, i32 16, i32 8, i1 false) | |
%1938 = load %struct.ObjHeader*, %struct.ObjHeader** @"kobjref:MyEnum.$OBJECT", align 8 | |
%1939 = icmp ugt %struct.ObjHeader* %1938, inttoptr (i64 1 to %struct.ObjHeader*) | |
br i1 %1939, label %1984, label %1940 | |
; <label>:1940: ; preds = %1937 | |
%1941 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1942 = invoke fastcc %struct.ObjHeader* @InitSharedInstance(%struct.ObjHeader** nonnull @"kobjref:MyEnum.$OBJECT", %struct.ObjHeader** nonnull @"kshadowobjref:MyEnum.$OBJECT", %struct.TypeInfo* getelementptr inbounds ({ %struct.TypeInfo, [3 x i8*] }, { %struct.TypeInfo, [3 x i8*] }* @"ktypeglobal:MyEnum.$OBJECT#internal", i64 0, i32 0), void (%struct.ObjHeader*)* nonnull @"kfun:MyEnum.$OBJECT.<init>()kotlin.Any", %struct.ObjHeader** %1941) | |
to label %1984 unwind label %1943 | |
; <label>:1943: ; preds = %1940 | |
%1944 = landingpad { i8*, i32 } | |
cleanup | |
%1945 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1946 = load %struct.ObjHeader*, %struct.ObjHeader** %1945, align 8, !tbaa !476 | |
%1947 = icmp eq %struct.ObjHeader* %1946, null | |
br i1 %1947, label %1957, label %1948 | |
; <label>:1948: ; preds = %1943 | |
%1949 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1946, i64 0, i32 0 | |
%1950 = load %struct.TypeInfo*, %struct.TypeInfo** %1949, align 8, !tbaa !477 | |
%1951 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1946, i64 0, i32 1 | |
%1952 = load %struct.ContainerHeader*, %struct.ContainerHeader** %1951, align 8, !tbaa !479 | |
%1953 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1950, i64 0, i32 0 | |
%1954 = load %struct.TypeInfo*, %struct.TypeInfo** %1953, align 8, !tbaa !480 | |
%1955 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1954, i64 0, i32 5 | |
%1956 = load i32, i32* %1955, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %1956, %struct.ContainerHeader* %1952) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %1945, align 8, !tbaa !476 | |
br label %1957 | |
; <label>:1957: ; preds = %1948, %1943 | |
%1958 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%1959 = icmp eq %struct.ObjHeader* %1958, null | |
br i1 %1959, label %2461, label %1960 | |
; <label>:1960: ; preds = %1957 | |
%1961 = bitcast %struct.ObjHeader* %1958 to %struct.ContainerChunk** | |
%1962 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1961, align 8, !tbaa !476 | |
%1963 = icmp eq %struct.ContainerChunk* %1962, null | |
br i1 %1963, label %1982, label %1964 | |
; <label>:1964: ; preds = %1960 | |
br label %1965 | |
; <label>:1965: ; preds = %1965, %1964 | |
%1966 = phi %struct.ContainerChunk* [ %1970, %1965 ], [ %1962, %1964 ] | |
%1967 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1966, i64 1 | |
%1968 = bitcast %struct.ContainerChunk* %1967 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %1968) #0 | |
%1969 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1966, i64 0, i32 0 | |
%1970 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1969, align 8, !tbaa !476 | |
%1971 = icmp eq %struct.ContainerChunk* %1970, null | |
br i1 %1971, label %1972, label %1965 | |
; <label>:1972: ; preds = %1965 | |
%1973 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1961, align 8, !tbaa !482 | |
%1974 = icmp eq %struct.ContainerChunk* %1973, null | |
br i1 %1974, label %1982, label %1975 | |
; <label>:1975: ; preds = %1972 | |
br label %1976 | |
; <label>:1976: ; preds = %1976, %1975 | |
%1977 = phi %struct.ContainerChunk* [ %1980, %1976 ], [ %1973, %1975 ] | |
%1978 = bitcast %struct.ContainerChunk* %1977 to i8* | |
%1979 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %1977, i64 0, i32 0 | |
%1980 = load %struct.ContainerChunk*, %struct.ContainerChunk** %1979, align 8, !tbaa !484 | |
call void @free(i8* %1978) #0 | |
%1981 = icmp eq %struct.ContainerChunk* %1980, null | |
br i1 %1981, label %1982, label %1976 | |
; <label>:1982: ; preds = %1976, %1972, %1960 | |
%1983 = bitcast %struct.ObjHeader* %1958 to i8* | |
call void @free(i8* %1983) #0 | |
br label %2461 | |
; <label>:1984: ; preds = %1940, %1937 | |
%1985 = phi %struct.ObjHeader* [ %1938, %1937 ], [ %1942, %1940 ] | |
%1986 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1985, i64 1 | |
%1987 = bitcast %struct.ObjHeader* %1986 to %struct.ObjHeader** | |
%1988 = load %struct.ObjHeader*, %struct.ObjHeader** %1987, align 8 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %38, %struct.ObjHeader* %1988) | |
%1989 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%1990 = load %struct.ObjHeader*, %struct.ObjHeader** %1989, align 8, !tbaa !476 | |
%1991 = icmp eq %struct.ObjHeader* %1990, null | |
br i1 %1991, label %2001, label %1992 | |
; <label>:1992: ; preds = %1984 | |
%1993 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1990, i64 0, i32 0 | |
%1994 = load %struct.TypeInfo*, %struct.TypeInfo** %1993, align 8, !tbaa !477 | |
%1995 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %1990, i64 0, i32 1 | |
%1996 = load %struct.ContainerHeader*, %struct.ContainerHeader** %1995, align 8, !tbaa !479 | |
%1997 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1994, i64 0, i32 0 | |
%1998 = load %struct.TypeInfo*, %struct.TypeInfo** %1997, align 8, !tbaa !480 | |
%1999 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %1998, i64 0, i32 5 | |
%2000 = load i32, i32* %1999, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %2000, %struct.ContainerHeader* %1996) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %1989, align 8, !tbaa !476 | |
br label %2001 | |
; <label>:2001: ; preds = %1992, %1984 | |
%2002 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%2003 = icmp eq %struct.ObjHeader* %2002, null | |
br i1 %2003, label %2028, label %2004 | |
; <label>:2004: ; preds = %2001 | |
%2005 = bitcast %struct.ObjHeader* %2002 to %struct.ContainerChunk** | |
%2006 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2005, align 8, !tbaa !476 | |
%2007 = icmp eq %struct.ContainerChunk* %2006, null | |
br i1 %2007, label %2026, label %2008 | |
; <label>:2008: ; preds = %2004 | |
br label %2009 | |
; <label>:2009: ; preds = %2009, %2008 | |
%2010 = phi %struct.ContainerChunk* [ %2014, %2009 ], [ %2006, %2008 ] | |
%2011 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2010, i64 1 | |
%2012 = bitcast %struct.ContainerChunk* %2011 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %2012) #0 | |
%2013 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2010, i64 0, i32 0 | |
%2014 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2013, align 8, !tbaa !476 | |
%2015 = icmp eq %struct.ContainerChunk* %2014, null | |
br i1 %2015, label %2016, label %2009 | |
; <label>:2016: ; preds = %2009 | |
%2017 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2005, align 8, !tbaa !482 | |
%2018 = icmp eq %struct.ContainerChunk* %2017, null | |
br i1 %2018, label %2026, label %2019 | |
; <label>:2019: ; preds = %2016 | |
br label %2020 | |
; <label>:2020: ; preds = %2020, %2019 | |
%2021 = phi %struct.ContainerChunk* [ %2024, %2020 ], [ %2017, %2019 ] | |
%2022 = bitcast %struct.ContainerChunk* %2021 to i8* | |
%2023 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2021, i64 0, i32 0 | |
%2024 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2023, align 8, !tbaa !484 | |
call void @free(i8* %2022) #0 | |
%2025 = icmp eq %struct.ContainerChunk* %2024, null | |
br i1 %2025, label %2026, label %2020 | |
; <label>:2026: ; preds = %2020, %2016, %2004 | |
%2027 = bitcast %struct.ObjHeader* %2002 to i8* | |
call void @free(i8* %2027) #0 | |
br label %2028 | |
; <label>:2028: ; preds = %2026, %2001 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47) | |
%2029 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %1988, i64 1 | |
%2030 = bitcast %struct.ObjHeader* %2029 to i32* | |
%2031 = load i32, i32* %2030, align 8, !tbaa !492 | |
%2032 = icmp ugt i32 %2031, 84 | |
br i1 %2032, label %2036, label %2033 | |
; <label>:2033: ; preds = %2028 | |
%2034 = invoke fastcc %struct.ObjHeader* @ThrowArrayIndexOutOfBoundsException() #27 | |
to label %2035 unwind label %2459 | |
; <label>:2035: ; preds = %2033 | |
unreachable | |
; <label>:2036: ; preds = %2028 | |
%2037 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %1988, i64 1, i32 1 | |
%2038 = getelementptr inbounds %struct.ContainerHeader*, %struct.ContainerHeader** %2037, i64 84 | |
%2039 = bitcast %struct.ContainerHeader** %2038 to %struct.ObjHeader** | |
%2040 = load %struct.ObjHeader*, %struct.ObjHeader** %2039, align 8, !tbaa !476 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %39, %struct.ObjHeader* %2040) #0 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !494, metadata !412), !dbg !498 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !499, metadata !500), !dbg !498 | |
br i1 %152, label %2041, label %2043, !dbg !501 | |
; <label>:2041: ; preds = %2036 | |
%2042 = icmp eq %struct.ObjHeader* %2040, null, !dbg !501 | |
br i1 %2042, label %2411, label %2055 | |
; <label>:2043: ; preds = %2036 | |
%2044 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %0, i64 0, i32 0, !dbg !501 | |
%2045 = load %struct.TypeInfo*, %struct.TypeInfo** %2044, align 8, !dbg !501 | |
%2046 = getelementptr inbounds %struct.TypeInfo, %struct.TypeInfo* %2045, i64 0, i32 0, !dbg !501 | |
%2047 = load %struct.TypeInfo*, %struct.TypeInfo** %2046, align 8, !dbg !501 | |
%2048 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %2047, i64 1, i32 1, i32 0, i64 8, !dbg !501 | |
%2049 = bitcast i8* %2048 to i1 (%struct.ObjHeader*, %struct.ObjHeader*)**, !dbg !501 | |
%2050 = load i1 (%struct.ObjHeader*, %struct.ObjHeader*)*, i1 (%struct.ObjHeader*, %struct.ObjHeader*)** %2049, align 8, !dbg !501 | |
%2051 = invoke i1 %2050(%struct.ObjHeader* nonnull %0, %struct.ObjHeader* %2040) | |
to label %2054 unwind label %2052, !dbg !501 | |
; <label>:2052: ; preds = %2043 | |
%2053 = landingpad { i8*, i32 } | |
cleanup, !dbg !502 | |
br label %2461, !dbg !502 | |
; <label>:2054: ; preds = %2043 | |
br i1 %2051, label %2411, label %2055 | |
; <label>:2055: ; preds = %2054, %2041 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %47) | |
call void @llvm.memset.p0i8.i32(i8* %47, i8 0, i32 16, i32 8, i1 false) | |
%2056 = load %struct.ObjHeader*, %struct.ObjHeader** @"kobjref:MyEnum.$OBJECT", align 8 | |
%2057 = icmp ugt %struct.ObjHeader* %2056, inttoptr (i64 1 to %struct.ObjHeader*) | |
br i1 %2057, label %2102, label %2058 | |
; <label>:2058: ; preds = %2055 | |
%2059 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%2060 = invoke fastcc %struct.ObjHeader* @InitSharedInstance(%struct.ObjHeader** nonnull @"kobjref:MyEnum.$OBJECT", %struct.ObjHeader** nonnull @"kshadowobjref:MyEnum.$OBJECT", %struct.TypeInfo* getelementptr inbounds ({ %struct.TypeInfo, [3 x i8*] }, { %struct.TypeInfo, [3 x i8*] }* @"ktypeglobal:MyEnum.$OBJECT#internal", i64 0, i32 0), void (%struct.ObjHeader*)* nonnull @"kfun:MyEnum.$OBJECT.<init>()kotlin.Any", %struct.ObjHeader** %2059) | |
to label %2102 unwind label %2061 | |
; <label>:2061: ; preds = %2058 | |
%2062 = landingpad { i8*, i32 } | |
cleanup | |
%2063 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%2064 = load %struct.ObjHeader*, %struct.ObjHeader** %2063, align 8, !tbaa !476 | |
%2065 = icmp eq %struct.ObjHeader* %2064, null | |
br i1 %2065, label %2075, label %2066 | |
; <label>:2066: ; preds = %2061 | |
%2067 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %2064, i64 0, i32 0 | |
%2068 = load %struct.TypeInfo*, %struct.TypeInfo** %2067, align 8, !tbaa !477 | |
%2069 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %2064, i64 0, i32 1 | |
%2070 = load %struct.ContainerHeader*, %struct.ContainerHeader** %2069, align 8, !tbaa !479 | |
%2071 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %2068, i64 0, i32 0 | |
%2072 = load %struct.TypeInfo*, %struct.TypeInfo** %2071, align 8, !tbaa !480 | |
%2073 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %2072, i64 0, i32 5 | |
%2074 = load i32, i32* %2073, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %2074, %struct.ContainerHeader* %2070) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %2063, align 8, !tbaa !476 | |
br label %2075 | |
; <label>:2075: ; preds = %2066, %2061 | |
%2076 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%2077 = icmp eq %struct.ObjHeader* %2076, null | |
br i1 %2077, label %2461, label %2078 | |
; <label>:2078: ; preds = %2075 | |
%2079 = bitcast %struct.ObjHeader* %2076 to %struct.ContainerChunk** | |
%2080 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2079, align 8, !tbaa !476 | |
%2081 = icmp eq %struct.ContainerChunk* %2080, null | |
br i1 %2081, label %2100, label %2082 | |
; <label>:2082: ; preds = %2078 | |
br label %2083 | |
; <label>:2083: ; preds = %2083, %2082 | |
%2084 = phi %struct.ContainerChunk* [ %2088, %2083 ], [ %2080, %2082 ] | |
%2085 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2084, i64 1 | |
%2086 = bitcast %struct.ContainerChunk* %2085 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %2086) #0 | |
%2087 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2084, i64 0, i32 0 | |
%2088 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2087, align 8, !tbaa !476 | |
%2089 = icmp eq %struct.ContainerChunk* %2088, null | |
br i1 %2089, label %2090, label %2083 | |
; <label>:2090: ; preds = %2083 | |
%2091 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2079, align 8, !tbaa !482 | |
%2092 = icmp eq %struct.ContainerChunk* %2091, null | |
br i1 %2092, label %2100, label %2093 | |
; <label>:2093: ; preds = %2090 | |
br label %2094 | |
; <label>:2094: ; preds = %2094, %2093 | |
%2095 = phi %struct.ContainerChunk* [ %2098, %2094 ], [ %2091, %2093 ] | |
%2096 = bitcast %struct.ContainerChunk* %2095 to i8* | |
%2097 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2095, i64 0, i32 0 | |
%2098 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2097, align 8, !tbaa !484 | |
call void @free(i8* %2096) #0 | |
%2099 = icmp eq %struct.ContainerChunk* %2098, null | |
br i1 %2099, label %2100, label %2094 | |
; <label>:2100: ; preds = %2094, %2090, %2078 | |
%2101 = bitcast %struct.ObjHeader* %2076 to i8* | |
call void @free(i8* %2101) #0 | |
br label %2461 | |
; <label>:2102: ; preds = %2058, %2055 | |
%2103 = phi %struct.ObjHeader* [ %2056, %2055 ], [ %2060, %2058 ] | |
%2104 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %2103, i64 1 | |
%2105 = bitcast %struct.ObjHeader* %2104 to %struct.ObjHeader** | |
%2106 = load %struct.ObjHeader*, %struct.ObjHeader** %2105, align 8 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %40, %struct.ObjHeader* %2106) | |
%2107 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%2108 = load %struct.ObjHeader*, %struct.ObjHeader** %2107, align 8, !tbaa !476 | |
%2109 = icmp eq %struct.ObjHeader* %2108, null | |
br i1 %2109, label %2119, label %2110 | |
; <label>:2110: ; preds = %2102 | |
%2111 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %2108, i64 0, i32 0 | |
%2112 = load %struct.TypeInfo*, %struct.TypeInfo** %2111, align 8, !tbaa !477 | |
%2113 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %2108, i64 0, i32 1 | |
%2114 = load %struct.ContainerHeader*, %struct.ContainerHeader** %2113, align 8, !tbaa !479 | |
%2115 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %2112, i64 0, i32 0 | |
%2116 = load %struct.TypeInfo*, %struct.TypeInfo** %2115, align 8, !tbaa !480 | |
%2117 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %2116, i64 0, i32 5 | |
%2118 = load i32, i32* %2117, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %2118, %struct.ContainerHeader* %2114) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %2107, align 8, !tbaa !476 | |
br label %2119 | |
; <label>:2119: ; preds = %2110, %2102 | |
%2120 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%2121 = icmp eq %struct.ObjHeader* %2120, null | |
br i1 %2121, label %2146, label %2122 | |
; <label>:2122: ; preds = %2119 | |
%2123 = bitcast %struct.ObjHeader* %2120 to %struct.ContainerChunk** | |
%2124 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2123, align 8, !tbaa !476 | |
%2125 = icmp eq %struct.ContainerChunk* %2124, null | |
br i1 %2125, label %2144, label %2126 | |
; <label>:2126: ; preds = %2122 | |
br label %2127 | |
; <label>:2127: ; preds = %2127, %2126 | |
%2128 = phi %struct.ContainerChunk* [ %2132, %2127 ], [ %2124, %2126 ] | |
%2129 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2128, i64 1 | |
%2130 = bitcast %struct.ContainerChunk* %2129 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %2130) #0 | |
%2131 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2128, i64 0, i32 0 | |
%2132 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2131, align 8, !tbaa !476 | |
%2133 = icmp eq %struct.ContainerChunk* %2132, null | |
br i1 %2133, label %2134, label %2127 | |
; <label>:2134: ; preds = %2127 | |
%2135 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2123, align 8, !tbaa !482 | |
%2136 = icmp eq %struct.ContainerChunk* %2135, null | |
br i1 %2136, label %2144, label %2137 | |
; <label>:2137: ; preds = %2134 | |
br label %2138 | |
; <label>:2138: ; preds = %2138, %2137 | |
%2139 = phi %struct.ContainerChunk* [ %2142, %2138 ], [ %2135, %2137 ] | |
%2140 = bitcast %struct.ContainerChunk* %2139 to i8* | |
%2141 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2139, i64 0, i32 0 | |
%2142 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2141, align 8, !tbaa !484 | |
call void @free(i8* %2140) #0 | |
%2143 = icmp eq %struct.ContainerChunk* %2142, null | |
br i1 %2143, label %2144, label %2138 | |
; <label>:2144: ; preds = %2138, %2134, %2122 | |
%2145 = bitcast %struct.ObjHeader* %2120 to i8* | |
call void @free(i8* %2145) #0 | |
br label %2146 | |
; <label>:2146: ; preds = %2144, %2119 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47) | |
%2147 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %2106, i64 1 | |
%2148 = bitcast %struct.ObjHeader* %2147 to i32* | |
%2149 = load i32, i32* %2148, align 8, !tbaa !492 | |
%2150 = icmp ugt i32 %2149, 90 | |
br i1 %2150, label %2154, label %2151 | |
; <label>:2151: ; preds = %2146 | |
%2152 = invoke fastcc %struct.ObjHeader* @ThrowArrayIndexOutOfBoundsException() #27 | |
to label %2153 unwind label %2459 | |
; <label>:2153: ; preds = %2151 | |
unreachable | |
; <label>:2154: ; preds = %2146 | |
%2155 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %2106, i64 1, i32 1 | |
%2156 = getelementptr inbounds %struct.ContainerHeader*, %struct.ContainerHeader** %2155, i64 90 | |
%2157 = bitcast %struct.ContainerHeader** %2156 to %struct.ObjHeader** | |
%2158 = load %struct.ObjHeader*, %struct.ObjHeader** %2157, align 8, !tbaa !476 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %41, %struct.ObjHeader* %2158) #0 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !494, metadata !412), !dbg !498 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !499, metadata !500), !dbg !498 | |
br i1 %152, label %2159, label %2161, !dbg !501 | |
; <label>:2159: ; preds = %2154 | |
%2160 = icmp eq %struct.ObjHeader* %2158, null, !dbg !501 | |
br i1 %2160, label %2411, label %2173 | |
; <label>:2161: ; preds = %2154 | |
%2162 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %0, i64 0, i32 0, !dbg !501 | |
%2163 = load %struct.TypeInfo*, %struct.TypeInfo** %2162, align 8, !dbg !501 | |
%2164 = getelementptr inbounds %struct.TypeInfo, %struct.TypeInfo* %2163, i64 0, i32 0, !dbg !501 | |
%2165 = load %struct.TypeInfo*, %struct.TypeInfo** %2164, align 8, !dbg !501 | |
%2166 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %2165, i64 1, i32 1, i32 0, i64 8, !dbg !501 | |
%2167 = bitcast i8* %2166 to i1 (%struct.ObjHeader*, %struct.ObjHeader*)**, !dbg !501 | |
%2168 = load i1 (%struct.ObjHeader*, %struct.ObjHeader*)*, i1 (%struct.ObjHeader*, %struct.ObjHeader*)** %2167, align 8, !dbg !501 | |
%2169 = invoke i1 %2168(%struct.ObjHeader* nonnull %0, %struct.ObjHeader* %2158) | |
to label %2172 unwind label %2170, !dbg !501 | |
; <label>:2170: ; preds = %2161 | |
%2171 = landingpad { i8*, i32 } | |
cleanup, !dbg !502 | |
br label %2461, !dbg !502 | |
; <label>:2172: ; preds = %2161 | |
br i1 %2169, label %2411, label %2173 | |
; <label>:2173: ; preds = %2172, %2159 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %47) | |
call void @llvm.memset.p0i8.i32(i8* %47, i8 0, i32 16, i32 8, i1 false) | |
%2174 = load %struct.ObjHeader*, %struct.ObjHeader** @"kobjref:MyEnum.$OBJECT", align 8 | |
%2175 = icmp ugt %struct.ObjHeader* %2174, inttoptr (i64 1 to %struct.ObjHeader*) | |
br i1 %2175, label %2220, label %2176 | |
; <label>:2176: ; preds = %2173 | |
%2177 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%2178 = invoke fastcc %struct.ObjHeader* @InitSharedInstance(%struct.ObjHeader** nonnull @"kobjref:MyEnum.$OBJECT", %struct.ObjHeader** nonnull @"kshadowobjref:MyEnum.$OBJECT", %struct.TypeInfo* getelementptr inbounds ({ %struct.TypeInfo, [3 x i8*] }, { %struct.TypeInfo, [3 x i8*] }* @"ktypeglobal:MyEnum.$OBJECT#internal", i64 0, i32 0), void (%struct.ObjHeader*)* nonnull @"kfun:MyEnum.$OBJECT.<init>()kotlin.Any", %struct.ObjHeader** %2177) | |
to label %2220 unwind label %2179 | |
; <label>:2179: ; preds = %2176 | |
%2180 = landingpad { i8*, i32 } | |
cleanup | |
%2181 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%2182 = load %struct.ObjHeader*, %struct.ObjHeader** %2181, align 8, !tbaa !476 | |
%2183 = icmp eq %struct.ObjHeader* %2182, null | |
br i1 %2183, label %2193, label %2184 | |
; <label>:2184: ; preds = %2179 | |
%2185 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %2182, i64 0, i32 0 | |
%2186 = load %struct.TypeInfo*, %struct.TypeInfo** %2185, align 8, !tbaa !477 | |
%2187 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %2182, i64 0, i32 1 | |
%2188 = load %struct.ContainerHeader*, %struct.ContainerHeader** %2187, align 8, !tbaa !479 | |
%2189 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %2186, i64 0, i32 0 | |
%2190 = load %struct.TypeInfo*, %struct.TypeInfo** %2189, align 8, !tbaa !480 | |
%2191 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %2190, i64 0, i32 5 | |
%2192 = load i32, i32* %2191, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %2192, %struct.ContainerHeader* %2188) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %2181, align 8, !tbaa !476 | |
br label %2193 | |
; <label>:2193: ; preds = %2184, %2179 | |
%2194 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%2195 = icmp eq %struct.ObjHeader* %2194, null | |
br i1 %2195, label %2461, label %2196 | |
; <label>:2196: ; preds = %2193 | |
%2197 = bitcast %struct.ObjHeader* %2194 to %struct.ContainerChunk** | |
%2198 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2197, align 8, !tbaa !476 | |
%2199 = icmp eq %struct.ContainerChunk* %2198, null | |
br i1 %2199, label %2218, label %2200 | |
; <label>:2200: ; preds = %2196 | |
br label %2201 | |
; <label>:2201: ; preds = %2201, %2200 | |
%2202 = phi %struct.ContainerChunk* [ %2206, %2201 ], [ %2198, %2200 ] | |
%2203 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2202, i64 1 | |
%2204 = bitcast %struct.ContainerChunk* %2203 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %2204) #0 | |
%2205 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2202, i64 0, i32 0 | |
%2206 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2205, align 8, !tbaa !476 | |
%2207 = icmp eq %struct.ContainerChunk* %2206, null | |
br i1 %2207, label %2208, label %2201 | |
; <label>:2208: ; preds = %2201 | |
%2209 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2197, align 8, !tbaa !482 | |
%2210 = icmp eq %struct.ContainerChunk* %2209, null | |
br i1 %2210, label %2218, label %2211 | |
; <label>:2211: ; preds = %2208 | |
br label %2212 | |
; <label>:2212: ; preds = %2212, %2211 | |
%2213 = phi %struct.ContainerChunk* [ %2216, %2212 ], [ %2209, %2211 ] | |
%2214 = bitcast %struct.ContainerChunk* %2213 to i8* | |
%2215 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2213, i64 0, i32 0 | |
%2216 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2215, align 8, !tbaa !484 | |
call void @free(i8* %2214) #0 | |
%2217 = icmp eq %struct.ContainerChunk* %2216, null | |
br i1 %2217, label %2218, label %2212 | |
; <label>:2218: ; preds = %2212, %2208, %2196 | |
%2219 = bitcast %struct.ObjHeader* %2194 to i8* | |
call void @free(i8* %2219) #0 | |
br label %2461 | |
; <label>:2220: ; preds = %2176, %2173 | |
%2221 = phi %struct.ObjHeader* [ %2174, %2173 ], [ %2178, %2176 ] | |
%2222 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %2221, i64 1 | |
%2223 = bitcast %struct.ObjHeader* %2222 to %struct.ObjHeader** | |
%2224 = load %struct.ObjHeader*, %struct.ObjHeader** %2223, align 8 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %42, %struct.ObjHeader* %2224) | |
%2225 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%2226 = load %struct.ObjHeader*, %struct.ObjHeader** %2225, align 8, !tbaa !476 | |
%2227 = icmp eq %struct.ObjHeader* %2226, null | |
br i1 %2227, label %2237, label %2228 | |
; <label>:2228: ; preds = %2220 | |
%2229 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %2226, i64 0, i32 0 | |
%2230 = load %struct.TypeInfo*, %struct.TypeInfo** %2229, align 8, !tbaa !477 | |
%2231 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %2226, i64 0, i32 1 | |
%2232 = load %struct.ContainerHeader*, %struct.ContainerHeader** %2231, align 8, !tbaa !479 | |
%2233 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %2230, i64 0, i32 0 | |
%2234 = load %struct.TypeInfo*, %struct.TypeInfo** %2233, align 8, !tbaa !480 | |
%2235 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %2234, i64 0, i32 5 | |
%2236 = load i32, i32* %2235, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %2236, %struct.ContainerHeader* %2232) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %2225, align 8, !tbaa !476 | |
br label %2237 | |
; <label>:2237: ; preds = %2228, %2220 | |
%2238 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%2239 = icmp eq %struct.ObjHeader* %2238, null | |
br i1 %2239, label %2264, label %2240 | |
; <label>:2240: ; preds = %2237 | |
%2241 = bitcast %struct.ObjHeader* %2238 to %struct.ContainerChunk** | |
%2242 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2241, align 8, !tbaa !476 | |
%2243 = icmp eq %struct.ContainerChunk* %2242, null | |
br i1 %2243, label %2262, label %2244 | |
; <label>:2244: ; preds = %2240 | |
br label %2245 | |
; <label>:2245: ; preds = %2245, %2244 | |
%2246 = phi %struct.ContainerChunk* [ %2250, %2245 ], [ %2242, %2244 ] | |
%2247 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2246, i64 1 | |
%2248 = bitcast %struct.ContainerChunk* %2247 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %2248) #0 | |
%2249 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2246, i64 0, i32 0 | |
%2250 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2249, align 8, !tbaa !476 | |
%2251 = icmp eq %struct.ContainerChunk* %2250, null | |
br i1 %2251, label %2252, label %2245 | |
; <label>:2252: ; preds = %2245 | |
%2253 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2241, align 8, !tbaa !482 | |
%2254 = icmp eq %struct.ContainerChunk* %2253, null | |
br i1 %2254, label %2262, label %2255 | |
; <label>:2255: ; preds = %2252 | |
br label %2256 | |
; <label>:2256: ; preds = %2256, %2255 | |
%2257 = phi %struct.ContainerChunk* [ %2260, %2256 ], [ %2253, %2255 ] | |
%2258 = bitcast %struct.ContainerChunk* %2257 to i8* | |
%2259 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2257, i64 0, i32 0 | |
%2260 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2259, align 8, !tbaa !484 | |
call void @free(i8* %2258) #0 | |
%2261 = icmp eq %struct.ContainerChunk* %2260, null | |
br i1 %2261, label %2262, label %2256 | |
; <label>:2262: ; preds = %2256, %2252, %2240 | |
%2263 = bitcast %struct.ObjHeader* %2238 to i8* | |
call void @free(i8* %2263) #0 | |
br label %2264 | |
; <label>:2264: ; preds = %2262, %2237 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47) | |
%2265 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %2224, i64 1 | |
%2266 = bitcast %struct.ObjHeader* %2265 to i32* | |
%2267 = load i32, i32* %2266, align 8, !tbaa !492 | |
%2268 = icmp ugt i32 %2267, 95 | |
br i1 %2268, label %2272, label %2269 | |
; <label>:2269: ; preds = %2264 | |
%2270 = invoke fastcc %struct.ObjHeader* @ThrowArrayIndexOutOfBoundsException() #27 | |
to label %2271 unwind label %2459 | |
; <label>:2271: ; preds = %2269 | |
unreachable | |
; <label>:2272: ; preds = %2264 | |
%2273 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %2224, i64 1, i32 1 | |
%2274 = getelementptr inbounds %struct.ContainerHeader*, %struct.ContainerHeader** %2273, i64 95 | |
%2275 = bitcast %struct.ContainerHeader** %2274 to %struct.ObjHeader** | |
%2276 = load %struct.ObjHeader*, %struct.ObjHeader** %2275, align 8, !tbaa !476 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %43, %struct.ObjHeader* %2276) #0 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !494, metadata !412), !dbg !498 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !499, metadata !500), !dbg !498 | |
br i1 %152, label %2277, label %2279, !dbg !501 | |
; <label>:2277: ; preds = %2272 | |
%2278 = icmp eq %struct.ObjHeader* %2276, null, !dbg !501 | |
br i1 %2278, label %2411, label %2291 | |
; <label>:2279: ; preds = %2272 | |
%2280 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %0, i64 0, i32 0, !dbg !501 | |
%2281 = load %struct.TypeInfo*, %struct.TypeInfo** %2280, align 8, !dbg !501 | |
%2282 = getelementptr inbounds %struct.TypeInfo, %struct.TypeInfo* %2281, i64 0, i32 0, !dbg !501 | |
%2283 = load %struct.TypeInfo*, %struct.TypeInfo** %2282, align 8, !dbg !501 | |
%2284 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %2283, i64 1, i32 1, i32 0, i64 8, !dbg !501 | |
%2285 = bitcast i8* %2284 to i1 (%struct.ObjHeader*, %struct.ObjHeader*)**, !dbg !501 | |
%2286 = load i1 (%struct.ObjHeader*, %struct.ObjHeader*)*, i1 (%struct.ObjHeader*, %struct.ObjHeader*)** %2285, align 8, !dbg !501 | |
%2287 = invoke i1 %2286(%struct.ObjHeader* nonnull %0, %struct.ObjHeader* %2276) | |
to label %2290 unwind label %2288, !dbg !501 | |
; <label>:2288: ; preds = %2279 | |
%2289 = landingpad { i8*, i32 } | |
cleanup, !dbg !502 | |
br label %2461, !dbg !502 | |
; <label>:2290: ; preds = %2279 | |
br i1 %2287, label %2411, label %2291 | |
; <label>:2291: ; preds = %2290, %2277 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %47) | |
call void @llvm.memset.p0i8.i32(i8* %47, i8 0, i32 16, i32 8, i1 false) | |
%2292 = load %struct.ObjHeader*, %struct.ObjHeader** @"kobjref:MyEnum.$OBJECT", align 8 | |
%2293 = icmp ugt %struct.ObjHeader* %2292, inttoptr (i64 1 to %struct.ObjHeader*) | |
br i1 %2293, label %2338, label %2294 | |
; <label>:2294: ; preds = %2291 | |
%2295 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%2296 = invoke fastcc %struct.ObjHeader* @InitSharedInstance(%struct.ObjHeader** nonnull @"kobjref:MyEnum.$OBJECT", %struct.ObjHeader** nonnull @"kshadowobjref:MyEnum.$OBJECT", %struct.TypeInfo* getelementptr inbounds ({ %struct.TypeInfo, [3 x i8*] }, { %struct.TypeInfo, [3 x i8*] }* @"ktypeglobal:MyEnum.$OBJECT#internal", i64 0, i32 0), void (%struct.ObjHeader*)* nonnull @"kfun:MyEnum.$OBJECT.<init>()kotlin.Any", %struct.ObjHeader** %2295) | |
to label %2338 unwind label %2297 | |
; <label>:2297: ; preds = %2294 | |
%2298 = landingpad { i8*, i32 } | |
cleanup | |
%2299 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%2300 = load %struct.ObjHeader*, %struct.ObjHeader** %2299, align 8, !tbaa !476 | |
%2301 = icmp eq %struct.ObjHeader* %2300, null | |
br i1 %2301, label %2311, label %2302 | |
; <label>:2302: ; preds = %2297 | |
%2303 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %2300, i64 0, i32 0 | |
%2304 = load %struct.TypeInfo*, %struct.TypeInfo** %2303, align 8, !tbaa !477 | |
%2305 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %2300, i64 0, i32 1 | |
%2306 = load %struct.ContainerHeader*, %struct.ContainerHeader** %2305, align 8, !tbaa !479 | |
%2307 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %2304, i64 0, i32 0 | |
%2308 = load %struct.TypeInfo*, %struct.TypeInfo** %2307, align 8, !tbaa !480 | |
%2309 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %2308, i64 0, i32 5 | |
%2310 = load i32, i32* %2309, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %2310, %struct.ContainerHeader* %2306) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %2299, align 8, !tbaa !476 | |
br label %2311 | |
; <label>:2311: ; preds = %2302, %2297 | |
%2312 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%2313 = icmp eq %struct.ObjHeader* %2312, null | |
br i1 %2313, label %2461, label %2314 | |
; <label>:2314: ; preds = %2311 | |
%2315 = bitcast %struct.ObjHeader* %2312 to %struct.ContainerChunk** | |
%2316 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2315, align 8, !tbaa !476 | |
%2317 = icmp eq %struct.ContainerChunk* %2316, null | |
br i1 %2317, label %2336, label %2318 | |
; <label>:2318: ; preds = %2314 | |
br label %2319 | |
; <label>:2319: ; preds = %2319, %2318 | |
%2320 = phi %struct.ContainerChunk* [ %2324, %2319 ], [ %2316, %2318 ] | |
%2321 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2320, i64 1 | |
%2322 = bitcast %struct.ContainerChunk* %2321 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %2322) #0 | |
%2323 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2320, i64 0, i32 0 | |
%2324 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2323, align 8, !tbaa !476 | |
%2325 = icmp eq %struct.ContainerChunk* %2324, null | |
br i1 %2325, label %2326, label %2319 | |
; <label>:2326: ; preds = %2319 | |
%2327 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2315, align 8, !tbaa !482 | |
%2328 = icmp eq %struct.ContainerChunk* %2327, null | |
br i1 %2328, label %2336, label %2329 | |
; <label>:2329: ; preds = %2326 | |
br label %2330 | |
; <label>:2330: ; preds = %2330, %2329 | |
%2331 = phi %struct.ContainerChunk* [ %2334, %2330 ], [ %2327, %2329 ] | |
%2332 = bitcast %struct.ContainerChunk* %2331 to i8* | |
%2333 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2331, i64 0, i32 0 | |
%2334 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2333, align 8, !tbaa !484 | |
call void @free(i8* %2332) #0 | |
%2335 = icmp eq %struct.ContainerChunk* %2334, null | |
br i1 %2335, label %2336, label %2330 | |
; <label>:2336: ; preds = %2330, %2326, %2314 | |
%2337 = bitcast %struct.ObjHeader* %2312 to i8* | |
call void @free(i8* %2337) #0 | |
br label %2461 | |
; <label>:2338: ; preds = %2294, %2291 | |
%2339 = phi %struct.ObjHeader* [ %2292, %2291 ], [ %2296, %2294 ] | |
%2340 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %2339, i64 1 | |
%2341 = bitcast %struct.ObjHeader* %2340 to %struct.ObjHeader** | |
%2342 = load %struct.ObjHeader*, %struct.ObjHeader** %2341, align 8 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %44, %struct.ObjHeader* %2342) | |
%2343 = getelementptr inbounds [2 x %struct.ObjHeader*], [2 x %struct.ObjHeader*]* %2, i64 0, i64 1 | |
%2344 = load %struct.ObjHeader*, %struct.ObjHeader** %2343, align 8, !tbaa !476 | |
%2345 = icmp eq %struct.ObjHeader* %2344, null | |
br i1 %2345, label %2355, label %2346 | |
; <label>:2346: ; preds = %2338 | |
%2347 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %2344, i64 0, i32 0 | |
%2348 = load %struct.TypeInfo*, %struct.TypeInfo** %2347, align 8, !tbaa !477 | |
%2349 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %2344, i64 0, i32 1 | |
%2350 = load %struct.ContainerHeader*, %struct.ContainerHeader** %2349, align 8, !tbaa !479 | |
%2351 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %2348, i64 0, i32 0 | |
%2352 = load %struct.TypeInfo*, %struct.TypeInfo** %2351, align 8, !tbaa !480 | |
%2353 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %2352, i64 0, i32 5 | |
%2354 = load i32, i32* %2353, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %2354, %struct.ContainerHeader* %2350) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %2343, align 8, !tbaa !476 | |
br label %2355 | |
; <label>:2355: ; preds = %2346, %2338 | |
%2356 = load %struct.ObjHeader*, %struct.ObjHeader** %48, align 8, !tbaa !476 | |
%2357 = icmp eq %struct.ObjHeader* %2356, null | |
br i1 %2357, label %2382, label %2358 | |
; <label>:2358: ; preds = %2355 | |
%2359 = bitcast %struct.ObjHeader* %2356 to %struct.ContainerChunk** | |
%2360 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2359, align 8, !tbaa !476 | |
%2361 = icmp eq %struct.ContainerChunk* %2360, null | |
br i1 %2361, label %2380, label %2362 | |
; <label>:2362: ; preds = %2358 | |
br label %2363 | |
; <label>:2363: ; preds = %2363, %2362 | |
%2364 = phi %struct.ContainerChunk* [ %2368, %2363 ], [ %2360, %2362 ] | |
%2365 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2364, i64 1 | |
%2366 = bitcast %struct.ContainerChunk* %2365 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %2366) #0 | |
%2367 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2364, i64 0, i32 0 | |
%2368 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2367, align 8, !tbaa !476 | |
%2369 = icmp eq %struct.ContainerChunk* %2368, null | |
br i1 %2369, label %2370, label %2363 | |
; <label>:2370: ; preds = %2363 | |
%2371 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2359, align 8, !tbaa !482 | |
%2372 = icmp eq %struct.ContainerChunk* %2371, null | |
br i1 %2372, label %2380, label %2373 | |
; <label>:2373: ; preds = %2370 | |
br label %2374 | |
; <label>:2374: ; preds = %2374, %2373 | |
%2375 = phi %struct.ContainerChunk* [ %2378, %2374 ], [ %2371, %2373 ] | |
%2376 = bitcast %struct.ContainerChunk* %2375 to i8* | |
%2377 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2375, i64 0, i32 0 | |
%2378 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2377, align 8, !tbaa !484 | |
call void @free(i8* %2376) #0 | |
%2379 = icmp eq %struct.ContainerChunk* %2378, null | |
br i1 %2379, label %2380, label %2374 | |
; <label>:2380: ; preds = %2374, %2370, %2358 | |
%2381 = bitcast %struct.ObjHeader* %2356 to i8* | |
call void @free(i8* %2381) #0 | |
br label %2382 | |
; <label>:2382: ; preds = %2380, %2355 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47) | |
%2383 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %2342, i64 1 | |
%2384 = bitcast %struct.ObjHeader* %2383 to i32* | |
%2385 = load i32, i32* %2384, align 8, !tbaa !492 | |
%2386 = icmp ugt i32 %2385, 2 | |
br i1 %2386, label %2390, label %2387 | |
; <label>:2387: ; preds = %2382 | |
%2388 = invoke fastcc %struct.ObjHeader* @ThrowArrayIndexOutOfBoundsException() #27 | |
to label %2389 unwind label %2459 | |
; <label>:2389: ; preds = %2387 | |
unreachable | |
; <label>:2390: ; preds = %2382 | |
%2391 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %2342, i64 1, i32 1 | |
%2392 = getelementptr inbounds %struct.ContainerHeader*, %struct.ContainerHeader** %2391, i64 2 | |
%2393 = bitcast %struct.ContainerHeader** %2392 to %struct.ObjHeader** | |
%2394 = load %struct.ObjHeader*, %struct.ObjHeader** %2393, align 8, !tbaa !476 | |
call fastcc void @UpdateReturnRef(%struct.ObjHeader** %45, %struct.ObjHeader* %2394) #0 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !494, metadata !412), !dbg !498 | |
call void @llvm.dbg.declare(metadata %struct.ObjHeader** undef, metadata !499, metadata !500), !dbg !498 | |
br i1 %152, label %2395, label %2397, !dbg !501 | |
; <label>:2395: ; preds = %2390 | |
%2396 = icmp eq %struct.ObjHeader* %2394, null, !dbg !501 | |
br label %2408, !dbg !501 | |
; <label>:2397: ; preds = %2390 | |
%2398 = getelementptr inbounds %struct.ObjHeader, %struct.ObjHeader* %0, i64 0, i32 0, !dbg !501 | |
%2399 = load %struct.TypeInfo*, %struct.TypeInfo** %2398, align 8, !dbg !501 | |
%2400 = getelementptr inbounds %struct.TypeInfo, %struct.TypeInfo* %2399, i64 0, i32 0, !dbg !501 | |
%2401 = load %struct.TypeInfo*, %struct.TypeInfo** %2400, align 8, !dbg !501 | |
%2402 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %2401, i64 1, i32 1, i32 0, i64 8, !dbg !501 | |
%2403 = bitcast i8* %2402 to i1 (%struct.ObjHeader*, %struct.ObjHeader*)**, !dbg !501 | |
%2404 = load i1 (%struct.ObjHeader*, %struct.ObjHeader*)*, i1 (%struct.ObjHeader*, %struct.ObjHeader*)** %2403, align 8, !dbg !501 | |
%2405 = invoke i1 %2404(%struct.ObjHeader* nonnull %0, %struct.ObjHeader* %2394) | |
to label %2408 unwind label %2406, !dbg !501 | |
; <label>:2406: ; preds = %2397 | |
%2407 = landingpad { i8*, i32 } | |
cleanup, !dbg !502 | |
br label %2461, !dbg !502 | |
; <label>:2408: ; preds = %2397, %2395 | |
%2409 = phi i1 [ %2396, %2395 ], [ %2405, %2397 ], !dbg !501 | |
%2410 = select i1 %2409, i32 20, i32 -1 | |
br label %2411 | |
; <label>:2411: ; preds = %2408, %2290, %2277, %2172, %2159, %2054, %2041, %1936, %1923, %1818, %1805, %1700, %1687, %1582, %1569, %1464, %1451, %1346, %1333, %1228, %1215, %1110, %1097, %992, %979, %874, %861, %756, %743, %638, %625, %520, %507, %402, %389, %284, %271, %166, %153 | |
%2412 = phi i32 [ 1, %166 ], [ 2, %284 ], [ 3, %402 ], [ 4, %520 ], [ 5, %638 ], [ 6, %756 ], [ 7, %874 ], [ 8, %992 ], [ 9, %1110 ], [ 10, %1228 ], [ 11, %1346 ], [ 12, %1464 ], [ 13, %1582 ], [ 14, %1700 ], [ 15, %1818 ], [ 16, %1936 ], [ 17, %2054 ], [ 18, %2172 ], [ 19, %2290 ], [ %2410, %2408 ], [ 1, %153 ], [ 2, %271 ], [ 3, %389 ], [ 4, %507 ], [ 5, %625 ], [ 6, %743 ], [ 7, %861 ], [ 8, %979 ], [ 9, %1097 ], [ 10, %1215 ], [ 11, %1333 ], [ 12, %1451 ], [ 13, %1569 ], [ 14, %1687 ], [ 15, %1805 ], [ 16, %1923 ], [ 17, %2041 ], [ 18, %2159 ], [ 19, %2277 ] | |
br label %2413 | |
; <label>:2413: ; preds = %2429, %2411 | |
%2414 = phi i32 [ 40, %2411 ], [ %2417, %2429 ] | |
%2415 = phi %struct.ObjHeader** [ %6, %2411 ], [ %2416, %2429 ] | |
%2416 = getelementptr inbounds %struct.ObjHeader*, %struct.ObjHeader** %2415, i64 1 | |
%2417 = add nsw i32 %2414, -1 | |
%2418 = load %struct.ObjHeader*, %struct.ObjHeader** %2416, align 8, !tbaa !476 | |
%2419 = icmp eq %struct.ObjHeader* %2418, null | |
br i1 %2419, label %2429, label %2420 | |
; <label>:2420: ; preds = %2413 | |
%2421 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %2418, i64 0, i32 0 | |
%2422 = load %struct.TypeInfo*, %struct.TypeInfo** %2421, align 8, !tbaa !477 | |
%2423 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %2418, i64 0, i32 1 | |
%2424 = load %struct.ContainerHeader*, %struct.ContainerHeader** %2423, align 8, !tbaa !479 | |
%2425 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %2422, i64 0, i32 0 | |
%2426 = load %struct.TypeInfo*, %struct.TypeInfo** %2425, align 8, !tbaa !480 | |
%2427 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %2426, i64 0, i32 5 | |
%2428 = load i32, i32* %2427, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %2428, %struct.ContainerHeader* %2424) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %2416, align 8, !tbaa !476 | |
br label %2429 | |
; <label>:2429: ; preds = %2420, %2413 | |
%2430 = icmp ugt i32 %2414, 1 | |
br i1 %2430, label %2413, label %2431 | |
; <label>:2431: ; preds = %2429 | |
%2432 = load %struct.ObjHeader*, %struct.ObjHeader** %4, align 8, !tbaa !476 | |
%2433 = icmp eq %struct.ObjHeader* %2432, null | |
br i1 %2433, label %2458, label %2434 | |
; <label>:2434: ; preds = %2431 | |
%2435 = bitcast %struct.ObjHeader* %2432 to %struct.ContainerChunk** | |
%2436 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2435, align 8, !tbaa !476 | |
%2437 = icmp eq %struct.ContainerChunk* %2436, null | |
br i1 %2437, label %2456, label %2438 | |
; <label>:2438: ; preds = %2434 | |
br label %2439 | |
; <label>:2439: ; preds = %2439, %2438 | |
%2440 = phi %struct.ContainerChunk* [ %2444, %2439 ], [ %2436, %2438 ] | |
%2441 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2440, i64 1 | |
%2442 = bitcast %struct.ContainerChunk* %2441 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %2442) #0 | |
%2443 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2440, i64 0, i32 0 | |
%2444 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2443, align 8, !tbaa !476 | |
%2445 = icmp eq %struct.ContainerChunk* %2444, null | |
br i1 %2445, label %2446, label %2439 | |
; <label>:2446: ; preds = %2439 | |
%2447 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2435, align 8, !tbaa !482 | |
%2448 = icmp eq %struct.ContainerChunk* %2447, null | |
br i1 %2448, label %2456, label %2449 | |
; <label>:2449: ; preds = %2446 | |
br label %2450 | |
; <label>:2450: ; preds = %2450, %2449 | |
%2451 = phi %struct.ContainerChunk* [ %2454, %2450 ], [ %2447, %2449 ] | |
%2452 = bitcast %struct.ContainerChunk* %2451 to i8* | |
%2453 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2451, i64 0, i32 0 | |
%2454 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2453, align 8, !tbaa !484 | |
call void @free(i8* %2452) #0 | |
%2455 = icmp eq %struct.ContainerChunk* %2454, null | |
br i1 %2455, label %2456, label %2450 | |
; <label>:2456: ; preds = %2450, %2446, %2434 | |
%2457 = bitcast %struct.ObjHeader* %2432 to i8* | |
call void @free(i8* %2457) #0 | |
br label %2458 | |
; <label>:2458: ; preds = %2456, %2431 | |
ret i32 %2412 | |
; <label>:2459: ; preds = %2387, %2269, %2151, %2033, %1915, %1797, %1679, %1561, %1443, %1325, %1207, %1089, %971, %853, %735, %617, %499, %381, %263, %144 | |
%2460 = landingpad { i8*, i32 } | |
cleanup | |
br label %2461 | |
; <label>:2461: ; preds = %2459, %2406, %2336, %2311, %2288, %2218, %2193, %2170, %2100, %2075, %2052, %1982, %1957, %1934, %1864, %1839, %1816, %1746, %1721, %1698, %1628, %1603, %1580, %1510, %1485, %1462, %1392, %1367, %1344, %1274, %1249, %1226, %1156, %1131, %1108, %1038, %1013, %990, %920, %895, %872, %802, %777, %754, %684, %659, %636, %566, %541, %518, %448, %423, %400, %330, %305, %282, %212, %187, %164, %93, %68 | |
%2462 = phi { i8*, i32 } [ %55, %68 ], [ %55, %93 ], [ %165, %164 ], [ %174, %187 ], [ %174, %212 ], [ %283, %282 ], [ %292, %305 ], [ %292, %330 ], [ %401, %400 ], [ %410, %423 ], [ %410, %448 ], [ %519, %518 ], [ %528, %541 ], [ %528, %566 ], [ %637, %636 ], [ %646, %659 ], [ %646, %684 ], [ %755, %754 ], [ %764, %777 ], [ %764, %802 ], [ %873, %872 ], [ %882, %895 ], [ %882, %920 ], [ %991, %990 ], [ %1000, %1013 ], [ %1000, %1038 ], [ %1109, %1108 ], [ %1118, %1131 ], [ %1118, %1156 ], [ %1227, %1226 ], [ %1236, %1249 ], [ %1236, %1274 ], [ %1345, %1344 ], [ %1354, %1367 ], [ %1354, %1392 ], [ %1463, %1462 ], [ %1472, %1485 ], [ %1472, %1510 ], [ %1581, %1580 ], [ %1590, %1603 ], [ %1590, %1628 ], [ %1699, %1698 ], [ %1708, %1721 ], [ %1708, %1746 ], [ %1817, %1816 ], [ %1826, %1839 ], [ %1826, %1864 ], [ %1935, %1934 ], [ %1944, %1957 ], [ %1944, %1982 ], [ %2053, %2052 ], [ %2062, %2075 ], [ %2062, %2100 ], [ %2171, %2170 ], [ %2180, %2193 ], [ %2180, %2218 ], [ %2289, %2288 ], [ %2298, %2311 ], [ %2298, %2336 ], [ %2460, %2459 ], [ %2407, %2406 ] | |
br label %2463 | |
; <label>:2463: ; preds = %2479, %2461 | |
%2464 = phi i32 [ 40, %2461 ], [ %2467, %2479 ] | |
%2465 = phi %struct.ObjHeader** [ %6, %2461 ], [ %2466, %2479 ] | |
%2466 = getelementptr inbounds %struct.ObjHeader*, %struct.ObjHeader** %2465, i64 1 | |
%2467 = add nsw i32 %2464, -1 | |
%2468 = load %struct.ObjHeader*, %struct.ObjHeader** %2466, align 8, !tbaa !476 | |
%2469 = icmp eq %struct.ObjHeader* %2468, null | |
br i1 %2469, label %2479, label %2470 | |
; <label>:2470: ; preds = %2463 | |
%2471 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %2468, i64 0, i32 0 | |
%2472 = load %struct.TypeInfo*, %struct.TypeInfo** %2471, align 8, !tbaa !477 | |
%2473 = getelementptr %struct.ObjHeader, %struct.ObjHeader* %2468, i64 0, i32 1 | |
%2474 = load %struct.ContainerHeader*, %struct.ContainerHeader** %2473, align 8, !tbaa !479 | |
%2475 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %2472, i64 0, i32 0 | |
%2476 = load %struct.TypeInfo*, %struct.TypeInfo** %2475, align 8, !tbaa !480 | |
%2477 = getelementptr %struct.TypeInfo, %struct.TypeInfo* %2476, i64 0, i32 5 | |
%2478 = load i32, i32* %2477, align 8, !tbaa !481 | |
call fastcc void @_Z10ReleaseRefPK9ObjHeader(i32 %2478, %struct.ContainerHeader* %2474) #0 | |
store %struct.ObjHeader* null, %struct.ObjHeader** %2466, align 8, !tbaa !476 | |
br label %2479 | |
; <label>:2479: ; preds = %2470, %2463 | |
%2480 = icmp ugt i32 %2464, 1 | |
br i1 %2480, label %2463, label %2481 | |
; <label>:2481: ; preds = %2479 | |
%2482 = load %struct.ObjHeader*, %struct.ObjHeader** %4, align 8, !tbaa !476 | |
%2483 = icmp eq %struct.ObjHeader* %2482, null | |
br i1 %2483, label %2508, label %2484 | |
; <label>:2484: ; preds = %2481 | |
%2485 = bitcast %struct.ObjHeader* %2482 to %struct.ContainerChunk** | |
%2486 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2485, align 8, !tbaa !476 | |
%2487 = icmp eq %struct.ContainerChunk* %2486, null | |
br i1 %2487, label %2506, label %2488 | |
; <label>:2488: ; preds = %2484 | |
br label %2489 | |
; <label>:2489: ; preds = %2489, %2488 | |
%2490 = phi %struct.ContainerChunk* [ %2494, %2489 ], [ %2486, %2488 ] | |
%2491 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2490, i64 1 | |
%2492 = bitcast %struct.ContainerChunk* %2491 to %struct.ContainerHeader* | |
call fastcc void @_Z13FreeContainerP15ContainerHeader(%struct.ContainerHeader* %2492) #0 | |
%2493 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2490, i64 0, i32 0 | |
%2494 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2493, align 8, !tbaa !476 | |
%2495 = icmp eq %struct.ContainerChunk* %2494, null | |
br i1 %2495, label %2496, label %2489 | |
; <label>:2496: ; preds = %2489 | |
%2497 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2485, align 8, !tbaa !482 | |
%2498 = icmp eq %struct.ContainerChunk* %2497, null | |
br i1 %2498, label %2506, label %2499 | |
; <label>:2499: ; preds = %2496 | |
br label %2500 | |
; <label>:2500: ; preds = %2500, %2499 | |
%2501 = phi %struct.ContainerChunk* [ %2504, %2500 ], [ %2497, %2499 ] | |
%2502 = bitcast %struct.ContainerChunk* %2501 to i8* | |
%2503 = getelementptr inbounds %struct.ContainerChunk, %struct.ContainerChunk* %2501, i64 0, i32 0 | |
%2504 = load %struct.ContainerChunk*, %struct.ContainerChunk** %2503, align 8, !tbaa !484 | |
call void @free(i8* %2502) #0 | |
%2505 = icmp eq %struct.ContainerChunk* %2504, null | |
br i1 %2505, label %2506, label %2500 | |
; <label>:2506: ; preds = %2500, %2496, %2484 | |
%2507 = bitcast %struct.ObjHeader* %2482 to i8* | |
call void @free(i8* %2507) #0 | |
br label %2508 | |
; <label>:2508: ; preds = %2506, %2481 | |
resume { i8*, i32 } %2462 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment