From 76081c4ef7ac6f085253a4af3af740333b6dfc5b Mon Sep 17 00:00:00 2001 From: David Greene Date: Mon, 20 Jul 2009 22:02:59 +0000 Subject: [PATCH] Re-apply 75490, 75806 and 76177 with fixes and tests. Efficiency comes next. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76486 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Target/TargetAsmInfo.h | 11 + lib/Target/TargetAsmInfo.cpp | 2 + test/CodeGen/PIC16/2009-07-17-PR4566-pic16.ll | 29 + test/CodeGen/PIC16/dg.exp | 5 + test/CodeGen/Thumb/2009-07-17-PR4566-thumb.ll | 2891 +++++++++++++++++ test/FrontendC++/2009-07-15-LineNumbers.cpp | 1 - utils/TableGen/AsmWriterEmitter.cpp | 156 +- 7 files changed, 3078 insertions(+), 17 deletions(-) create mode 100644 test/CodeGen/PIC16/2009-07-17-PR4566-pic16.ll create mode 100644 test/CodeGen/PIC16/dg.exp create mode 100644 test/CodeGen/Thumb/2009-07-17-PR4566-thumb.ll diff --git a/include/llvm/Target/TargetAsmInfo.h b/include/llvm/Target/TargetAsmInfo.h index 6cdb7ccec8f..a89b90669a5 100644 --- a/include/llvm/Target/TargetAsmInfo.h +++ b/include/llvm/Target/TargetAsmInfo.h @@ -222,6 +222,14 @@ namespace llvm { /// assembler. const char *CommentString; // Defaults to "#" + /// FirstOperandColumn - The output column where the first operand + /// should be printed + unsigned FirstOperandColumn; // Defaults to 0 (ignored) + + /// MaxOperandLength - The maximum length of any printed asm + /// operand + unsigned MaxOperandLength; // Defaults to 0 (ignored) + /// GlobalPrefix - If this is set to a non-empty string, it is prepended /// onto all global symbols. This is often used for "_" or ".". const char *GlobalPrefix; // Defaults to "" @@ -691,6 +699,9 @@ namespace llvm { const char *getCommentString() const { return CommentString; } + unsigned getOperandColumn(int operand) const { + return FirstOperandColumn + (MaxOperandLength+1)*(operand-1); + } const char *getGlobalPrefix() const { return GlobalPrefix; } diff --git a/lib/Target/TargetAsmInfo.cpp b/lib/Target/TargetAsmInfo.cpp index 5236786ddad..5b7ddbfa4a7 100644 --- a/lib/Target/TargetAsmInfo.cpp +++ b/lib/Target/TargetAsmInfo.cpp @@ -45,6 +45,8 @@ TargetAsmInfo::TargetAsmInfo(const TargetMachine &tm) SeparatorChar = ';'; CommentColumn = 60; CommentString = "#"; + FirstOperandColumn = 0; + MaxOperandLength = 0; GlobalPrefix = ""; PrivateGlobalPrefix = "."; LessPrivateGlobalPrefix = ""; diff --git a/test/CodeGen/PIC16/2009-07-17-PR4566-pic16.ll b/test/CodeGen/PIC16/2009-07-17-PR4566-pic16.ll new file mode 100644 index 00000000000..aa2c51ea012 --- /dev/null +++ b/test/CodeGen/PIC16/2009-07-17-PR4566-pic16.ll @@ -0,0 +1,29 @@ +; RUN: llvm-as < %s | llc -march=pic16 | grep {movf \\+@i + 0, \\+W} + +target datalayout = "e-p:16:8:8-i8:8:8-i16:8:8-i32:8:8-f32:32:32" +target triple = "pic16-" +@i = global i32 -10, align 1 ; [#uses=1] +@j = global i32 -20, align 1 ; [#uses=1] +@pc = global i8* inttoptr (i64 160 to i8*), align 1 ; [#uses=3] +@main.auto.k = internal global i32 0 ; [#uses=2] + +define void @main() nounwind { +entry: + %tmp = load i32* @i ; [#uses=1] + %tmp1 = load i32* @j ; [#uses=1] + %add = add i32 %tmp, %tmp1 ; [#uses=1] + store i32 %add, i32* @main.auto.k + %tmp2 = load i32* @main.auto.k ; [#uses=1] + %add3 = add i32 %tmp2, 32 ; [#uses=1] + %conv = trunc i32 %add3 to i8 ; [#uses=1] + %tmp4 = load i8** @pc ; [#uses=1] + store i8 %conv, i8* %tmp4 + %tmp5 = load i8** @pc ; [#uses=1] + %tmp6 = load i8* %tmp5 ; [#uses=1] + %conv7 = sext i8 %tmp6 to i16 ; [#uses=1] + %sub = sub i16 %conv7, 1 ; [#uses=1] + %conv8 = trunc i16 %sub to i8 ; [#uses=1] + %tmp9 = load i8** @pc ; [#uses=1] + store i8 %conv8, i8* %tmp9 + ret void +} diff --git a/test/CodeGen/PIC16/dg.exp b/test/CodeGen/PIC16/dg.exp new file mode 100644 index 00000000000..b08b9858e04 --- /dev/null +++ b/test/CodeGen/PIC16/dg.exp @@ -0,0 +1,5 @@ +load_lib llvm.exp + +if { [llvm_supports_target PIC16] } { + RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,c,cpp}]] +} diff --git a/test/CodeGen/Thumb/2009-07-17-PR4566-thumb.ll b/test/CodeGen/Thumb/2009-07-17-PR4566-thumb.ll new file mode 100644 index 00000000000..7c18ef4728f --- /dev/null +++ b/test/CodeGen/Thumb/2009-07-17-PR4566-thumb.ll @@ -0,0 +1,2891 @@ +; RUN: llvm-as < %s | llc -march=thumb | grep {rsbs \\+r\[0-9\]\\+, \\+r\[0-9\]\\+, \\+#0} + +target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:64:64-v128:128:128-a0:0:32" +target triple = "thumbv6-elf" + type { i32 } ; type %0 + %llvm.dbg.basictype.type = type { i32, { }*, i8*, { }*, i32, i64, i64, i64, i32, i32 } + %llvm.dbg.compile_unit.type = type { i32, { }*, i32, i8*, i8*, i8*, i1, i1, i8*, i32 } + %llvm.dbg.composite.type = type { i32, { }*, i8*, { }*, i32, i64, i64, i64, i32, { }*, { }*, i32 } + %llvm.dbg.derivedtype.type = type { i32, { }*, i8*, { }*, i32, i64, i64, i64, i32, { }* } + %llvm.dbg.subprogram.type = type { i32, { }*, { }*, i8*, i8*, i8*, { }*, i32, { }*, i1, i1 } + %struct.anon = type { %struct.dwarf_fde* } + %struct.dwarf_cie = type <{ i32, i32, i8, [0 x i8], [3 x i8] }> + %struct.dwarf_eh_bases = type { i8*, i8*, i8* } + %struct.dwarf_fde = type <{ i32, i32, [0 x i8] }> + %struct.fde_accumulator = type { %struct.fde_vector*, %struct.fde_vector* } + %struct.fde_vector = type { i8*, i32, [0 x %struct.dwarf_fde*] } + %struct.object = type { i8*, i8*, i8*, %struct.anon, %0, %struct.object* } +@.str = internal constant [17 x i8] c"unwind-dw2-fde.c\00", section "llvm.metadata" ; <[17 x i8]*> [#uses=1] +@.str1 = internal constant [61 x i8] c"/home/asl/proj/llvm/llvm-gcc-4.2/build_arm/gcc/../../src/gcc\00", section "llvm.metadata" ; <[61 x i8]*> [#uses=1] +@.str2 = internal constant [52 x i8] c"4.2.1 (Based on Apple Inc. build 5646) (LLVM build)\00", section "llvm.metadata" ; <[52 x i8]*> [#uses=1] +@llvm.dbg.compile_unit = linkonce constant %llvm.dbg.compile_unit.type { i32 458769, { }* null, i32 1, i8* getelementptr ([17 x i8]* @.str, i32 0, i32 0), i8* getelementptr ([61 x i8]* @.str1, i32 0, i32 0), i8* getelementptr ([52 x i8]* @.str2, i32 0, i32 0), i1 true, i1 true, i8* null, i32 0 }, section "llvm.metadata" ; <%llvm.dbg.compile_unit.type*> [#uses=1] +@.str3 = internal constant [14 x i8] c"unsigned char\00", section "llvm.metadata" ; <[14 x i8]*> [#uses=1] +@llvm.dbg.basictype = internal constant %llvm.dbg.basictype.type { i32 458788, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([14 x i8]* @.str3, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 8, i64 8, i64 0, i32 0, i32 8 }, section "llvm.metadata" ; <%llvm.dbg.basictype.type*> [#uses=1] +@llvm.dbg.derivedtype = internal constant %llvm.dbg.derivedtype.type { i32 458790, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 8, i64 8, i64 0, i32 0, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.derivedtype4 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str5 = internal constant [13 x i8] c"unsigned int\00", section "llvm.metadata" ; <[13 x i8]*> [#uses=1] +@llvm.dbg.basictype6 = internal constant %llvm.dbg.basictype.type { i32 458788, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([13 x i8]* @.str5, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, i32 7 }, section "llvm.metadata" ; <%llvm.dbg.basictype.type*> [#uses=1] +@.str7 = internal constant [9 x i8] c"unwind.h\00", section "llvm.metadata" ; <[9 x i8]*> [#uses=1] +@.str8 = internal constant [57 x i8] c"/home/asl/proj/llvm/llvm-gcc-4.2/build_arm/gcc/./include\00", section "llvm.metadata" ; <[57 x i8]*> [#uses=1] +@llvm.dbg.compile_unit9 = linkonce constant %llvm.dbg.compile_unit.type { i32 458769, { }* null, i32 1, i8* getelementptr ([9 x i8]* @.str7, i32 0, i32 0), i8* getelementptr ([57 x i8]* @.str8, i32 0, i32 0), i8* getelementptr ([52 x i8]* @.str2, i32 0, i32 0), i1 false, i1 true, i8* null, i32 0 }, section "llvm.metadata" ; <%llvm.dbg.compile_unit.type*> [#uses=1] +@.str10 = internal constant [13 x i8] c"_Unwind_Word\00", section "llvm.metadata" ; <[13 x i8]*> [#uses=1] +@llvm.dbg.derivedtype11 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([13 x i8]* @.str10, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit9 to { }*), i32 47, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype6 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.derivedtype12 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype11 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.array = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype4 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype4 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype12 to { }*)], section "llvm.metadata" ; <[3 x { }*]*> [#uses=1] +@llvm.dbg.composite = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str13 = internal constant [12 x i8] c"unwind-pe.h\00", section "llvm.metadata" ; <[12 x i8]*> [#uses=1] +@llvm.dbg.compile_unit14 = linkonce constant %llvm.dbg.compile_unit.type { i32 458769, { }* null, i32 1, i8* getelementptr ([12 x i8]* @.str13, i32 0, i32 0), i8* getelementptr ([61 x i8]* @.str1, i32 0, i32 0), i8* getelementptr ([52 x i8]* @.str2, i32 0, i32 0), i1 false, i1 true, i8* null, i32 0 }, section "llvm.metadata" ; <%llvm.dbg.compile_unit.type*> [#uses=1] +@.str15 = internal constant [13 x i8] c"read_uleb128\00", section "llvm.metadata" ; <[13 x i8]*> [#uses=1] +@llvm.dbg.subprogram = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([13 x i8]* @.str15, i32 0, i32 0), i8* getelementptr ([13 x i8]* @.str15, i32 0, i32 0), i8* getelementptr ([13 x i8]* @.str15, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*), i32 134, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@.str16 = internal constant [4 x i8] c"int\00", section "llvm.metadata" ; <[4 x i8]*> [#uses=1] +@llvm.dbg.basictype17 = internal constant %llvm.dbg.basictype.type { i32 458788, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([4 x i8]* @.str16, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, i32 5 }, section "llvm.metadata" ; <%llvm.dbg.basictype.type*> [#uses=1] +@.str18 = internal constant [12 x i8] c"coretypes.h\00", section "llvm.metadata" ; <[12 x i8]*> [#uses=1] +@llvm.dbg.compile_unit19 = linkonce constant %llvm.dbg.compile_unit.type { i32 458769, { }* null, i32 1, i8* getelementptr ([12 x i8]* @.str18, i32 0, i32 0), i8* getelementptr ([61 x i8]* @.str1, i32 0, i32 0), i8* getelementptr ([52 x i8]* @.str2, i32 0, i32 0), i1 false, i1 true, i8* null, i32 0 }, section "llvm.metadata" ; <%llvm.dbg.compile_unit.type*> [#uses=1] +@.str20 = internal constant [8 x i8] c"wchar_t\00", section "llvm.metadata" ; <[8 x i8]*> [#uses=1] +@llvm.dbg.derivedtype21 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([8 x i8]* @.str20, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit19 to { }*), i32 72, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype17 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str22 = internal constant [14 x i8] c"_Unwind_Sword\00", section "llvm.metadata" ; <[14 x i8]*> [#uses=1] +@llvm.dbg.derivedtype23 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([14 x i8]* @.str22, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit9 to { }*), i32 51, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype21 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.derivedtype24 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype23 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.array25 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype4 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype4 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype24 to { }*)], section "llvm.metadata" ; <[3 x { }*]*> [#uses=1] +@llvm.dbg.composite26 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array25 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str27 = internal constant [13 x i8] c"read_sleb128\00", section "llvm.metadata" ; <[13 x i8]*> [#uses=1] +@llvm.dbg.subprogram28 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([13 x i8]* @.str27, i32 0, i32 0), i8* getelementptr ([13 x i8]* @.str27, i32 0, i32 0), i8* getelementptr ([13 x i8]* @.str27, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*), i32 156, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite26 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@.str29 = internal constant [17 x i8] c"unwind-dw2-fde.h\00", section "llvm.metadata" ; <[17 x i8]*> [#uses=1] +@llvm.dbg.compile_unit30 = linkonce constant %llvm.dbg.compile_unit.type { i32 458769, { }* null, i32 1, i8* getelementptr ([17 x i8]* @.str29, i32 0, i32 0), i8* getelementptr ([61 x i8]* @.str1, i32 0, i32 0), i8* getelementptr ([52 x i8]* @.str2, i32 0, i32 0), i1 false, i1 true, i8* null, i32 0 }, section "llvm.metadata" ; <%llvm.dbg.compile_unit.type*> [#uses=1] +@.str31 = internal constant [10 x i8] c"dwarf_cie\00", section "llvm.metadata" ; <[10 x i8]*> [#uses=1] +@.str33 = internal constant [12 x i8] c"_Unwind_Ptr\00", section "llvm.metadata" ; <[12 x i8]*> [#uses=1] +@llvm.dbg.derivedtype34 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([12 x i8]* @.str33, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit9 to { }*), i32 53, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype11 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str35 = internal constant [21 x i8] c"_Unwind_Internal_Ptr\00", section "llvm.metadata" ; <[21 x i8]*> [#uses=1] +@llvm.dbg.derivedtype36 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([21 x i8]* @.str35, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit9 to { }*), i32 59, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype34 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.derivedtype37 = internal constant %llvm.dbg.derivedtype.type { i32 458790, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype36 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str38 = internal constant [6 x i8] c"uword\00", section "llvm.metadata" ; <[6 x i8]*> [#uses=1] +@llvm.dbg.derivedtype39 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str38, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 114, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype37 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str40 = internal constant [7 x i8] c"length\00", section "llvm.metadata" ; <[7 x i8]*> [#uses=1] +@llvm.dbg.derivedtype41 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([7 x i8]* @.str40, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 142, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype39 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str42 = internal constant [15 x i8] c"_Unwind_Action\00", section "llvm.metadata" ; <[15 x i8]*> [#uses=1] +@llvm.dbg.derivedtype43 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([15 x i8]* @.str42, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit9 to { }*), i32 115, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype23 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.derivedtype44 = internal constant %llvm.dbg.derivedtype.type { i32 458790, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype43 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str45 = internal constant [6 x i8] c"sword\00", section "llvm.metadata" ; <[6 x i8]*> [#uses=1] +@llvm.dbg.derivedtype46 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str45, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 113, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype44 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str47 = internal constant [7 x i8] c"CIE_id\00", section "llvm.metadata" ; <[7 x i8]*> [#uses=1] +@llvm.dbg.derivedtype48 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([7 x i8]* @.str47, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 143, i64 32, i64 32, i64 32, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype46 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str49 = internal constant [6 x i8] c"ubyte\00", section "llvm.metadata" ; <[6 x i8]*> [#uses=1] +@llvm.dbg.derivedtype50 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str49, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 141, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str51 = internal constant [8 x i8] c"version\00", section "llvm.metadata" ; <[8 x i8]*> [#uses=1] +@llvm.dbg.derivedtype52 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([8 x i8]* @.str51, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 144, i64 8, i64 8, i64 64, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype50 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.array53 = internal constant [0 x { }*] zeroinitializer, section "llvm.metadata" ; <[0 x { }*]*> [#uses=1] +@llvm.dbg.composite54 = internal constant %llvm.dbg.composite.type { i32 458753, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 8, i64 0, i32 0, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype to { }*), { }* bitcast ([0 x { }*]* @llvm.dbg.array53 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str55 = internal constant [13 x i8] c"augmentation\00", section "llvm.metadata" ; <[13 x i8]*> [#uses=1] +@llvm.dbg.derivedtype56 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([13 x i8]* @.str55, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 145, i64 0, i64 8, i64 72, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite54 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.array57 = internal constant [4 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype41 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype48 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype52 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype56 to { }*)], section "llvm.metadata" ; <[4 x { }*]*> [#uses=1] +@llvm.dbg.composite58 = internal constant %llvm.dbg.composite.type { i32 458771, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([10 x i8]* @.str31, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 141, i64 96, i64 32, i64 0, i32 0, { }* null, { }* bitcast ([4 x { }*]* @llvm.dbg.array57 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@llvm.dbg.derivedtype59 = internal constant %llvm.dbg.derivedtype.type { i32 458790, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 96, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite58 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.derivedtype60 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype59 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str61 = internal constant [10 x i8] c"dwarf_fde\00", section "llvm.metadata" ; <[10 x i8]*> [#uses=1] +@llvm.dbg.derivedtype63 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([7 x i8]* @.str40, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 151, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype39 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str64 = internal constant [10 x i8] c"CIE_delta\00", section "llvm.metadata" ; <[10 x i8]*> [#uses=1] +@llvm.dbg.derivedtype65 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([10 x i8]* @.str64, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 152, i64 32, i64 32, i64 32, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype46 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str67 = internal constant [9 x i8] c"pc_begin\00", section "llvm.metadata" ; <[9 x i8]*> [#uses=1] +@llvm.dbg.derivedtype68 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([9 x i8]* @.str67, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 153, i64 0, i64 8, i64 64, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite54 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.array69 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype63 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype65 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype68 to { }*)], section "llvm.metadata" ; <[3 x { }*]*> [#uses=1] +@llvm.dbg.composite70 = internal constant %llvm.dbg.composite.type { i32 458771, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([10 x i8]* @.str61, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 43, i64 64, i64 32, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array69 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@llvm.dbg.derivedtype71 = internal constant %llvm.dbg.derivedtype.type { i32 458790, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 64, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite70 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.derivedtype72 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype71 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.array73 = internal constant [2 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype60 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype72 to { }*)], section "llvm.metadata" ; <[2 x { }*]*> [#uses=1] +@llvm.dbg.composite74 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array73 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str75 = internal constant [8 x i8] c"get_cie\00", section "llvm.metadata" ; <[8 x i8]*> [#uses=1] +@llvm.dbg.subprogram76 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([8 x i8]* @.str75, i32 0, i32 0), i8* getelementptr ([8 x i8]* @.str75, i32 0, i32 0), i8* getelementptr ([8 x i8]* @.str75, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 162, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite74 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@.str77 = internal constant [4 x i8] c"fde\00", section "llvm.metadata" ; <[4 x i8]*> [#uses=1] +@llvm.dbg.derivedtype78 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([4 x i8]* @.str77, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 162, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype71 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.derivedtype79 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([4 x i8]* @.str77, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 162, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype78 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.derivedtype80 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype79 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.array81 = internal constant [2 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*)], section "llvm.metadata" ; <[2 x { }*]*> [#uses=1] +@llvm.dbg.composite82 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array81 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str83 = internal constant [9 x i8] c"next_fde\00", section "llvm.metadata" ; <[9 x i8]*> [#uses=1] +@llvm.dbg.subprogram84 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([9 x i8]* @.str83, i32 0, i32 0), i8* getelementptr ([9 x i8]* @.str83, i32 0, i32 0), i8* getelementptr ([9 x i8]* @.str83, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 168, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite82 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=0] +@.str85 = internal constant [7 x i8] c"object\00", section "llvm.metadata" ; <[7 x i8]*> [#uses=1] +@llvm.dbg.derivedtype87 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* null }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.derivedtype88 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([9 x i8]* @.str67, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 48, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str89 = internal constant [6 x i8] c"tbase\00", section "llvm.metadata" ; <[6 x i8]*> [#uses=1] +@llvm.dbg.derivedtype90 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str89, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 49, i64 32, i64 32, i64 32, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str91 = internal constant [6 x i8] c"dbase\00", section "llvm.metadata" ; <[6 x i8]*> [#uses=1] +@llvm.dbg.derivedtype92 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str91, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 50, i64 32, i64 32, i64 64, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str94 = internal constant [7 x i8] c"single\00", section "llvm.metadata" ; <[7 x i8]*> [#uses=1] +@llvm.dbg.derivedtype95 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([7 x i8]* @.str94, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 52, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype72 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.derivedtype96 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite70 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.derivedtype97 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype96 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str98 = internal constant [6 x i8] c"array\00", section "llvm.metadata" ; <[6 x i8]*> [#uses=1] +@llvm.dbg.derivedtype99 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str98, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 53, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype97 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str100 = internal constant [11 x i8] c"fde_vector\00", section "llvm.metadata" ; <[11 x i8]*> [#uses=1] +@.str103 = internal constant [10 x i8] c"orig_data\00", section "llvm.metadata" ; <[10 x i8]*> [#uses=1] +@llvm.dbg.derivedtype104 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([10 x i8]* @.str103, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 41, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str105 = internal constant [18 x i8] c"long unsigned int\00", section "llvm.metadata" ; <[18 x i8]*> [#uses=1] +@llvm.dbg.basictype106 = internal constant %llvm.dbg.basictype.type { i32 458788, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([18 x i8]* @.str105, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, i32 7 }, section "llvm.metadata" ; <%llvm.dbg.basictype.type*> [#uses=1] +@.str107 = internal constant [9 x i8] c"stddef.h\00", section "llvm.metadata" ; <[9 x i8]*> [#uses=1] +@llvm.dbg.compile_unit108 = linkonce constant %llvm.dbg.compile_unit.type { i32 458769, { }* null, i32 1, i8* getelementptr ([9 x i8]* @.str107, i32 0, i32 0), i8* getelementptr ([57 x i8]* @.str8, i32 0, i32 0), i8* getelementptr ([52 x i8]* @.str2, i32 0, i32 0), i1 false, i1 true, i8* null, i32 0 }, section "llvm.metadata" ; <%llvm.dbg.compile_unit.type*> [#uses=1] +@.str109 = internal constant [7 x i8] c"size_t\00", section "llvm.metadata" ; <[7 x i8]*> [#uses=1] +@llvm.dbg.derivedtype110 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([7 x i8]* @.str109, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit108 to { }*), i32 326, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype106 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str111 = internal constant [6 x i8] c"count\00", section "llvm.metadata" ; <[6 x i8]*> [#uses=1] +@llvm.dbg.derivedtype112 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str111, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 42, i64 32, i64 32, i64 32, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype110 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.composite113 = internal constant %llvm.dbg.composite.type { i32 458753, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype72 to { }*), { }* bitcast ([0 x { }*]* @llvm.dbg.array53 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@llvm.dbg.derivedtype114 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str98, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 43, i64 0, i64 32, i64 64, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite113 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.array115 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype104 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype112 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype114 to { }*)], section "llvm.metadata" ; <[3 x { }*]*> [#uses=1] +@llvm.dbg.composite116 = internal constant %llvm.dbg.composite.type { i32 458771, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([11 x i8]* @.str100, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 40, i64 64, i64 32, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array115 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@llvm.dbg.derivedtype117 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite116 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str118 = internal constant [5 x i8] c"sort\00", section "llvm.metadata" ; <[5 x i8]*> [#uses=1] +@llvm.dbg.derivedtype119 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([5 x i8]* @.str118, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 54, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype117 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.array120 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype95 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype99 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype119 to { }*)], section "llvm.metadata" ; <[3 x { }*]*> [#uses=1] +@llvm.dbg.composite121 = internal constant %llvm.dbg.composite.type { i32 458775, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 51, i64 32, i64 32, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array120 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str122 = internal constant [2 x i8] c"u\00", section "llvm.metadata" ; <[2 x i8]*> [#uses=1] +@llvm.dbg.derivedtype123 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([2 x i8]* @.str122, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 55, i64 32, i64 32, i64 96, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite121 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str126 = internal constant [7 x i8] c"sorted\00", section "llvm.metadata" ; <[7 x i8]*> [#uses=1] +@llvm.dbg.derivedtype127 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([7 x i8]* @.str126, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 59, i64 1, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype106 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str128 = internal constant [11 x i8] c"from_array\00", section "llvm.metadata" ; <[11 x i8]*> [#uses=1] +@llvm.dbg.derivedtype129 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([11 x i8]* @.str128, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 60, i64 1, i64 32, i64 1, i32 0, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype106 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str130 = internal constant [15 x i8] c"mixed_encoding\00", section "llvm.metadata" ; <[15 x i8]*> [#uses=1] +@llvm.dbg.derivedtype131 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([15 x i8]* @.str130, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 61, i64 1, i64 32, i64 2, i32 0, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype106 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str132 = internal constant [9 x i8] c"encoding\00", section "llvm.metadata" ; <[9 x i8]*> [#uses=1] +@llvm.dbg.derivedtype133 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([9 x i8]* @.str132, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 62, i64 8, i64 32, i64 3, i32 0, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype106 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.derivedtype134 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str111, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 65, i64 21, i64 32, i64 11, i32 0, { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype106 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.array135 = internal constant [5 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype127 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype129 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype131 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype133 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype134 to { }*)], section "llvm.metadata" ; <[5 x { }*]*> [#uses=1] +@llvm.dbg.composite136 = internal constant %llvm.dbg.composite.type { i32 458771, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 58, i64 32, i64 32, i64 0, i32 0, { }* null, { }* bitcast ([5 x { }*]* @llvm.dbg.array135 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str137 = internal constant [2 x i8] c"b\00", section "llvm.metadata" ; <[2 x i8]*> [#uses=1] +@llvm.dbg.derivedtype138 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([2 x i8]* @.str137, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 66, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite136 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str139 = internal constant [2 x i8] c"i\00", section "llvm.metadata" ; <[2 x i8]*> [#uses=1] +@llvm.dbg.derivedtype140 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([2 x i8]* @.str139, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 67, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype110 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.array141 = internal constant [2 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype138 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype140 to { }*)], section "llvm.metadata" ; <[2 x { }*]*> [#uses=1] +@llvm.dbg.composite142 = internal constant %llvm.dbg.composite.type { i32 458775, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 57, i64 32, i64 32, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array141 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str143 = internal constant [2 x i8] c"s\00", section "llvm.metadata" ; <[2 x i8]*> [#uses=1] +@llvm.dbg.derivedtype144 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([2 x i8]* @.str143, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 68, i64 32, i64 32, i64 128, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite142 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.derivedtype145 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite149 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str146 = internal constant [5 x i8] c"next\00", section "llvm.metadata" ; <[5 x i8]*> [#uses=1] +@llvm.dbg.derivedtype147 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([5 x i8]* @.str146, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 74, i64 32, i64 32, i64 160, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.array148 = internal constant [6 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype88 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype90 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype92 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype123 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype144 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype147 to { }*)], section "llvm.metadata" ; <[6 x { }*]*> [#uses=1] +@llvm.dbg.composite149 = internal constant %llvm.dbg.composite.type { i32 458771, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([7 x i8]* @.str85, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 47, i64 192, i64 32, i64 0, i32 0, { }* null, { }* bitcast ([6 x { }*]* @llvm.dbg.array148 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@llvm.dbg.array151 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype17 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*)], section "llvm.metadata" ; <[3 x { }*]*> [#uses=1] +@llvm.dbg.composite152 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array151 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str153 = internal constant [9 x i8] c"last_fde\00", section "llvm.metadata" ; <[9 x i8]*> [#uses=1] +@llvm.dbg.subprogram154 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([9 x i8]* @.str153, i32 0, i32 0), i8* getelementptr ([9 x i8]* @.str153, i32 0, i32 0), i8* getelementptr ([9 x i8]* @.str153, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 176, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite152 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@.str155 = internal constant [6 x i8] c"saddr\00", section "llvm.metadata" ; <[6 x i8]*> [#uses=1] +@llvm.dbg.derivedtype156 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str155, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 116, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype46 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.derivedtype157 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str45, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 113, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype156 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str158 = internal constant [14 x i8] c"gthr-single.h\00", section "llvm.metadata" ; <[14 x i8]*> [#uses=1] +@llvm.dbg.compile_unit159 = linkonce constant %llvm.dbg.compile_unit.type { i32 458769, { }* null, i32 1, i8* getelementptr ([14 x i8]* @.str158, i32 0, i32 0), i8* getelementptr ([61 x i8]* @.str1, i32 0, i32 0), i8* getelementptr ([52 x i8]* @.str2, i32 0, i32 0), i1 false, i1 true, i8* null, i32 0 }, section "llvm.metadata" ; <%llvm.dbg.compile_unit.type*> [#uses=1] +@.str160 = internal constant [18 x i8] c"__gthread_mutex_t\00", section "llvm.metadata" ; <[18 x i8]*> [#uses=1] +@llvm.dbg.derivedtype161 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([18 x i8]* @.str160, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit159 to { }*), i32 35, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype157 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.derivedtype162 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype161 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.array163 = internal constant [2 x { }*] [{ }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype17 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype162 to { }*)], section "llvm.metadata" ; <[2 x { }*]*> [#uses=1] +@llvm.dbg.composite164 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array163 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str165 = internal constant [21 x i8] c"__gthread_mutex_lock\00", section "llvm.metadata" ; <[21 x i8]*> [#uses=1] +@llvm.dbg.subprogram166 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([21 x i8]* @.str165, i32 0, i32 0), i8* getelementptr ([21 x i8]* @.str165, i32 0, i32 0), i8* getelementptr ([21 x i8]* @.str165, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit159 to { }*), i32 220, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite164 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@.str167 = internal constant [23 x i8] c"__gthread_mutex_unlock\00", section "llvm.metadata" ; <[23 x i8]*> [#uses=1] +@llvm.dbg.subprogram168 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([23 x i8]* @.str167, i32 0, i32 0), i8* getelementptr ([23 x i8]* @.str167, i32 0, i32 0), i8* getelementptr ([23 x i8]* @.str167, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit159 to { }*), i32 232, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite164 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@llvm.dbg.array169 = internal constant [5 x { }*] [{ }* null, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*)], section "llvm.metadata" ; <[5 x { }*]*> [#uses=1] +@llvm.dbg.composite170 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([5 x { }*]* @llvm.dbg.array169 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str171 = internal constant [28 x i8] c"__register_frame_info_bases\00", section "llvm.metadata" ; <[28 x i8]*> [#uses=1] +@llvm.dbg.subprogram172 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([28 x i8]* @.str171, i32 0, i32 0), i8* getelementptr ([28 x i8]* @.str171, i32 0, i32 0), i8* getelementptr ([28 x i8]* @.str171, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 80, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite170 to { }*), i1 false, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@unseen_objects = internal global %struct.object* null ; <%struct.object**> [#uses=15] +@llvm.dbg.array173 = internal constant [3 x { }*] [{ }* null, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*)], section "llvm.metadata" ; <[3 x { }*]*> [#uses=1] +@llvm.dbg.composite174 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array173 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str175 = internal constant [22 x i8] c"__register_frame_info\00", section "llvm.metadata" ; <[22 x i8]*> [#uses=1] +@llvm.dbg.subprogram176 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([22 x i8]* @.str175, i32 0, i32 0), i8* getelementptr ([22 x i8]* @.str175, i32 0, i32 0), i8* getelementptr ([22 x i8]* @.str175, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 106, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite174 to { }*), i1 false, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@.str179 = internal constant [34 x i8] c"__register_frame_info_table_bases\00", section "llvm.metadata" ; <[34 x i8]*> [#uses=1] +@llvm.dbg.subprogram180 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([34 x i8]* @.str179, i32 0, i32 0), i8* getelementptr ([34 x i8]* @.str179, i32 0, i32 0), i8* getelementptr ([34 x i8]* @.str179, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 130, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite170 to { }*), i1 false, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@.str183 = internal constant [28 x i8] c"__register_frame_info_table\00", section "llvm.metadata" ; <[28 x i8]*> [#uses=1] +@llvm.dbg.subprogram184 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([28 x i8]* @.str183, i32 0, i32 0), i8* getelementptr ([28 x i8]* @.str183, i32 0, i32 0), i8* getelementptr ([28 x i8]* @.str183, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 150, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite174 to { }*), i1 false, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@llvm.dbg.array185 = internal constant [4 x { }*] [{ }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype17 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*)], section "llvm.metadata" ; <[4 x { }*]*> [#uses=1] +@llvm.dbg.composite186 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([4 x { }*]* @llvm.dbg.array185 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str187 = internal constant [22 x i8] c"fde_unencoded_compare\00", section "llvm.metadata" ; <[22 x i8]*> [#uses=1] +@llvm.dbg.subprogram188 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([22 x i8]* @.str187, i32 0, i32 0), i8* getelementptr ([22 x i8]* @.str187, i32 0, i32 0), i8* getelementptr ([22 x i8]* @.str187, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 325, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite186 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@.str189 = internal constant [16 x i8] c"fde_accumulator\00", section "llvm.metadata" ; <[16 x i8]*> [#uses=1] +@.str191 = internal constant [7 x i8] c"linear\00", section "llvm.metadata" ; <[7 x i8]*> [#uses=1] +@llvm.dbg.derivedtype192 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([7 x i8]* @.str191, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 389, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype117 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str193 = internal constant [8 x i8] c"erratic\00", section "llvm.metadata" ; <[8 x i8]*> [#uses=1] +@llvm.dbg.derivedtype194 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([8 x i8]* @.str193, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 390, i64 32, i64 32, i64 32, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype117 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.array195 = internal constant [2 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype192 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype194 to { }*)], section "llvm.metadata" ; <[2 x { }*]*> [#uses=1] +@llvm.dbg.composite196 = internal constant %llvm.dbg.composite.type { i32 458771, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([16 x i8]* @.str189, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 388, i64 64, i64 32, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array195 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@llvm.dbg.derivedtype197 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite196 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.array198 = internal constant [3 x { }*] [{ }* null, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype197 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*)], section "llvm.metadata" ; <[3 x { }*]*> [#uses=1] +@llvm.dbg.composite199 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array198 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str200 = internal constant [11 x i8] c"fde_insert\00", section "llvm.metadata" ; <[11 x i8]*> [#uses=1] +@llvm.dbg.subprogram201 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([11 x i8]* @.str200, i32 0, i32 0), i8* getelementptr ([11 x i8]* @.str200, i32 0, i32 0), i8* getelementptr ([11 x i8]* @.str200, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 414, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite199 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=0] +@llvm.dbg.derivedtype202 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite186 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str203 = internal constant [14 x i8] c"fde_compare_t\00", section "llvm.metadata" ; <[14 x i8]*> [#uses=1] +@llvm.dbg.derivedtype204 = internal constant %llvm.dbg.derivedtype.type { i32 458774, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([14 x i8]* @.str203, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 388, i64 0, i64 0, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype202 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.array205 = internal constant [5 x { }*] [{ }* null, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype204 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype117 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype117 to { }*)], section "llvm.metadata" ; <[5 x { }*]*> [#uses=1] +@llvm.dbg.composite206 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([5 x { }*]* @llvm.dbg.array205 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str207 = internal constant [10 x i8] c"fde_split\00", section "llvm.metadata" ; <[10 x i8]*> [#uses=1] +@llvm.dbg.subprogram208 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([10 x i8]* @.str207, i32 0, i32 0), i8* getelementptr ([10 x i8]* @.str207, i32 0, i32 0), i8* getelementptr ([10 x i8]* @.str207, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 434, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite206 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@marker.2702 = internal global %struct.dwarf_fde* null ; <%struct.dwarf_fde**> [#uses=2] +@llvm.dbg.derivedtype209 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.array210 = internal constant [6 x { }*] [{ }* null, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype204 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype209 to { }*), { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype17 to { }*), { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype17 to { }*)], section "llvm.metadata" ; <[6 x { }*]*> [#uses=1] +@llvm.dbg.composite211 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([6 x { }*]* @llvm.dbg.array210 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str212 = internal constant [15 x i8] c"frame_downheap\00", section "llvm.metadata" ; <[15 x i8]*> [#uses=1] +@llvm.dbg.subprogram213 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([15 x i8]* @.str212, i32 0, i32 0), i8* getelementptr ([15 x i8]* @.str212, i32 0, i32 0), i8* getelementptr ([15 x i8]* @.str212, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 480, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite211 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@llvm.dbg.array214 = internal constant [4 x { }*] [{ }* null, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype204 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype117 to { }*)], section "llvm.metadata" ; <[4 x { }*]*> [#uses=1] +@llvm.dbg.composite215 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([4 x { }*]* @llvm.dbg.array214 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str216 = internal constant [15 x i8] c"frame_heapsort\00", section "llvm.metadata" ; <[15 x i8]*> [#uses=1] +@llvm.dbg.subprogram217 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([15 x i8]* @.str216, i32 0, i32 0), i8* getelementptr ([15 x i8]* @.str216, i32 0, i32 0), i8* getelementptr ([15 x i8]* @.str216, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 506, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite215 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@.str218 = internal constant [10 x i8] c"fde_merge\00", section "llvm.metadata" ; <[10 x i8]*> [#uses=1] +@llvm.dbg.subprogram219 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([10 x i8]* @.str218, i32 0, i32 0), i8* getelementptr ([10 x i8]* @.str218, i32 0, i32 0), i8* getelementptr ([10 x i8]* @.str218, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 538, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite206 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@llvm.dbg.array220 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*)], section "llvm.metadata" ; <[3 x { }*]*> [#uses=1] +@llvm.dbg.composite221 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array220 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str222 = internal constant [29 x i8] c"binary_search_unencoded_fdes\00", section "llvm.metadata" ; <[29 x i8]*> [#uses=1] +@llvm.dbg.subprogram223 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([29 x i8]* @.str222, i32 0, i32 0), i8* getelementptr ([29 x i8]* @.str222, i32 0, i32 0), i8* getelementptr ([29 x i8]* @.str222, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 840, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite221 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@llvm.dbg.array224 = internal constant [2 x { }*] [{ }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype6 to { }*), { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype to { }*)], section "llvm.metadata" ; <[2 x { }*]*> [#uses=1] +@llvm.dbg.composite225 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array224 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str226 = internal constant [22 x i8] c"size_of_encoded_value\00", section "llvm.metadata" ; <[22 x i8]*> [#uses=1] +@llvm.dbg.subprogram227 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([22 x i8]* @.str226, i32 0, i32 0), i8* getelementptr ([22 x i8]* @.str226, i32 0, i32 0), i8* getelementptr ([22 x i8]* @.str226, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*), i32 75, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite225 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@llvm.dbg.array228 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype34 to { }*), { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*)], section "llvm.metadata" ; <[3 x { }*]*> [#uses=1] +@llvm.dbg.composite229 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array228 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str230 = internal constant [17 x i8] c"base_from_object\00", section "llvm.metadata" ; <[17 x i8]*> [#uses=1] +@llvm.dbg.subprogram231 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([17 x i8]* @.str230, i32 0, i32 0), i8* getelementptr ([17 x i8]* @.str230, i32 0, i32 0), i8* getelementptr ([17 x i8]* @.str230, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 241, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite229 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@llvm.dbg.derivedtype232 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype34 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.array233 = internal constant [5 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype4 to { }*), { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype34 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype4 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype232 to { }*)], section "llvm.metadata" ; <[5 x { }*]*> [#uses=1] +@llvm.dbg.composite234 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([5 x { }*]* @llvm.dbg.array233 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str235 = internal constant [29 x i8] c"read_encoded_value_with_base\00", section "llvm.metadata" ; <[29 x i8]*> [#uses=1] +@llvm.dbg.subprogram236 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([29 x i8]* @.str235, i32 0, i32 0), i8* getelementptr ([29 x i8]* @.str235, i32 0, i32 0), i8* getelementptr ([29 x i8]* @.str235, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*), i32 185, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite234 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@llvm.dbg.array237 = internal constant [2 x { }*] [{ }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype17 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype60 to { }*)], section "llvm.metadata" ; <[2 x { }*]*> [#uses=1] +@llvm.dbg.composite238 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array237 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str239 = internal constant [17 x i8] c"get_cie_encoding\00", section "llvm.metadata" ; <[17 x i8]*> [#uses=1] +@llvm.dbg.subprogram240 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([17 x i8]* @.str239, i32 0, i32 0), i8* getelementptr ([17 x i8]* @.str239, i32 0, i32 0), i8* getelementptr ([17 x i8]* @.str239, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 266, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite238 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@llvm.dbg.array241 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype110 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*)], section "llvm.metadata" ; <[3 x { }*]*> [#uses=1] +@llvm.dbg.composite242 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array241 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str243 = internal constant [26 x i8] c"classify_object_over_fdes\00", section "llvm.metadata" ; <[26 x i8]*> [#uses=1] +@llvm.dbg.subprogram244 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([26 x i8]* @.str243, i32 0, i32 0), i8* getelementptr ([26 x i8]* @.str243, i32 0, i32 0), i8* getelementptr ([26 x i8]* @.str243, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 599, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite242 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@llvm.dbg.array245 = internal constant [2 x { }*] [{ }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype17 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype72 to { }*)], section "llvm.metadata" ; <[2 x { }*]*> [#uses=1] +@llvm.dbg.composite246 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array245 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str247 = internal constant [17 x i8] c"get_fde_encoding\00", section "llvm.metadata" ; <[17 x i8]*> [#uses=1] +@llvm.dbg.subprogram248 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([17 x i8]* @.str247, i32 0, i32 0), i8* getelementptr ([17 x i8]* @.str247, i32 0, i32 0), i8* getelementptr ([17 x i8]* @.str247, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 311, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite246 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@llvm.dbg.array249 = internal constant [4 x { }*] [{ }* null, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype197 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*)], section "llvm.metadata" ; <[4 x { }*]*> [#uses=1] +@llvm.dbg.composite250 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([4 x { }*]* @llvm.dbg.array249 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str251 = internal constant [9 x i8] c"add_fdes\00", section "llvm.metadata" ; <[9 x i8]*> [#uses=1] +@llvm.dbg.subprogram252 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([9 x i8]* @.str251, i32 0, i32 0), i8* getelementptr ([9 x i8]* @.str251, i32 0, i32 0), i8* getelementptr ([9 x i8]* @.str251, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 654, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite250 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@.str253 = internal constant [28 x i8] c"fde_single_encoding_compare\00", section "llvm.metadata" ; <[28 x i8]*> [#uses=1] +@llvm.dbg.subprogram254 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([28 x i8]* @.str253, i32 0, i32 0), i8* getelementptr ([28 x i8]* @.str253, i32 0, i32 0), i8* getelementptr ([28 x i8]* @.str253, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 338, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite186 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@.str255 = internal constant [27 x i8] c"fde_mixed_encoding_compare\00", section "llvm.metadata" ; <[27 x i8]*> [#uses=1] +@llvm.dbg.subprogram256 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([27 x i8]* @.str255, i32 0, i32 0), i8* getelementptr ([27 x i8]* @.str255, i32 0, i32 0), i8* getelementptr ([27 x i8]* @.str255, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 354, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite186 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@.str257 = internal constant [34 x i8] c"binary_search_mixed_encoding_fdes\00", section "llvm.metadata" ; <[34 x i8]*> [#uses=1] +@llvm.dbg.subprogram258 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([34 x i8]* @.str257, i32 0, i32 0), i8* getelementptr ([34 x i8]* @.str257, i32 0, i32 0), i8* getelementptr ([34 x i8]* @.str257, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 897, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite221 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@.str259 = internal constant [35 x i8] c"binary_search_single_encoding_fdes\00", section "llvm.metadata" ; <[35 x i8]*> [#uses=1] +@llvm.dbg.subprogram260 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([35 x i8]* @.str259, i32 0, i32 0), i8* getelementptr ([35 x i8]* @.str259, i32 0, i32 0), i8* getelementptr ([35 x i8]* @.str259, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 867, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite221 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@llvm.dbg.array261 = internal constant [4 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*)], section "llvm.metadata" ; <[4 x { }*]*> [#uses=1] +@llvm.dbg.composite262 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([4 x { }*]* @llvm.dbg.array261 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str263 = internal constant [19 x i8] c"linear_search_fdes\00", section "llvm.metadata" ; <[19 x i8]*> [#uses=1] +@llvm.dbg.subprogram264 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([19 x i8]* @.str263, i32 0, i32 0), i8* getelementptr ([19 x i8]* @.str263, i32 0, i32 0), i8* getelementptr ([19 x i8]* @.str263, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 771, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite262 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@llvm.dbg.array265 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype17 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype197 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype110 to { }*)], section "llvm.metadata" ; <[3 x { }*]*> [#uses=1] +@llvm.dbg.composite266 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array265 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str267 = internal constant [15 x i8] c"start_fde_sort\00", section "llvm.metadata" ; <[15 x i8]*> [#uses=1] +@llvm.dbg.subprogram268 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([15 x i8]* @.str267, i32 0, i32 0), i8* getelementptr ([15 x i8]* @.str267, i32 0, i32 0), i8* getelementptr ([15 x i8]* @.str267, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 395, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite266 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@llvm.dbg.array269 = internal constant [2 x { }*] [{ }* null, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*)], section "llvm.metadata" ; <[2 x { }*]*> [#uses=1] +@llvm.dbg.composite270 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array269 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str271 = internal constant [23 x i8] c"__register_frame_table\00", section "llvm.metadata" ; <[23 x i8]*> [#uses=1] +@llvm.dbg.subprogram272 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([23 x i8]* @.str271, i32 0, i32 0), i8* getelementptr ([23 x i8]* @.str271, i32 0, i32 0), i8* getelementptr ([23 x i8]* @.str271, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 156, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite270 to { }*), i1 false, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@.str273 = internal constant [17 x i8] c"__register_frame\00", section "llvm.metadata" ; <[17 x i8]*> [#uses=1] +@llvm.dbg.subprogram274 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([17 x i8]* @.str273, i32 0, i32 0), i8* getelementptr ([17 x i8]* @.str273, i32 0, i32 0), i8* getelementptr ([17 x i8]* @.str273, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 112, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite270 to { }*), i1 false, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@llvm.dbg.array275 = internal constant [4 x { }*] [{ }* null, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype197 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype110 to { }*)], section "llvm.metadata" ; <[4 x { }*]*> [#uses=1] +@llvm.dbg.composite276 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([4 x { }*]* @llvm.dbg.array275 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str277 = internal constant [13 x i8] c"end_fde_sort\00", section "llvm.metadata" ; <[13 x i8]*> [#uses=1] +@llvm.dbg.subprogram278 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([13 x i8]* @.str277, i32 0, i32 0), i8* getelementptr ([13 x i8]* @.str277, i32 0, i32 0), i8* getelementptr ([13 x i8]* @.str277, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 564, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite276 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@llvm.dbg.array279 = internal constant [2 x { }*] [{ }* null, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype145 to { }*)], section "llvm.metadata" ; <[2 x { }*]*> [#uses=1] +@llvm.dbg.composite280 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array279 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str281 = internal constant [12 x i8] c"init_object\00", section "llvm.metadata" ; <[12 x i8]*> [#uses=1] +@llvm.dbg.subprogram282 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([12 x i8]* @.str281, i32 0, i32 0), i8* getelementptr ([12 x i8]* @.str281, i32 0, i32 0), i8* getelementptr ([12 x i8]* @.str281, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 717, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite280 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@.str283 = internal constant [14 x i8] c"search_object\00", section "llvm.metadata" ; <[14 x i8]*> [#uses=1] +@llvm.dbg.subprogram284 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([14 x i8]* @.str283, i32 0, i32 0), i8* getelementptr ([14 x i8]* @.str283, i32 0, i32 0), i8* getelementptr ([14 x i8]* @.str283, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 928, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite221 to { }*), i1 true, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@.str285 = internal constant [15 x i8] c"dwarf_eh_bases\00", section "llvm.metadata" ; <[15 x i8]*> [#uses=1] +@llvm.dbg.derivedtype287 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str89, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 93, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.derivedtype288 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([6 x i8]* @.str91, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 94, i64 32, i64 32, i64 32, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@.str289 = internal constant [5 x i8] c"func\00", section "llvm.metadata" ; <[5 x i8]*> [#uses=1] +@llvm.dbg.derivedtype290 = internal constant %llvm.dbg.derivedtype.type { i32 458765, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([5 x i8]* @.str289, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 95, i64 32, i64 32, i64 64, i32 0, { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.array291 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype287 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype288 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype290 to { }*)], section "llvm.metadata" ; <[3 x { }*]*> [#uses=1] +@llvm.dbg.composite292 = internal constant %llvm.dbg.composite.type { i32 458771, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([15 x i8]* @.str285, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*), i32 92, i64 96, i64 32, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array291 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@llvm.dbg.derivedtype293 = internal constant %llvm.dbg.derivedtype.type { i32 458767, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 32, i64 32, i64 0, i32 0, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite292 to { }*) }, section "llvm.metadata" ; <%llvm.dbg.derivedtype.type*> [#uses=1] +@llvm.dbg.array294 = internal constant [3 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype80 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype293 to { }*)], section "llvm.metadata" ; <[3 x { }*]*> [#uses=1] +@llvm.dbg.composite295 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([3 x { }*]* @llvm.dbg.array294 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str296 = internal constant [17 x i8] c"_Unwind_Find_FDE\00", section "llvm.metadata" ; <[17 x i8]*> [#uses=1] +@llvm.dbg.subprogram297 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([17 x i8]* @.str296, i32 0, i32 0), i8* getelementptr ([17 x i8]* @.str296, i32 0, i32 0), i8* getelementptr ([17 x i8]* @.str296, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 972, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite295 to { }*), i1 false, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@seen_objects = internal global %struct.object* null ; <%struct.object**> [#uses=3] +@llvm.dbg.array298 = internal constant [2 x { }*] [{ }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*), { }* bitcast (%llvm.dbg.derivedtype.type* @llvm.dbg.derivedtype87 to { }*)], section "llvm.metadata" ; <[2 x { }*]*> [#uses=1] +@llvm.dbg.composite299 = internal constant %llvm.dbg.composite.type { i32 458773, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 0, i64 0, i64 0, i64 0, i32 0, { }* null, { }* bitcast ([2 x { }*]* @llvm.dbg.array298 to { }*), i32 0 }, section "llvm.metadata" ; <%llvm.dbg.composite.type*> [#uses=1] +@.str300 = internal constant [30 x i8] c"__deregister_frame_info_bases\00", section "llvm.metadata" ; <[30 x i8]*> [#uses=1] +@llvm.dbg.subprogram301 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([30 x i8]* @.str300, i32 0, i32 0), i8* getelementptr ([30 x i8]* @.str300, i32 0, i32 0), i8* getelementptr ([30 x i8]* @.str300, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 175, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite299 to { }*), i1 false, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@.str302 = internal constant [24 x i8] c"__deregister_frame_info\00", section "llvm.metadata" ; <[24 x i8]*> [#uses=1] +@llvm.dbg.subprogram303 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([24 x i8]* @.str302, i32 0, i32 0), i8* getelementptr ([24 x i8]* @.str302, i32 0, i32 0), i8* getelementptr ([24 x i8]* @.str302, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 223, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite299 to { }*), i1 false, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@.str304 = internal constant [19 x i8] c"__deregister_frame\00", section "llvm.metadata" ; <[19 x i8]*> [#uses=1] +@llvm.dbg.subprogram305 = linkonce constant %llvm.dbg.subprogram.type { i32 458798, { }* null, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i8* getelementptr ([19 x i8]* @.str304, i32 0, i32 0), i8* getelementptr ([19 x i8]* @.str304, i32 0, i32 0), i8* getelementptr ([19 x i8]* @.str304, i32 0, i32 0), { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), i32 229, { }* bitcast (%llvm.dbg.composite.type* @llvm.dbg.composite270 to { }*), i1 false, i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] + +define arm_apcscc void @__register_frame_info_bases(i8* %begin, %struct.object* %ob, i8* %tbase, i8* %dbase) nounwind { +entry: + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram172 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 82, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %0 = icmp eq i8* %begin, null ; [#uses=1] + br i1 %0, label %return, label %bb + +bb: ; preds = %entry + %1 = bitcast i8* %begin to i32* ; [#uses=1] + %2 = load i32* %1, align 4 ; [#uses=1] + %3 = icmp eq i32 %2, 0 ; [#uses=1] + br i1 %3, label %return, label %bb1 + +bb1: ; preds = %bb + tail call void @llvm.dbg.stoppoint(i32 85, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %4 = getelementptr %struct.object* %ob, i32 0, i32 0 ; [#uses=1] + store i8* inttoptr (i64 4294967295 to i8*), i8** %4, align 4 + tail call void @llvm.dbg.stoppoint(i32 86, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %5 = getelementptr %struct.object* %ob, i32 0, i32 1 ; [#uses=1] + store i8* %tbase, i8** %5, align 4 + tail call void @llvm.dbg.stoppoint(i32 87, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %6 = getelementptr %struct.object* %ob, i32 0, i32 2 ; [#uses=1] + store i8* %dbase, i8** %6, align 4 + tail call void @llvm.dbg.stoppoint(i32 88, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %7 = bitcast i8* %begin to %struct.dwarf_fde* ; <%struct.dwarf_fde*> [#uses=1] + %8 = getelementptr %struct.object* %ob, i32 0, i32 3, i32 0 ; <%struct.dwarf_fde**> [#uses=1] + store %struct.dwarf_fde* %7, %struct.dwarf_fde** %8, align 4 + tail call void @llvm.dbg.stoppoint(i32 90, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %9 = getelementptr %struct.object* %ob, i32 0, i32 4, i32 0 ; [#uses=1] + store i32 2040, i32* %9 + tail call void @llvm.dbg.stoppoint(i32 96, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 98, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*)) + %10 = load %struct.object** @unseen_objects, align 4 ; <%struct.object*> [#uses=1] + %11 = getelementptr %struct.object* %ob, i32 0, i32 5 ; <%struct.object**> [#uses=1] + store %struct.object* %10, %struct.object** %11, align 4 + tail call void @llvm.dbg.stoppoint(i32 99, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + store %struct.object* %ob, %struct.object** @unseen_objects, align 4 + tail call void @llvm.dbg.stoppoint(i32 101, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 233, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit159 to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram172 to { }*)) + ret void + +return: ; preds = %bb, %entry + tail call void @llvm.dbg.stoppoint(i32 101, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + ret void +} + +declare void @llvm.dbg.func.start({ }*) nounwind readnone + +declare void @llvm.dbg.stoppoint(i32, i32, { }*) nounwind readnone + +declare void @llvm.dbg.region.end({ }*) nounwind readnone + +define internal arm_apcscc i8* @read_sleb128(i8* %p, i32* nocapture %val) nounwind { +entry: + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram28 to { }*)) + br label %bb + +bb: ; preds = %bb, %entry + %indvar = phi i32 [ 0, %entry ], [ %tmp, %bb ] ; [#uses=3] + %result.0 = phi i32 [ 0, %entry ], [ %4, %bb ] ; [#uses=1] + %shift.0 = mul i32 %indvar, 7 ; [#uses=2] + %tmp12 = add i32 %shift.0, 7 ; [#uses=2] + %tmp = add i32 %indvar, 1 ; [#uses=2] + %scevgep = getelementptr i8* %p, i32 %tmp ; [#uses=1] + %p_addr.0 = getelementptr i8* %p, i32 %indvar ; [#uses=1] + %0 = load i8* %p_addr.0, align 1 ; [#uses=2] + %1 = zext i8 %0 to i32 ; [#uses=2] + %2 = and i32 %1, 127 ; [#uses=1] + %3 = shl i32 %2, %shift.0 ; [#uses=1] + %4 = or i32 %3, %result.0 ; [#uses=4] + %5 = icmp slt i8 %0, 0 ; [#uses=1] + br i1 %5, label %bb, label %bb1 + +bb1: ; preds = %bb + tail call void @llvm.dbg.stoppoint(i32 171, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %6 = icmp ugt i32 %tmp12, 31 ; [#uses=1] + br i1 %6, label %bb4, label %bb2 + +bb2: ; preds = %bb1 + %7 = and i32 %1, 64 ; [#uses=1] + %8 = icmp eq i32 %7, 0 ; [#uses=1] + br i1 %8, label %bb4, label %bb3 + +bb3: ; preds = %bb2 + tail call void @llvm.dbg.stoppoint(i32 172, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %9 = shl i32 1, %tmp12 ; [#uses=1] + %10 = sub i32 0, %9 ; [#uses=1] + %11 = or i32 %4, %10 ; [#uses=1] + br label %bb4 + +bb4: ; preds = %bb3, %bb2, %bb1 + %result.1 = phi i32 [ %11, %bb3 ], [ %4, %bb1 ], [ %4, %bb2 ] ; [#uses=1] + tail call void @llvm.dbg.stoppoint(i32 174, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + store i32 %result.1, i32* %val, align 4 + tail call void @llvm.dbg.stoppoint(i32 175, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram28 to { }*)) + ret i8* %scevgep +} + +define arm_apcscc void @__register_frame_info(i8* %begin, %struct.object* %ob) nounwind { +entry: + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram176 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 107, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram172 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 82, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %0 = icmp eq i8* %begin, null ; [#uses=1] + br i1 %0, label %__register_frame_info_bases.exit, label %bb.i + +bb.i: ; preds = %entry + %1 = bitcast i8* %begin to i32* ; [#uses=1] + %2 = load i32* %1, align 4 ; [#uses=1] + %3 = icmp eq i32 %2, 0 ; [#uses=1] + br i1 %3, label %__register_frame_info_bases.exit, label %bb1.i + +bb1.i: ; preds = %bb.i + tail call void @llvm.dbg.stoppoint(i32 85, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %4 = getelementptr %struct.object* %ob, i32 0, i32 0 ; [#uses=1] + store i8* inttoptr (i64 4294967295 to i8*), i8** %4, align 4 + tail call void @llvm.dbg.stoppoint(i32 86, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %5 = getelementptr %struct.object* %ob, i32 0, i32 1 ; [#uses=1] + store i8* null, i8** %5, align 4 + tail call void @llvm.dbg.stoppoint(i32 87, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %6 = getelementptr %struct.object* %ob, i32 0, i32 2 ; [#uses=1] + store i8* null, i8** %6, align 4 + tail call void @llvm.dbg.stoppoint(i32 88, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %7 = bitcast i8* %begin to %struct.dwarf_fde* ; <%struct.dwarf_fde*> [#uses=1] + %8 = getelementptr %struct.object* %ob, i32 0, i32 3, i32 0 ; <%struct.dwarf_fde**> [#uses=1] + store %struct.dwarf_fde* %7, %struct.dwarf_fde** %8, align 4 + tail call void @llvm.dbg.stoppoint(i32 90, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %9 = getelementptr %struct.object* %ob, i32 0, i32 4, i32 0 ; [#uses=1] + store i32 2040, i32* %9 + tail call void @llvm.dbg.stoppoint(i32 96, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 98, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*)) + %10 = load %struct.object** @unseen_objects, align 4 ; <%struct.object*> [#uses=1] + %11 = getelementptr %struct.object* %ob, i32 0, i32 5 ; <%struct.object**> [#uses=1] + store %struct.object* %10, %struct.object** %11, align 4 + tail call void @llvm.dbg.stoppoint(i32 99, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + store %struct.object* %ob, %struct.object** @unseen_objects, align 4 + tail call void @llvm.dbg.stoppoint(i32 101, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 233, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit159 to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram176 to { }*)) + ret void + +__register_frame_info_bases.exit: ; preds = %bb.i, %entry + tail call void @llvm.dbg.stoppoint(i32 108, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram172 to { }*)) + ret void +} + +define arm_apcscc void @__register_frame_info_table_bases(i8* %begin, %struct.object* %ob, i8* %tbase, i8* %dbase) nounwind { +entry: + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram180 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 131, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %0 = getelementptr %struct.object* %ob, i32 0, i32 0 ; [#uses=1] + store i8* inttoptr (i64 4294967295 to i8*), i8** %0, align 4 + tail call void @llvm.dbg.stoppoint(i32 132, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %1 = getelementptr %struct.object* %ob, i32 0, i32 1 ; [#uses=1] + store i8* %tbase, i8** %1, align 4 + tail call void @llvm.dbg.stoppoint(i32 133, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %2 = getelementptr %struct.object* %ob, i32 0, i32 2 ; [#uses=1] + store i8* %dbase, i8** %2, align 4 + tail call void @llvm.dbg.stoppoint(i32 134, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %3 = getelementptr %struct.object* %ob, i32 0, i32 3, i32 0 ; <%struct.dwarf_fde**> [#uses=1] + %.c = bitcast i8* %begin to %struct.dwarf_fde* ; <%struct.dwarf_fde*> [#uses=1] + store %struct.dwarf_fde* %.c, %struct.dwarf_fde** %3 + tail call void @llvm.dbg.stoppoint(i32 137, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %4 = getelementptr %struct.object* %ob, i32 0, i32 4, i32 0 ; [#uses=1] + store i32 2042, i32* %4 + tail call void @llvm.dbg.stoppoint(i32 140, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 142, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*)) + %5 = load %struct.object** @unseen_objects, align 4 ; <%struct.object*> [#uses=1] + %6 = getelementptr %struct.object* %ob, i32 0, i32 5 ; <%struct.object**> [#uses=1] + store %struct.object* %5, %struct.object** %6, align 4 + tail call void @llvm.dbg.stoppoint(i32 143, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + store %struct.object* %ob, %struct.object** @unseen_objects, align 4 + tail call void @llvm.dbg.stoppoint(i32 145, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 146, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram180 to { }*)) + ret void +} + +define arm_apcscc void @__register_frame_info_table(i8* %begin, %struct.object* %ob) nounwind { +entry: + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram184 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 151, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram180 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 131, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %0 = getelementptr %struct.object* %ob, i32 0, i32 0 ; [#uses=1] + store i8* inttoptr (i64 4294967295 to i8*), i8** %0, align 4 + tail call void @llvm.dbg.stoppoint(i32 132, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %1 = getelementptr %struct.object* %ob, i32 0, i32 1 ; [#uses=1] + store i8* null, i8** %1, align 4 + tail call void @llvm.dbg.stoppoint(i32 133, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %2 = getelementptr %struct.object* %ob, i32 0, i32 2 ; [#uses=1] + store i8* null, i8** %2, align 4 + tail call void @llvm.dbg.stoppoint(i32 134, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %3 = getelementptr %struct.object* %ob, i32 0, i32 3, i32 0 ; <%struct.dwarf_fde**> [#uses=1] + %.c.i = bitcast i8* %begin to %struct.dwarf_fde* ; <%struct.dwarf_fde*> [#uses=1] + store %struct.dwarf_fde* %.c.i, %struct.dwarf_fde** %3 + tail call void @llvm.dbg.stoppoint(i32 137, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %4 = getelementptr %struct.object* %ob, i32 0, i32 4, i32 0 ; [#uses=1] + store i32 2042, i32* %4 + tail call void @llvm.dbg.stoppoint(i32 140, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 142, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*)) + %5 = load %struct.object** @unseen_objects, align 4 ; <%struct.object*> [#uses=1] + %6 = getelementptr %struct.object* %ob, i32 0, i32 5 ; <%struct.object**> [#uses=1] + store %struct.object* %5, %struct.object** %6, align 4 + tail call void @llvm.dbg.stoppoint(i32 143, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + store %struct.object* %ob, %struct.object** @unseen_objects, align 4 + tail call void @llvm.dbg.stoppoint(i32 145, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 146, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 152, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram180 to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram184 to { }*)) + ret void +} + +define internal arm_apcscc i32 @fde_unencoded_compare(%struct.object* nocapture %ob, %struct.dwarf_fde* nocapture %x, %struct.dwarf_fde* nocapture %y) nounwind readonly { +entry: + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram188 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 326, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %0 = getelementptr %struct.dwarf_fde* %x, i32 0, i32 2 ; <[0 x i8]*> [#uses=1] + %1 = bitcast [0 x i8]* %0 to i32* ; [#uses=1] + %2 = load i32* %1, align 4 ; [#uses=2] + tail call void @llvm.dbg.stoppoint(i32 327, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %3 = getelementptr %struct.dwarf_fde* %y, i32 0, i32 2 ; <[0 x i8]*> [#uses=1] + %4 = bitcast [0 x i8]* %3 to i32* ; [#uses=1] + %5 = load i32* %4, align 4 ; [#uses=2] + tail call void @llvm.dbg.stoppoint(i32 329, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %6 = icmp ugt i32 %2, %5 ; [#uses=1] + br i1 %6, label %bb4, label %bb1 + +bb1: ; preds = %entry + tail call void @llvm.dbg.stoppoint(i32 331, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %7 = icmp ult i32 %2, %5 ; [#uses=1] + %retval = select i1 %7, i32 -1, i32 0 ; [#uses=1] + ret i32 %retval + +bb4: ; preds = %entry + tail call void @llvm.dbg.stoppoint(i32 333, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + ret i32 1 +} + +define internal arm_apcscc void @frame_downheap(%struct.object* %ob, i32 (%struct.object*, %struct.dwarf_fde*, %struct.dwarf_fde*)* nocapture %fde_compare, %struct.dwarf_fde** nocapture %a, i32 %lo, i32 %hi) { +entry: + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram213 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 483, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + br label %bb5 + +bb: ; preds = %bb5 + %0 = add i32 %j.1, 1 ; [#uses=2] + %1 = icmp slt i32 %0, %hi ; [#uses=1] + br i1 %1, label %bb1, label %bb3 + +bb1: ; preds = %bb + %2 = getelementptr %struct.dwarf_fde** %a, i32 %j.1 ; <%struct.dwarf_fde**> [#uses=1] + %3 = load %struct.dwarf_fde** %2, align 4 ; <%struct.dwarf_fde*> [#uses=1] + %4 = getelementptr %struct.dwarf_fde** %a, i32 %0 ; <%struct.dwarf_fde**> [#uses=1] + %5 = load %struct.dwarf_fde** %4, align 4 ; <%struct.dwarf_fde*> [#uses=1] + %6 = tail call arm_apcscc i32 %fde_compare(%struct.object* %ob, %struct.dwarf_fde* %3, %struct.dwarf_fde* %5) ; [#uses=1] + %.lobit = lshr i32 %6, 31 ; [#uses=1] + %.j.1 = add i32 %.lobit, %j.1 ; [#uses=1] + br label %bb3 + +bb3: ; preds = %bb1, %bb + %j.0 = phi i32 [ %.j.1, %bb1 ], [ %j.1, %bb ] ; [#uses=3] + %7 = getelementptr %struct.dwarf_fde** %a, i32 %i.0 ; <%struct.dwarf_fde**> [#uses=3] + %8 = load %struct.dwarf_fde** %7, align 4 ; <%struct.dwarf_fde*> [#uses=1] + %9 = getelementptr %struct.dwarf_fde** %a, i32 %j.0 ; <%struct.dwarf_fde**> [#uses=3] + %10 = load %struct.dwarf_fde** %9, align 4 ; <%struct.dwarf_fde*> [#uses=1] + %11 = tail call arm_apcscc i32 %fde_compare(%struct.object* %ob, %struct.dwarf_fde* %8, %struct.dwarf_fde* %10) ; [#uses=1] + %12 = icmp slt i32 %11, 0 ; [#uses=1] + br i1 %12, label %bb4, label %return + +bb4: ; preds = %bb3 + %13 = load %struct.dwarf_fde** %7, align 4 ; <%struct.dwarf_fde*> [#uses=1] + %14 = load %struct.dwarf_fde** %9, align 4 ; <%struct.dwarf_fde*> [#uses=1] + store %struct.dwarf_fde* %14, %struct.dwarf_fde** %7, align 4 + store %struct.dwarf_fde* %13, %struct.dwarf_fde** %9, align 4 + br label %bb5 + +bb5: ; preds = %bb4, %entry + %j.1.in.in = phi i32 [ %lo, %entry ], [ %j.0, %bb4 ] ; [#uses=1] + %i.0 = phi i32 [ %lo, %entry ], [ %j.0, %bb4 ] ; [#uses=1] + %j.1.in = shl i32 %j.1.in.in, 1 ; [#uses=1] + %j.1 = or i32 %j.1.in, 1 ; [#uses=5] + %15 = icmp slt i32 %j.1, %hi ; [#uses=1] + br i1 %15, label %bb, label %return + +return: ; preds = %bb5, %bb3 + tail call void @llvm.dbg.stoppoint(i32 498, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram213 to { }*)) + ret void +} + +define internal arm_apcscc void @frame_heapsort(%struct.object* %ob, i32 (%struct.object*, %struct.dwarf_fde*, %struct.dwarf_fde*)* nocapture %fde_compare, %struct.fde_vector* nocapture %erratic) { +entry: + %erratic15 = bitcast %struct.fde_vector* %erratic to i8* ; [#uses=1] + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram217 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 510, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %0 = getelementptr %struct.fde_vector* %erratic, i32 0, i32 2, i32 0 ; <%struct.dwarf_fde**> [#uses=4] + tail call void @llvm.dbg.stoppoint(i32 514, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %1 = getelementptr %struct.fde_vector* %erratic, i32 0, i32 1 ; [#uses=1] + %2 = load i32* %1, align 4 ; [#uses=4] + tail call void @llvm.dbg.stoppoint(i32 520, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %3 = lshr i32 %2, 1 ; [#uses=2] + %m.010 = add i32 %3, -1 ; [#uses=2] + %4 = icmp slt i32 %m.010, 0 ; [#uses=1] + br i1 %4, label %bb4.loopexit, label %bb.nph12 + +bb.nph12: ; preds = %entry + %tmp25 = add i32 %3, -2 ; [#uses=1] + br label %bb + +bb: ; preds = %bb, %bb.nph12 + %indvar21 = phi i32 [ 0, %bb.nph12 ], [ %indvar.next22, %bb ] ; [#uses=3] + %m.011 = sub i32 %m.010, %indvar21 ; [#uses=1] + tail call arm_apcscc void @frame_downheap(%struct.object* %ob, i32 (%struct.object*, %struct.dwarf_fde*, %struct.dwarf_fde*)* %fde_compare, %struct.dwarf_fde** %0, i32 %m.011, i32 %2) + %m.0 = sub i32 %tmp25, %indvar21 ; [#uses=1] + %5 = icmp slt i32 %m.0, 0 ; [#uses=1] + %indvar.next22 = add i32 %indvar21, 1 ; [#uses=1] + br i1 %5, label %bb4.loopexit, label %bb + +bb.nph: ; preds = %bb4.loopexit + %tmp17 = shl i32 %2, 2 ; [#uses=1] + %tmp18 = add i32 %tmp17, 4 ; [#uses=1] + br label %bb3 + +bb3: ; preds = %bb3, %bb.nph + %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb3 ] ; [#uses=3] + %m.18 = sub i32 %m.17, %indvar ; [#uses=1] + %tmp16 = mul i32 %indvar, -4 ; [#uses=1] + %tmp19 = add i32 %tmp16, %tmp18 ; [#uses=1] + %scevgep = getelementptr i8* %erratic15, i32 %tmp19 ; [#uses=1] + %scevgep20 = bitcast i8* %scevgep to %struct.dwarf_fde** ; <%struct.dwarf_fde**> [#uses=2] + %6 = load %struct.dwarf_fde** %0, align 4 ; <%struct.dwarf_fde*> [#uses=1] + %7 = load %struct.dwarf_fde** %scevgep20, align 4 ; <%struct.dwarf_fde*> [#uses=1] + store %struct.dwarf_fde* %7, %struct.dwarf_fde** %0, align 4 + store %struct.dwarf_fde* %6, %struct.dwarf_fde** %scevgep20, align 4 + tail call arm_apcscc void @frame_downheap(%struct.object* %ob, i32 (%struct.object*, %struct.dwarf_fde*, %struct.dwarf_fde*)* %fde_compare, %struct.dwarf_fde** %0, i32 0, i32 %m.18) + %indvar.next = add i32 %indvar, 1 ; [#uses=2] + %exitcond = icmp eq i32 %indvar.next, %m.17 ; [#uses=1] + br i1 %exitcond, label %return, label %bb3 + +bb4.loopexit: ; preds = %bb, %entry + %m.17 = add i32 %2, -1 ; [#uses=3] + tail call void @llvm.dbg.stoppoint(i32 526, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %8 = icmp sgt i32 %m.17, 0 ; [#uses=1] + br i1 %8, label %bb.nph, label %return + +return: ; preds = %bb4.loopexit, %bb3 + tail call void @llvm.dbg.stoppoint(i32 532, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram217 to { }*)) + ret void +} + +define internal arm_apcscc i32 @size_of_encoded_value(i8 zeroext %encoding) nounwind { +entry: + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram227 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 76, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %0 = icmp eq i8 %encoding, -1 ; [#uses=1] + br i1 %0, label %bb7, label %bb1 + +bb1: ; preds = %entry + tail call void @llvm.dbg.stoppoint(i32 79, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %1 = zext i8 %encoding to i32 ; [#uses=1] + %2 = and i32 %1, 7 ; [#uses=1] + switch i32 %2, label %bb6 [ + i32 0, label %bb7 + i32 2, label %bb3 + i32 3, label %bb7 + i32 4, label %bb5 + ] + +bb3: ; preds = %bb1 + tail call void @llvm.dbg.stoppoint(i32 84, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram227 to { }*)) + ret i32 2 + +bb5: ; preds = %bb1 + tail call void @llvm.dbg.stoppoint(i32 88, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + ret i32 8 + +bb6: ; preds = %bb1 + tail call void @llvm.dbg.stoppoint(i32 90, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + tail call arm_apcscc void @abort() noreturn nounwind + unreachable + +bb7: ; preds = %bb1, %bb1, %entry + %.0 = phi i32 [ 0, %entry ], [ 4, %bb1 ], [ 4, %bb1 ] ; [#uses=1] + tail call void @llvm.dbg.stoppoint(i32 90, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + ret i32 %.0 +} + +declare arm_apcscc void @abort() noreturn nounwind + +define internal arm_apcscc i8* @read_encoded_value_with_base(i8 zeroext %encoding, i32 %base, i8* %p, i32* nocapture %val) nounwind { +entry: + %tmp = alloca i32, align 4 ; [#uses=2] + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram236 to { }*)) + call void @llvm.dbg.stoppoint(i32 200, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %0 = icmp eq i8 %encoding, 80 ; [#uses=1] + br i1 %0, label %bb, label %bb2 + +bb: ; preds = %entry + call void @llvm.dbg.stoppoint(i32 203, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %ctg2 = getelementptr i8* %p, i32 3 ; [#uses=1] + %1 = ptrtoint i8* %ctg2 to i32 ; [#uses=1] + %2 = and i32 %1, -4 ; [#uses=2] + call void @llvm.dbg.stoppoint(i32 204, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %3 = inttoptr i32 %2 to i32* ; [#uses=1] + %4 = load i32* %3, align 4 ; [#uses=1] + call void @llvm.dbg.stoppoint(i32 205, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %tmp21 = inttoptr i32 %2 to i8* ; [#uses=1] + %5 = getelementptr i8* %tmp21, i32 4 ; [#uses=1] + br label %bb19 + +bb2: ; preds = %entry + call void @llvm.dbg.stoppoint(i32 209, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %6 = zext i8 %encoding to i32 ; [#uses=2] + %7 = and i32 %6, 15 ; [#uses=1] + switch i32 %7, label %bb12 [ + i32 0, label %bb3 + i32 1, label %bb.i + i32 2, label %bb6 + i32 3, label %bb7 + i32 4, label %bb8 + i32 9, label %bb5 + i32 10, label %bb9 + i32 11, label %bb10 + i32 12, label %bb11 + ] + +bb3: ; preds = %bb2 + call void @llvm.dbg.stoppoint(i32 212, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %8 = bitcast i8* %p to i8** ; [#uses=1] + %9 = load i8** %8, align 1 ; [#uses=1] + %10 = ptrtoint i8* %9 to i32 ; [#uses=1] + call void @llvm.dbg.stoppoint(i32 213, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %11 = getelementptr i8* %p, i32 4 ; [#uses=1] + br label %bb13 + +bb.i: ; preds = %bb.i, %bb2 + %indvar.i = phi i32 [ 0, %bb2 ], [ %18, %bb.i ] ; [#uses=3] + %result.0.i = phi i32 [ 0, %bb2 ], [ %16, %bb.i ] ; [#uses=1] + %p_addr.0.i = getelementptr i8* %p, i32 %indvar.i ; [#uses=1] + %shift.0.i = mul i32 %indvar.i, 7 ; [#uses=1] + %12 = load i8* %p_addr.0.i, align 1 ; [#uses=2] + %13 = zext i8 %12 to i32 ; [#uses=1] + %14 = and i32 %13, 127 ; [#uses=1] + %15 = shl i32 %14, %shift.0.i ; [#uses=1] + %16 = or i32 %15, %result.0.i ; [#uses=2] + %17 = icmp slt i8 %12, 0 ; [#uses=1] + %18 = add i32 %indvar.i, 1 ; [#uses=2] + br i1 %17, label %bb.i, label %read_uleb128.exit + +read_uleb128.exit: ; preds = %bb.i + %scevgep.i = getelementptr i8* %p, i32 %18 ; [#uses=1] + call void @llvm.dbg.stoppoint(i32 220, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram to { }*)) + br label %bb13 + +bb5: ; preds = %bb2 + call void @llvm.dbg.stoppoint(i32 227, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %19 = call arm_apcscc i8* @read_sleb128(i8* %p, i32* %tmp) ; [#uses=1] + call void @llvm.dbg.stoppoint(i32 228, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %20 = load i32* %tmp, align 4 ; [#uses=1] + br label %bb13 + +bb6: ; preds = %bb2 + call void @llvm.dbg.stoppoint(i32 233, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %21 = bitcast i8* %p to i16* ; [#uses=1] + %22 = load i16* %21, align 1 ; [#uses=1] + %23 = zext i16 %22 to i32 ; [#uses=1] + call void @llvm.dbg.stoppoint(i32 234, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %24 = getelementptr i8* %p, i32 2 ; [#uses=1] + br label %bb13 + +bb7: ; preds = %bb2 + call void @llvm.dbg.stoppoint(i32 237, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %25 = bitcast i8* %p to i32* ; [#uses=1] + %26 = load i32* %25, align 1 ; [#uses=1] + call void @llvm.dbg.stoppoint(i32 238, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %27 = getelementptr i8* %p, i32 4 ; [#uses=1] + br label %bb13 + +bb8: ; preds = %bb2 + call void @llvm.dbg.stoppoint(i32 241, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %28 = bitcast i8* %p to i64* ; [#uses=1] + %29 = load i64* %28, align 1 ; [#uses=1] + %30 = trunc i64 %29 to i32 ; [#uses=1] + call void @llvm.dbg.stoppoint(i32 242, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %31 = getelementptr i8* %p, i32 8 ; [#uses=1] + br label %bb13 + +bb9: ; preds = %bb2 + call void @llvm.dbg.stoppoint(i32 246, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %32 = bitcast i8* %p to i16* ; [#uses=1] + %33 = load i16* %32, align 1 ; [#uses=1] + %34 = sext i16 %33 to i32 ; [#uses=1] + call void @llvm.dbg.stoppoint(i32 247, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %35 = getelementptr i8* %p, i32 2 ; [#uses=1] + br label %bb13 + +bb10: ; preds = %bb2 + call void @llvm.dbg.stoppoint(i32 250, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %36 = bitcast i8* %p to i32* ; [#uses=1] + %37 = load i32* %36, align 1 ; [#uses=1] + call void @llvm.dbg.stoppoint(i32 251, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %38 = getelementptr i8* %p, i32 4 ; [#uses=1] + br label %bb13 + +bb11: ; preds = %bb2 + call void @llvm.dbg.stoppoint(i32 254, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %39 = bitcast i8* %p to i64* ; [#uses=1] + %40 = load i64* %39, align 1 ; [#uses=1] + %41 = trunc i64 %40 to i32 ; [#uses=1] + call void @llvm.dbg.stoppoint(i32 255, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %42 = getelementptr i8* %p, i32 8 ; [#uses=1] + br label %bb13 + +bb12: ; preds = %bb2 + call void @llvm.dbg.stoppoint(i32 259, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + call arm_apcscc void @abort() noreturn nounwind + unreachable + +bb13: ; preds = %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %read_uleb128.exit, %bb3 + %p_addr.1 = phi i8* [ %42, %bb11 ], [ %38, %bb10 ], [ %35, %bb9 ], [ %19, %bb5 ], [ %31, %bb8 ], [ %27, %bb7 ], [ %24, %bb6 ], [ %scevgep.i, %read_uleb128.exit ], [ %11, %bb3 ] ; [#uses=3] + %result.1 = phi i32 [ %41, %bb11 ], [ %37, %bb10 ], [ %34, %bb9 ], [ %20, %bb5 ], [ %30, %bb8 ], [ %26, %bb7 ], [ %23, %bb6 ], [ %16, %read_uleb128.exit ], [ %10, %bb3 ] ; [#uses=3] + call void @llvm.dbg.stoppoint(i32 262, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %43 = icmp eq i32 %result.1, 0 ; [#uses=1] + br i1 %43, label %bb19, label %bb14 + +bb14: ; preds = %bb13 + call void @llvm.dbg.stoppoint(i32 264, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %44 = and i32 %6, 112 ; [#uses=1] + %45 = icmp eq i32 %44, 16 ; [#uses=1] + br i1 %45, label %bb15, label %bb17 + +bb15: ; preds = %bb14 + %46 = ptrtoint i8* %p to i32 ; [#uses=1] + br label %bb17 + +bb17: ; preds = %bb15, %bb14 + %iftmp.9.0 = phi i32 [ %46, %bb15 ], [ %base, %bb14 ] ; [#uses=1] + %47 = add i32 %iftmp.9.0, %result.1 ; [#uses=2] + call void @llvm.dbg.stoppoint(i32 266, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %48 = icmp slt i8 %encoding, 0 ; [#uses=1] + br i1 %48, label %bb18, label %bb19 + +bb18: ; preds = %bb17 + call void @llvm.dbg.stoppoint(i32 267, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + %49 = inttoptr i32 %47 to i32* ; [#uses=1] + %50 = load i32* %49, align 4 ; [#uses=1] + br label %bb19 + +bb19: ; preds = %bb18, %bb17, %bb13, %bb + %p_addr.0 = phi i8* [ %5, %bb ], [ %p_addr.1, %bb18 ], [ %p_addr.1, %bb13 ], [ %p_addr.1, %bb17 ] ; [#uses=1] + %result.0 = phi i32 [ %4, %bb ], [ %50, %bb18 ], [ %result.1, %bb13 ], [ %47, %bb17 ] ; [#uses=1] + call void @llvm.dbg.stoppoint(i32 271, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + store i32 %result.0, i32* %val, align 4 + call void @llvm.dbg.stoppoint(i32 272, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram236 to { }*)) + ret i8* %p_addr.0 +} + +define internal arm_apcscc i32 @get_cie_encoding(%struct.dwarf_cie* %cie) nounwind { +entry: + %cie37 = bitcast %struct.dwarf_cie* %cie to i8* ; [#uses=1] + %stmp = alloca i32, align 4 ; [#uses=1] + %dummy = alloca i32, align 4 ; [#uses=1] + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram240 to { }*)) + call void @llvm.dbg.stoppoint(i32 272, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %0 = getelementptr %struct.dwarf_cie* %cie, i32 0, i32 3, i32 0 ; [#uses=2] + call void @llvm.dbg.stoppoint(i32 273, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %1 = load i8* %0, align 1 ; [#uses=1] + %2 = icmp eq i8 %1, 122 ; [#uses=1] + br i1 %2, label %bb1, label %bb13 + +bb1: ; preds = %entry + %3 = call arm_apcscc i32 @strlen(i8* %0) nounwind readonly ; [#uses=2] + call void @llvm.dbg.stoppoint(i32 277, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %tmp38 = add i32 %3, 10 ; [#uses=1] + br label %bb.i + +bb.i: ; preds = %bb.i, %bb1 + %indvar.i = phi i32 [ 0, %bb1 ], [ %6, %bb.i ] ; [#uses=3] + %tmp39 = add i32 %indvar.i, %tmp38 ; [#uses=1] + %p_addr.0.i = getelementptr i8* %cie37, i32 %tmp39 ; [#uses=1] + %4 = load i8* %p_addr.0.i, align 1 ; [#uses=1] + %5 = icmp slt i8 %4, 0 ; [#uses=1] + %6 = add i32 %indvar.i, 1 ; [#uses=1] + br i1 %5, label %bb.i, label %read_uleb128.exit + +read_uleb128.exit: ; preds = %bb.i + call void @llvm.dbg.stoppoint(i32 276, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram to { }*)) + %.sum40 = add i32 %indvar.i, %3 ; [#uses=1] + %.sum31 = add i32 %.sum40, 2 ; [#uses=1] + %scevgep.i = getelementptr %struct.dwarf_cie* %cie, i32 0, i32 3, i32 %.sum31 ; [#uses=1] + call void @llvm.dbg.stoppoint(i32 278, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram to { }*)) + %7 = call arm_apcscc i8* @read_sleb128(i8* %scevgep.i, i32* %stmp) ; [#uses=3] + call void @llvm.dbg.stoppoint(i32 279, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %8 = getelementptr %struct.dwarf_cie* %cie, i32 0, i32 2 ; [#uses=1] + %9 = load i8* %8, align 1 ; [#uses=1] + %10 = icmp eq i8 %9, 1 ; [#uses=1] + br i1 %10, label %bb2, label %bb.i20 + +bb2: ; preds = %read_uleb128.exit + call void @llvm.dbg.stoppoint(i32 280, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %11 = getelementptr i8* %7, i32 1 ; [#uses=1] + br label %bb.i28 + +bb.i20: ; preds = %bb.i20, %read_uleb128.exit + %indvar.i15 = phi i32 [ 0, %read_uleb128.exit ], [ %14, %bb.i20 ] ; [#uses=2] + %p_addr.0.i18 = getelementptr i8* %7, i32 %indvar.i15 ; [#uses=1] + %12 = load i8* %p_addr.0.i18, align 1 ; [#uses=1] + %13 = icmp slt i8 %12, 0 ; [#uses=1] + %14 = add i32 %indvar.i15, 1 ; [#uses=2] + br i1 %13, label %bb.i20, label %read_uleb128.exit22 + +read_uleb128.exit22: ; preds = %bb.i20 + %scevgep.i21 = getelementptr i8* %7, i32 %14 ; [#uses=1] + tail call void @llvm.dbg.stoppoint(i32 149, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + br label %bb.i28 + +bb.i28: ; preds = %bb.i28, %read_uleb128.exit22, %bb2 + %p.0.ph = phi i8* [ %11, %bb2 ], [ %scevgep.i21, %read_uleb128.exit22 ], [ %p.0.ph, %bb.i28 ] ; [#uses=3] + %indvar.i23 = phi i32 [ 0, %read_uleb128.exit22 ], [ 0, %bb2 ], [ %17, %bb.i28 ] ; [#uses=2] + %p_addr.0.i26 = getelementptr i8* %p.0.ph, i32 %indvar.i23 ; [#uses=1] + %15 = load i8* %p_addr.0.i26, align 1 ; [#uses=1] + %16 = icmp slt i8 %15, 0 ; [#uses=1] + %17 = add i32 %indvar.i23, 1 ; [#uses=2] + br i1 %16, label %bb.i28, label %read_uleb128.exit30 + +read_uleb128.exit30: ; preds = %bb.i28 + %scevgep.i29 = getelementptr i8* %p.0.ph, i32 %17 ; [#uses=1] + tail call void @llvm.dbg.stoppoint(i32 149, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit14 to { }*)) + br label %bb5 + +bb5: ; preds = %bb5.backedge, %read_uleb128.exit30 + %indvar = phi i32 [ 1, %read_uleb128.exit30 ], [ %phitmp, %bb5.backedge ] ; [#uses=2] + %p.2 = phi i8* [ %scevgep.i29, %read_uleb128.exit30 ], [ %p.2.be, %bb5.backedge ] ; [#uses=4] + %aug.0 = getelementptr %struct.dwarf_cie* %cie, i32 0, i32 4, i32 %indvar ; [#uses=1] + %18 = load i8* %aug.0, align 1 ; [#uses=1] + switch i8 %18, label %bb13 [ + i8 82, label %bb6 + i8 80, label %bb8 + i8 76, label %bb10 + ] + +bb6: ; preds = %bb5 + call void @llvm.dbg.stoppoint(i32 290, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %19 = load i8* %p.2, align 1 ; [#uses=1] + %20 = zext i8 %19 to i32 ; [#uses=1] + call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram240 to { }*)) + ret i32 %20 + +bb8: ; preds = %bb5 + %21 = load i8* %p.2, align 1 ; [#uses=1] + %22 = and i8 %21, 127 ; [#uses=1] + %23 = getelementptr i8* %p.2, i32 1 ; [#uses=1] + %24 = call arm_apcscc i8* @read_encoded_value_with_base(i8 zeroext %22, i32 0, i8* %23, i32* %dummy) ; [#uses=1] + br label %bb5.backedge + +bb10: ; preds = %bb5 + %25 = getelementptr i8* %p.2, i32 1 ; [#uses=1] + br label %bb5.backedge + +bb5.backedge: ; preds = %bb10, %bb8 + %p.2.be = phi i8* [ %24, %bb8 ], [ %25, %bb10 ] ; [#uses=1] + %phitmp = add i32 %indvar, 1 ; [#uses=1] + br label %bb5 + +bb13: ; preds = %bb5, %entry + call void @llvm.dbg.stoppoint(i32 305, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + ret i32 0 +} + +declare arm_apcscc i32 @strlen(i8* nocapture) nounwind readonly + +define internal arm_apcscc i32 @classify_object_over_fdes(%struct.object* nocapture %ob, %struct.dwarf_fde* %this_fde) nounwind { +entry: + %pc_begin = alloca i32, align 4 ; [#uses=2] + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram244 to { }*)) + call void @llvm.dbg.stoppoint(i32 603, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %0 = getelementptr %struct.object* %ob, i32 0, i32 0 ; [#uses=2] + %1 = getelementptr %struct.object* %ob, i32 0, i32 4, i32 0 ; [#uses=3] + %2 = getelementptr %struct.object* %ob, i32 0, i32 1 ; [#uses=1] + %3 = getelementptr %struct.object* %ob, i32 0, i32 2 ; [#uses=1] + br label %bb13 + +bb: ; preds = %bb13 + %4 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 1 ; [#uses=2] + %5 = load i32* %4, align 1 ; [#uses=2] + %6 = icmp eq i32 %5, 0 ; [#uses=1] + br i1 %6, label %bb12, label %bb1 + +bb1: ; preds = %bb + %7 = bitcast i32* %4 to i8* ; [#uses=1] + %8 = sub i32 0, %5 ; [#uses=1] + %9 = getelementptr i8* %7, i32 %8 ; [#uses=1] + %10 = bitcast i8* %9 to %struct.dwarf_cie* ; <%struct.dwarf_cie*> [#uses=5] + %11 = icmp eq %struct.dwarf_cie* %10, %last_cie.2 ; [#uses=1] + br i1 %11, label %bb6, label %bb2 + +bb2: ; preds = %bb1 + %12 = call arm_apcscc i32 @get_cie_encoding(%struct.dwarf_cie* %10) ; [#uses=7] + %13 = trunc i32 %12 to i8 ; [#uses=1] + %14 = icmp eq i8 %13, -1 ; [#uses=1] + br i1 %14, label %base_from_object.exit, label %bb1.i + +bb1.i: ; preds = %bb2 + %15 = and i32 %12, 112 ; [#uses=1] + switch i32 %15, label %bb5.i [ + i32 0, label %base_from_object.exit + i32 16, label %base_from_object.exit + i32 32, label %bb3.i + i32 48, label %bb4.i + i32 80, label %base_from_object.exit + ] + +bb3.i: ; preds = %bb1.i + %16 = load i8** %2, align 4 ; [#uses=1] + %17 = ptrtoint i8* %16 to i32 ; [#uses=1] + br label %base_from_object.exit + +bb4.i: ; preds = %bb1.i + %18 = load i8** %3, align 4 ; [#uses=1] + %19 = ptrtoint i8* %18 to i32 ; [#uses=1] + br label %base_from_object.exit + +bb5.i: ; preds = %bb1.i + call void @llvm.dbg.stoppoint(i32 605, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram154 to { }*)) + call void @llvm.dbg.stoppoint(i32 616, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*)) + call void @llvm.dbg.stoppoint(i32 617, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*)) + call void @llvm.dbg.stoppoint(i32 621, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*)) nounwind + call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + call arm_apcscc void @abort() noreturn nounwind + unreachable + +base_from_object.exit: ; preds = %bb4.i, %bb3.i, %bb1.i, %bb1.i, %bb1.i, %bb2 + %20 = phi i32 [ %19, %bb4.i ], [ %17, %bb3.i ], [ 0, %bb2 ], [ 0, %bb1.i ], [ 0, %bb1.i ], [ 0, %bb1.i ] ; [#uses=3] + %21 = load i32* %1 ; [#uses=4] + %22 = and i32 %21, 2040 ; [#uses=1] + %23 = icmp eq i32 %22, 2040 ; [#uses=1] + br i1 %23, label %bb3, label %bb4 + +bb3: ; preds = %base_from_object.exit + %24 = shl i32 %12, 3 ; [#uses=1] + %25 = and i32 %24, 2040 ; [#uses=1] + %26 = and i32 %21, -2041 ; [#uses=1] + %27 = or i32 %26, %25 ; [#uses=1] + store i32 %27, i32* %1 + br label %bb6 + +bb4: ; preds = %base_from_object.exit + %28 = lshr i32 %21, 3 ; [#uses=1] + %29 = and i32 %28, 255 ; [#uses=1] + %30 = icmp eq i32 %29, %12 ; [#uses=1] + br i1 %30, label %bb6, label %bb5 + +bb5: ; preds = %bb4 + %31 = or i32 %21, 4 ; [#uses=1] + store i32 %31, i32* %1 + br label %bb6 + +bb6: ; preds = %bb5, %bb4, %bb3, %bb1 + %base.0 = phi i32 [ %20, %bb3 ], [ %20, %bb5 ], [ %base.2, %bb1 ], [ %20, %bb4 ] ; [#uses=4] + %encoding.0 = phi i32 [ %12, %bb3 ], [ %12, %bb5 ], [ %encoding.2, %bb1 ], [ %12, %bb4 ] ; [#uses=4] + %last_cie.0 = phi %struct.dwarf_cie* [ %10, %bb3 ], [ %10, %bb5 ], [ %last_cie.2, %bb1 ], [ %10, %bb4 ] ; <%struct.dwarf_cie*> [#uses=3] + %32 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 2, i32 0 ; [#uses=1] + %33 = trunc i32 %encoding.0 to i8 ; [#uses=2] + %34 = call arm_apcscc i8* @read_encoded_value_with_base(i8 zeroext %33, i32 %base.0, i8* %32, i32* %pc_begin) ; [#uses=0] + %35 = call arm_apcscc i32 @size_of_encoded_value(i8 zeroext %33) ; [#uses=2] + %36 = icmp ugt i32 %35, 3 ; [#uses=1] + br i1 %36, label %bb9, label %bb7 + +bb7: ; preds = %bb6 + %37 = shl i32 %35, 3 ; [#uses=1] + %38 = shl i32 1, %37 ; [#uses=1] + %39 = add i32 %38, -1 ; [#uses=1] + br label %bb9 + +bb9: ; preds = %bb7, %bb6 + %mask.0 = phi i32 [ %39, %bb7 ], [ -1, %bb6 ] ; [#uses=1] + %40 = load i32* %pc_begin, align 4 ; [#uses=2] + %41 = and i32 %40, %mask.0 ; [#uses=1] + %42 = icmp eq i32 %41, 0 ; [#uses=1] + br i1 %42, label %bb12, label %bb10 + +bb10: ; preds = %bb9 + %43 = add i32 %count.1, 1 ; [#uses=2] + %44 = load i8** %0, align 4 ; [#uses=1] + %45 = inttoptr i32 %40 to i8* ; [#uses=2] + %46 = icmp ugt i8* %44, %45 ; [#uses=1] + br i1 %46, label %bb11, label %bb12 + +bb11: ; preds = %bb10 + store i8* %45, i8** %0, align 4 + br label %bb12 + +bb12: ; preds = %bb11, %bb10, %bb9, %bb + %base.1 = phi i32 [ %base.0, %bb11 ], [ %base.2, %bb ], [ %base.0, %bb9 ], [ %base.0, %bb10 ] ; [#uses=1] + %encoding.1 = phi i32 [ %encoding.0, %bb11 ], [ %encoding.2, %bb ], [ %encoding.0, %bb9 ], [ %encoding.0, %bb10 ] ; [#uses=1] + %count.0 = phi i32 [ %43, %bb11 ], [ %count.1, %bb ], [ %count.1, %bb9 ], [ %43, %bb10 ] ; [#uses=1] + %last_cie.1 = phi %struct.dwarf_cie* [ %last_cie.0, %bb11 ], [ %last_cie.2, %bb ], [ %last_cie.0, %bb9 ], [ %last_cie.0, %bb10 ] ; <%struct.dwarf_cie*> [#uses=1] + %47 = bitcast %struct.dwarf_fde* %this_fde_addr.0 to i8* ; [#uses=1] + %48 = load i32* %51, align 1 ; [#uses=1] + %.sum.i = add i32 %48, 4 ; [#uses=1] + %49 = getelementptr i8* %47, i32 %.sum.i ; [#uses=1] + %50 = bitcast i8* %49 to %struct.dwarf_fde* ; <%struct.dwarf_fde*> [#uses=1] + br label %bb13 + +bb13: ; preds = %bb12, %entry + %base.2 = phi i32 [ 0, %entry ], [ %base.1, %bb12 ] ; [#uses=2] + %encoding.2 = phi i32 [ 0, %entry ], [ %encoding.1, %bb12 ] ; [#uses=2] + %count.1 = phi i32 [ 0, %entry ], [ %count.0, %bb12 ] ; [#uses=4] + %this_fde_addr.0 = phi %struct.dwarf_fde* [ %this_fde, %entry ], [ %50, %bb12 ] ; <%struct.dwarf_fde*> [#uses=4] + %last_cie.2 = phi %struct.dwarf_cie* [ null, %entry ], [ %last_cie.1, %bb12 ] ; <%struct.dwarf_cie*> [#uses=3] + %51 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 0 ; [#uses=2] + %52 = load i32* %51, align 1 ; [#uses=1] + %53 = icmp eq i32 %52, 0 ; [#uses=1] + br i1 %53, label %bb14, label %bb + +bb14: ; preds = %bb13 + call void @llvm.dbg.stoppoint(i32 605, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram154 to { }*)) + call void @llvm.dbg.stoppoint(i32 649, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram244 to { }*)) + ret i32 %count.1 +} + +define internal arm_apcscc void @add_fdes(%struct.object* nocapture %ob, %struct.fde_accumulator* nocapture %accu, %struct.dwarf_fde* %this_fde) nounwind { +entry: + %pc_begin = alloca i32, align 4 ; [#uses=2] + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram252 to { }*)) + call void @llvm.dbg.stoppoint(i32 656, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %0 = getelementptr %struct.object* %ob, i32 0, i32 4, i32 0 ; [#uses=2] + %1 = load i32* %0 ; [#uses=1] + %2 = lshr i32 %1, 3 ; [#uses=3] + %3 = and i32 %2, 255 ; [#uses=1] + call void @llvm.dbg.stoppoint(i32 657, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %4 = trunc i32 %2 to i8 ; [#uses=1] + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*)) nounwind + call void @llvm.dbg.stoppoint(i32 242, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %5 = icmp eq i8 %4, -1 ; [#uses=1] + br i1 %5, label %bb12.preheader, label %bb1.i + +bb1.i: ; preds = %entry + call void @llvm.dbg.stoppoint(i32 245, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %6 = and i32 %2, 112 ; [#uses=1] + switch i32 %6, label %bb5.i [ + i32 0, label %bb12.preheader + i32 16, label %bb12.preheader + i32 32, label %bb3.i + i32 48, label %bb4.i + i32 80, label %bb12.preheader + ] + +bb12.preheader: ; preds = %bb4.i, %bb3.i, %bb1.i, %bb1.i, %bb1.i, %entry + %base.2.ph = phi i32 [ %15, %bb4.i ], [ %12, %bb3.i ], [ 0, %entry ], [ 0, %bb1.i ], [ 0, %bb1.i ], [ 0, %bb1.i ] ; [#uses=1] + %7 = getelementptr %struct.fde_accumulator* %accu, i32 0, i32 0 ; <%struct.fde_vector**> [#uses=1] + %8 = getelementptr %struct.object* %ob, i32 0, i32 1 ; [#uses=1] + %9 = getelementptr %struct.object* %ob, i32 0, i32 2 ; [#uses=1] + br label %bb12 + +bb3.i: ; preds = %bb1.i + call void @llvm.dbg.stoppoint(i32 253, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %10 = getelementptr %struct.object* %ob, i32 0, i32 1 ; [#uses=1] + %11 = load i8** %10, align 4 ; [#uses=1] + %12 = ptrtoint i8* %11 to i32 ; [#uses=1] + br label %bb12.preheader + +bb4.i: ; preds = %bb1.i + call void @llvm.dbg.stoppoint(i32 255, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %13 = getelementptr %struct.object* %ob, i32 0, i32 2 ; [#uses=1] + %14 = load i8** %13, align 4 ; [#uses=1] + %15 = ptrtoint i8* %14 to i32 ; [#uses=1] + br label %bb12.preheader + +bb5.i: ; preds = %bb1.i + call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + call arm_apcscc void @abort() noreturn nounwind + unreachable + +bb: ; preds = %bb12 + %16 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 1 ; [#uses=2] + %17 = load i32* %16, align 1 ; [#uses=2] + %18 = icmp eq i32 %17, 0 ; [#uses=1] + br i1 %18, label %bb11, label %bb1 + +bb1: ; preds = %bb + %19 = load i32* %0 ; [#uses=1] + %20 = and i32 %19, 4 ; [#uses=1] + %21 = icmp eq i32 %20, 0 ; [#uses=1] + br i1 %21, label %bb4, label %bb2 + +bb2: ; preds = %bb1 + %22 = bitcast i32* %16 to i8* ; [#uses=1] + %23 = sub i32 0, %17 ; [#uses=1] + %24 = getelementptr i8* %22, i32 %23 ; [#uses=1] + %25 = bitcast i8* %24 to %struct.dwarf_cie* ; <%struct.dwarf_cie*> [#uses=8] + %26 = icmp eq %struct.dwarf_cie* %25, %last_cie.2 ; [#uses=1] + br i1 %26, label %bb4, label %bb3 + +bb3: ; preds = %bb2 + %27 = call arm_apcscc i32 @get_cie_encoding(%struct.dwarf_cie* %25) ; [#uses=8] + %28 = trunc i32 %27 to i8 ; [#uses=1] + %29 = icmp eq i8 %28, -1 ; [#uses=1] + br i1 %29, label %bb4, label %bb1.i14 + +bb1.i14: ; preds = %bb3 + %30 = and i32 %27, 112 ; [#uses=1] + switch i32 %30, label %bb5.i17 [ + i32 0, label %bb4 + i32 16, label %bb4 + i32 32, label %bb3.i15 + i32 48, label %bb4.i16 + i32 80, label %bb4 + ] + +bb3.i15: ; preds = %bb1.i14 + %31 = load i8** %8, align 4 ; [#uses=1] + %32 = ptrtoint i8* %31 to i32 ; [#uses=1] + br label %bb4 + +bb4.i16: ; preds = %bb1.i14 + %33 = load i8** %9, align 4 ; [#uses=1] + %34 = ptrtoint i8* %33 to i32 ; [#uses=1] + br label %bb4 + +bb5.i17: ; preds = %bb1.i14 + call void @llvm.dbg.stoppoint(i32 659, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram154 to { }*)) + call void @llvm.dbg.stoppoint(i32 671, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*)) + call void @llvm.dbg.stoppoint(i32 672, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*)) + call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + call arm_apcscc void @abort() noreturn nounwind + unreachable + +bb4: ; preds = %bb4.i16, %bb3.i15, %bb1.i14, %bb1.i14, %bb1.i14, %bb3, %bb2, %bb1 + %base.0 = phi i32 [ %34, %bb4.i16 ], [ %32, %bb3.i15 ], [ %base.2, %bb1 ], [ %base.2, %bb2 ], [ 0, %bb3 ], [ 0, %bb1.i14 ], [ 0, %bb1.i14 ], [ 0, %bb1.i14 ] ; [#uses=5] + %encoding.0 = phi i32 [ %27, %bb3.i15 ], [ %27, %bb4.i16 ], [ %encoding.2, %bb1 ], [ %encoding.2, %bb2 ], [ %27, %bb3 ], [ %27, %bb1.i14 ], [ %27, %bb1.i14 ], [ %27, %bb1.i14 ] ; [#uses=6] + %last_cie.0 = phi %struct.dwarf_cie* [ %25, %bb3.i15 ], [ %25, %bb4.i16 ], [ %last_cie.2, %bb1 ], [ %last_cie.2, %bb2 ], [ %25, %bb3 ], [ %25, %bb1.i14 ], [ %25, %bb1.i14 ], [ %25, %bb1.i14 ] ; <%struct.dwarf_cie*> [#uses=4] + %35 = icmp eq i32 %encoding.0, 0 ; [#uses=1] + br i1 %35, label %bb5, label %bb6 + +bb5: ; preds = %bb4 + %36 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 2 ; <[0 x i8]*> [#uses=1] + %37 = bitcast [0 x i8]* %36 to i32* ; [#uses=1] + %38 = load i32* %37, align 4 ; [#uses=1] + %39 = icmp eq i32 %38, 0 ; [#uses=1] + br i1 %39, label %bb11, label %bb10 + +bb6: ; preds = %bb4 + %40 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 2, i32 0 ; [#uses=1] + %41 = trunc i32 %encoding.0 to i8 ; [#uses=2] + %42 = call arm_apcscc i8* @read_encoded_value_with_base(i8 zeroext %41, i32 %base.0, i8* %40, i32* %pc_begin) ; [#uses=0] + %43 = call arm_apcscc i32 @size_of_encoded_value(i8 zeroext %41) ; [#uses=2] + %44 = icmp ugt i32 %43, 3 ; [#uses=1] + br i1 %44, label %bb9, label %bb7 + +bb7: ; preds = %bb6 + %45 = shl i32 %43, 3 ; [#uses=1] + %46 = shl i32 1, %45 ; [#uses=1] + %47 = add i32 %46, -1 ; [#uses=1] + br label %bb9 + +bb9: ; preds = %bb7, %bb6 + %mask.0 = phi i32 [ %47, %bb7 ], [ -1, %bb6 ] ; [#uses=1] + %48 = load i32* %pc_begin, align 4 ; [#uses=1] + %49 = and i32 %48, %mask.0 ; [#uses=1] + %50 = icmp eq i32 %49, 0 ; [#uses=1] + br i1 %50, label %bb11, label %bb10 + +bb10: ; preds = %bb9, %bb5 + %51 = load %struct.fde_vector** %7, align 4 ; <%struct.fde_vector*> [#uses=3] + %52 = icmp eq %struct.fde_vector* %51, null ; [#uses=1] + br i1 %52, label %bb11, label %bb.i + +bb.i: ; preds = %bb10 + %53 = getelementptr %struct.fde_vector* %51, i32 0, i32 1 ; [#uses=2] + %54 = load i32* %53, align 4 ; [#uses=2] + %55 = getelementptr %struct.fde_vector* %51, i32 0, i32 2, i32 %54 ; <%struct.dwarf_fde**> [#uses=1] + store %struct.dwarf_fde* %this_fde_addr.0, %struct.dwarf_fde** %55, align 4 + %56 = add i32 %54, 1 ; [#uses=1] + store i32 %56, i32* %53, align 4 + br label %bb11 + +bb11: ; preds = %bb.i, %bb10, %bb9, %bb5, %bb + %base.1 = phi i32 [ %base.0, %bb.i ], [ %base.2, %bb ], [ %base.0, %bb5 ], [ %base.0, %bb9 ], [ %base.0, %bb10 ] ; [#uses=1] + %encoding.1 = phi i32 [ %encoding.0, %bb.i ], [ %encoding.2, %bb ], [ %encoding.0, %bb5 ], [ %encoding.0, %bb9 ], [ %encoding.0, %bb10 ] ; [#uses=1] + %last_cie.1 = phi %struct.dwarf_cie* [ %last_cie.0, %bb.i ], [ %last_cie.2, %bb ], [ %last_cie.0, %bb5 ], [ %last_cie.0, %bb9 ], [ %last_cie.0, %bb10 ] ; <%struct.dwarf_cie*> [#uses=1] + %57 = bitcast %struct.dwarf_fde* %this_fde_addr.0 to i8* ; [#uses=1] + %58 = load i32* %61, align 1 ; [#uses=1] + %.sum.i = add i32 %58, 4 ; [#uses=1] + %59 = getelementptr i8* %57, i32 %.sum.i ; [#uses=1] + %60 = bitcast i8* %59 to %struct.dwarf_fde* ; <%struct.dwarf_fde*> [#uses=1] + br label %bb12 + +bb12: ; preds = %bb11, %bb12.preheader + %base.2 = phi i32 [ %base.1, %bb11 ], [ %base.2.ph, %bb12.preheader ] ; [#uses=3] + %this_fde_addr.0 = phi %struct.dwarf_fde* [ %60, %bb11 ], [ %this_fde, %bb12.preheader ] ; <%struct.dwarf_fde*> [#uses=6] + %encoding.2 = phi i32 [ %encoding.1, %bb11 ], [ %3, %bb12.preheader ] ; [#uses=3] + %last_cie.2 = phi %struct.dwarf_cie* [ %last_cie.1, %bb11 ], [ null, %bb12.preheader ] ; <%struct.dwarf_cie*> [#uses=4] + %61 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 0 ; [#uses=2] + %62 = load i32* %61, align 1 ; [#uses=1] + %63 = icmp eq i32 %62, 0 ; [#uses=1] + br i1 %63, label %return, label %bb + +return: ; preds = %bb12 + call void @llvm.dbg.stoppoint(i32 659, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram154 to { }*)) + call void @llvm.dbg.stoppoint(i32 708, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram252 to { }*)) + ret void +} + +define internal arm_apcscc i32 @fde_single_encoding_compare(%struct.object* nocapture %ob, %struct.dwarf_fde* %x, %struct.dwarf_fde* %y) nounwind { +entry: + %y_ptr = alloca i32, align 4 ; [#uses=2] + %x_ptr = alloca i32, align 4 ; [#uses=2] + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram254 to { }*)) + call void @llvm.dbg.stoppoint(i32 341, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %0 = getelementptr %struct.object* %ob, i32 0, i32 4, i32 0 ; [#uses=2] + %1 = load i32* %0 ; [#uses=1] + %2 = lshr i32 %1, 3 ; [#uses=2] + %3 = trunc i32 %2 to i8 ; [#uses=2] + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*)) nounwind + call void @llvm.dbg.stoppoint(i32 242, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %4 = icmp eq i8 %3, -1 ; [#uses=1] + br i1 %4, label %base_from_object.exit, label %bb1.i + +bb1.i: ; preds = %entry + call void @llvm.dbg.stoppoint(i32 245, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %5 = and i32 %2, 112 ; [#uses=1] + switch i32 %5, label %bb5.i [ + i32 0, label %base_from_object.exit + i32 16, label %base_from_object.exit + i32 32, label %bb3.i + i32 48, label %bb4.i + i32 80, label %base_from_object.exit + ] + +bb3.i: ; preds = %bb1.i + call void @llvm.dbg.stoppoint(i32 253, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %6 = getelementptr %struct.object* %ob, i32 0, i32 1 ; [#uses=1] + %7 = load i8** %6, align 4 ; [#uses=1] + %8 = ptrtoint i8* %7 to i32 ; [#uses=1] + br label %base_from_object.exit + +bb4.i: ; preds = %bb1.i + call void @llvm.dbg.stoppoint(i32 255, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %9 = getelementptr %struct.object* %ob, i32 0, i32 2 ; [#uses=1] + %10 = load i8** %9, align 4 ; [#uses=1] + %11 = ptrtoint i8* %10 to i32 ; [#uses=1] + br label %base_from_object.exit + +bb5.i: ; preds = %bb1.i + call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + call arm_apcscc void @abort() noreturn nounwind + unreachable + +base_from_object.exit: ; preds = %bb4.i, %bb3.i, %bb1.i, %bb1.i, %bb1.i, %entry + %12 = phi i32 [ %11, %bb4.i ], [ %8, %bb3.i ], [ 0, %entry ], [ 0, %bb1.i ], [ 0, %bb1.i ], [ 0, %bb1.i ] ; [#uses=2] + call void @llvm.dbg.stoppoint(i32 342, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*)) + %13 = getelementptr %struct.dwarf_fde* %x, i32 0, i32 2, i32 0 ; [#uses=1] + %14 = call arm_apcscc i8* @read_encoded_value_with_base(i8 zeroext %3, i32 %12, i8* %13, i32* %x_ptr) ; [#uses=0] + call void @llvm.dbg.stoppoint(i32 343, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %15 = load i32* %0 ; [#uses=1] + %16 = lshr i32 %15, 3 ; [#uses=1] + %17 = getelementptr %struct.dwarf_fde* %y, i32 0, i32 2, i32 0 ; [#uses=1] + %18 = trunc i32 %16 to i8 ; [#uses=1] + %19 = call arm_apcscc i8* @read_encoded_value_with_base(i8 zeroext %18, i32 %12, i8* %17, i32* %y_ptr) ; [#uses=0] + call void @llvm.dbg.stoppoint(i32 345, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %20 = load i32* %x_ptr, align 4 ; [#uses=2] + %21 = load i32* %y_ptr, align 4 ; [#uses=2] + %22 = icmp ugt i32 %20, %21 ; [#uses=1] + br i1 %22, label %bb4, label %bb1 + +bb1: ; preds = %base_from_object.exit + call void @llvm.dbg.stoppoint(i32 347, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %23 = icmp ult i32 %20, %21 ; [#uses=1] + %retval = select i1 %23, i32 -1, i32 0 ; [#uses=1] + ret i32 %retval + +bb4: ; preds = %base_from_object.exit + call void @llvm.dbg.stoppoint(i32 349, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + ret i32 1 +} + +define internal arm_apcscc i32 @fde_mixed_encoding_compare(%struct.object* nocapture %ob, %struct.dwarf_fde* %x, %struct.dwarf_fde* %y) nounwind { +entry: + %y_ptr = alloca i32, align 4 ; [#uses=2] + %x_ptr = alloca i32, align 4 ; [#uses=2] + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram256 to { }*)) + call void @llvm.dbg.stoppoint(i32 358, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram248 to { }*)) nounwind + call void @llvm.dbg.stoppoint(i32 312, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*)) nounwind + call void @llvm.dbg.stoppoint(i32 163, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*)) nounwind + %0 = getelementptr %struct.dwarf_fde* %x, i32 0, i32 1 ; [#uses=2] + %1 = bitcast i32* %0 to i8* ; [#uses=1] + %2 = load i32* %0, align 1 ; [#uses=1] + %3 = sub i32 0, %2 ; [#uses=1] + %4 = getelementptr i8* %1, i32 %3 ; [#uses=1] + %5 = bitcast i8* %4 to %struct.dwarf_cie* ; <%struct.dwarf_cie*> [#uses=1] + %6 = call arm_apcscc i32 @get_cie_encoding(%struct.dwarf_cie* %5) nounwind ; [#uses=2] + call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*)) nounwind + call void @llvm.dbg.stoppoint(i32 359, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram248 to { }*)) + %7 = trunc i32 %6 to i8 ; [#uses=2] + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*)) nounwind + call void @llvm.dbg.stoppoint(i32 242, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %8 = icmp eq i8 %7, -1 ; [#uses=1] + br i1 %8, label %base_from_object.exit, label %bb1.i + +bb1.i: ; preds = %entry + call void @llvm.dbg.stoppoint(i32 245, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %9 = and i32 %6, 112 ; [#uses=1] + switch i32 %9, label %bb5.i [ + i32 0, label %base_from_object.exit + i32 16, label %base_from_object.exit + i32 32, label %bb3.i + i32 48, label %bb4.i + i32 80, label %base_from_object.exit + ] + +bb3.i: ; preds = %bb1.i + call void @llvm.dbg.stoppoint(i32 253, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %10 = getelementptr %struct.object* %ob, i32 0, i32 1 ; [#uses=1] + %11 = load i8** %10, align 4 ; [#uses=1] + %12 = ptrtoint i8* %11 to i32 ; [#uses=1] + br label %base_from_object.exit + +bb4.i: ; preds = %bb1.i + call void @llvm.dbg.stoppoint(i32 255, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %13 = getelementptr %struct.object* %ob, i32 0, i32 2 ; [#uses=1] + %14 = load i8** %13, align 4 ; [#uses=1] + %15 = ptrtoint i8* %14 to i32 ; [#uses=1] + br label %base_from_object.exit + +bb5.i: ; preds = %bb1.i + call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + call arm_apcscc void @abort() noreturn nounwind + unreachable + +base_from_object.exit: ; preds = %bb4.i, %bb3.i, %bb1.i, %bb1.i, %bb1.i, %entry + %16 = phi i32 [ %15, %bb4.i ], [ %12, %bb3.i ], [ 0, %entry ], [ 0, %bb1.i ], [ 0, %bb1.i ], [ 0, %bb1.i ] ; [#uses=1] + %17 = getelementptr %struct.dwarf_fde* %x, i32 0, i32 2, i32 0 ; [#uses=1] + %18 = call arm_apcscc i8* @read_encoded_value_with_base(i8 zeroext %7, i32 %16, i8* %17, i32* %x_ptr) ; [#uses=0] + call void @llvm.dbg.stoppoint(i32 362, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*)) + %19 = getelementptr %struct.dwarf_fde* %y, i32 0, i32 1 ; [#uses=2] + %20 = bitcast i32* %19 to i8* ; [#uses=1] + %21 = load i32* %19, align 1 ; [#uses=1] + %22 = sub i32 0, %21 ; [#uses=1] + %23 = getelementptr i8* %20, i32 %22 ; [#uses=1] + %24 = bitcast i8* %23 to %struct.dwarf_cie* ; <%struct.dwarf_cie*> [#uses=1] + %25 = call arm_apcscc i32 @get_cie_encoding(%struct.dwarf_cie* %24) nounwind ; [#uses=2] + call void @llvm.dbg.stoppoint(i32 363, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %26 = trunc i32 %25 to i8 ; [#uses=2] + %27 = icmp eq i8 %26, -1 ; [#uses=1] + br i1 %27, label %base_from_object.exit11, label %bb1.i6 + +bb1.i6: ; preds = %base_from_object.exit + call void @llvm.dbg.stoppoint(i32 245, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %28 = and i32 %25, 112 ; [#uses=1] + switch i32 %28, label %bb5.i9 [ + i32 0, label %base_from_object.exit11 + i32 16, label %base_from_object.exit11 + i32 32, label %bb3.i7 + i32 48, label %bb4.i8 + i32 80, label %base_from_object.exit11 + ] + +bb3.i7: ; preds = %bb1.i6 + call void @llvm.dbg.stoppoint(i32 253, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %29 = getelementptr %struct.object* %ob, i32 0, i32 1 ; [#uses=1] + %30 = load i8** %29, align 4 ; [#uses=1] + %31 = ptrtoint i8* %30 to i32 ; [#uses=1] + br label %base_from_object.exit11 + +bb4.i8: ; preds = %bb1.i6 + call void @llvm.dbg.stoppoint(i32 255, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %32 = getelementptr %struct.object* %ob, i32 0, i32 2 ; [#uses=1] + %33 = load i8** %32, align 4 ; [#uses=1] + %34 = ptrtoint i8* %33 to i32 ; [#uses=1] + br label %base_from_object.exit11 + +bb5.i9: ; preds = %bb1.i6 + call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + call arm_apcscc void @abort() noreturn nounwind + unreachable + +base_from_object.exit11: ; preds = %bb4.i8, %bb3.i7, %bb1.i6, %bb1.i6, %bb1.i6, %base_from_object.exit + %35 = phi i32 [ %34, %bb4.i8 ], [ %31, %bb3.i7 ], [ 0, %base_from_object.exit ], [ 0, %bb1.i6 ], [ 0, %bb1.i6 ], [ 0, %bb1.i6 ] ; [#uses=1] + %36 = getelementptr %struct.dwarf_fde* %y, i32 0, i32 2, i32 0 ; [#uses=1] + %37 = call arm_apcscc i8* @read_encoded_value_with_base(i8 zeroext %26, i32 %35, i8* %36, i32* %y_ptr) ; [#uses=0] + call void @llvm.dbg.stoppoint(i32 366, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %38 = load i32* %x_ptr, align 4 ; [#uses=2] + %39 = load i32* %y_ptr, align 4 ; [#uses=2] + %40 = icmp ugt i32 %38, %39 ; [#uses=1] + br i1 %40, label %bb4, label %bb1 + +bb1: ; preds = %base_from_object.exit11 + call void @llvm.dbg.stoppoint(i32 368, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %41 = icmp ult i32 %38, %39 ; [#uses=1] + %retval = select i1 %41, i32 -1, i32 0 ; [#uses=1] + ret i32 %retval + +bb4: ; preds = %base_from_object.exit11 + call void @llvm.dbg.stoppoint(i32 370, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + ret i32 1 +} + +define internal arm_apcscc %struct.dwarf_fde* @linear_search_fdes(%struct.object* nocapture %ob, %struct.dwarf_fde* %this_fde, i8* %pc) nounwind { +entry: + %pc_range = alloca i32, align 4 ; [#uses=3] + %pc_begin = alloca i32, align 4 ; [#uses=3] + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram264 to { }*)) + call void @llvm.dbg.stoppoint(i32 773, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %0 = getelementptr %struct.object* %ob, i32 0, i32 4, i32 0 ; [#uses=2] + %1 = load i32* %0 ; [#uses=1] + %2 = lshr i32 %1, 3 ; [#uses=3] + %3 = and i32 %2, 255 ; [#uses=1] + call void @llvm.dbg.stoppoint(i32 774, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %4 = trunc i32 %2 to i8 ; [#uses=1] + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*)) nounwind + call void @llvm.dbg.stoppoint(i32 242, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %5 = icmp eq i8 %4, -1 ; [#uses=1] + br i1 %5, label %bb13.preheader, label %bb1.i + +bb1.i: ; preds = %entry + call void @llvm.dbg.stoppoint(i32 245, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %6 = and i32 %2, 112 ; [#uses=1] + switch i32 %6, label %bb5.i [ + i32 0, label %bb13.preheader + i32 16, label %bb13.preheader + i32 32, label %bb3.i + i32 48, label %bb4.i + i32 80, label %bb13.preheader + ] + +bb13.preheader: ; preds = %bb4.i, %bb3.i, %bb1.i, %bb1.i, %bb1.i, %entry + %base.2.ph = phi i32 [ %15, %bb4.i ], [ %12, %bb3.i ], [ 0, %entry ], [ 0, %bb1.i ], [ 0, %bb1.i ], [ 0, %bb1.i ] ; [#uses=1] + %7 = ptrtoint i8* %pc to i32 ; [#uses=1] + %8 = getelementptr %struct.object* %ob, i32 0, i32 1 ; [#uses=1] + %9 = getelementptr %struct.object* %ob, i32 0, i32 2 ; [#uses=1] + br label %bb13 + +bb3.i: ; preds = %bb1.i + call void @llvm.dbg.stoppoint(i32 253, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %10 = getelementptr %struct.object* %ob, i32 0, i32 1 ; [#uses=1] + %11 = load i8** %10, align 4 ; [#uses=1] + %12 = ptrtoint i8* %11 to i32 ; [#uses=1] + br label %bb13.preheader + +bb4.i: ; preds = %bb1.i + call void @llvm.dbg.stoppoint(i32 255, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %13 = getelementptr %struct.object* %ob, i32 0, i32 2 ; [#uses=1] + %14 = load i8** %13, align 4 ; [#uses=1] + %15 = ptrtoint i8* %14 to i32 ; [#uses=1] + br label %bb13.preheader + +bb5.i: ; preds = %bb1.i + call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + call arm_apcscc void @abort() noreturn nounwind + unreachable + +bb: ; preds = %bb13 + %16 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 1 ; [#uses=2] + %17 = load i32* %16, align 1 ; [#uses=2] + %18 = icmp eq i32 %17, 0 ; [#uses=1] + br i1 %18, label %bb12, label %bb1 + +bb1: ; preds = %bb + %19 = load i32* %0 ; [#uses=1] + %20 = and i32 %19, 4 ; [#uses=1] + %21 = icmp eq i32 %20, 0 ; [#uses=1] + br i1 %21, label %bb4, label %bb2 + +bb2: ; preds = %bb1 + %22 = bitcast i32* %16 to i8* ; [#uses=1] + %23 = sub i32 0, %17 ; [#uses=1] + %24 = getelementptr i8* %22, i32 %23 ; [#uses=1] + %25 = bitcast i8* %24 to %struct.dwarf_cie* ; <%struct.dwarf_cie*> [#uses=8] + %26 = icmp eq %struct.dwarf_cie* %25, %last_cie.2 ; [#uses=1] + br i1 %26, label %bb4, label %bb3 + +bb3: ; preds = %bb2 + %27 = call arm_apcscc i32 @get_cie_encoding(%struct.dwarf_cie* %25) ; [#uses=8] + %28 = trunc i32 %27 to i8 ; [#uses=1] + %29 = icmp eq i8 %28, -1 ; [#uses=1] + br i1 %29, label %bb4, label %bb1.i17 + +bb1.i17: ; preds = %bb3 + %30 = and i32 %27, 112 ; [#uses=1] + switch i32 %30, label %bb5.i20 [ + i32 0, label %bb4 + i32 16, label %bb4 + i32 32, label %bb3.i18 + i32 48, label %bb4.i19 + i32 80, label %bb4 + ] + +bb3.i18: ; preds = %bb1.i17 + %31 = load i8** %8, align 4 ; [#uses=1] + %32 = ptrtoint i8* %31 to i32 ; [#uses=1] + br label %bb4 + +bb4.i19: ; preds = %bb1.i17 + %33 = load i8** %9, align 4 ; [#uses=1] + %34 = ptrtoint i8* %33 to i32 ; [#uses=1] + br label %bb4 + +bb5.i20: ; preds = %bb1.i17 + call void @llvm.dbg.stoppoint(i32 776, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram154 to { }*)) + call void @llvm.dbg.stoppoint(i32 789, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*)) + call void @llvm.dbg.stoppoint(i32 790, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*)) + call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + call arm_apcscc void @abort() noreturn nounwind + unreachable + +bb4: ; preds = %bb4.i19, %bb3.i18, %bb1.i17, %bb1.i17, %bb1.i17, %bb3, %bb2, %bb1 + %base.0 = phi i32 [ %34, %bb4.i19 ], [ %32, %bb3.i18 ], [ %base.2, %bb1 ], [ %base.2, %bb2 ], [ 0, %bb3 ], [ 0, %bb1.i17 ], [ 0, %bb1.i17 ], [ 0, %bb1.i17 ] ; [#uses=4] + %encoding.0 = phi i32 [ %27, %bb3.i18 ], [ %27, %bb4.i19 ], [ %encoding.2, %bb1 ], [ %encoding.2, %bb2 ], [ %27, %bb3 ], [ %27, %bb1.i17 ], [ %27, %bb1.i17 ], [ %27, %bb1.i17 ] ; [#uses=5] + %last_cie.0 = phi %struct.dwarf_cie* [ %25, %bb3.i18 ], [ %25, %bb4.i19 ], [ %last_cie.2, %bb1 ], [ %last_cie.2, %bb2 ], [ %25, %bb3 ], [ %25, %bb1.i17 ], [ %25, %bb1.i17 ], [ %25, %bb1.i17 ] ; <%struct.dwarf_cie*> [#uses=3] + %35 = icmp eq i32 %encoding.0, 0 ; [#uses=1] + br i1 %35, label %bb5, label %bb6 + +bb5: ; preds = %bb4 + %36 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 2 ; <[0 x i8]*> [#uses=1] + %37 = bitcast [0 x i8]* %36 to i32* ; [#uses=2] + %38 = load i32* %37, align 4 ; [#uses=3] + store i32 %38, i32* %pc_begin, align 4 + %39 = getelementptr i32* %37, i32 1 ; [#uses=1] + %40 = load i32* %39, align 4 ; [#uses=1] + store i32 %40, i32* %pc_range, align 4 + %41 = icmp eq i32 %38, 0 ; [#uses=1] + br i1 %41, label %bb12, label %bb10 + +bb6: ; preds = %bb4 + %42 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 2, i32 0 ; [#uses=1] + %43 = trunc i32 %encoding.0 to i8 ; [#uses=3] + %44 = call arm_apcscc i8* @read_encoded_value_with_base(i8 zeroext %43, i32 %base.0, i8* %42, i32* %pc_begin) ; [#uses=1] + %45 = and i8 %43, 15 ; [#uses=1] + %46 = call arm_apcscc i8* @read_encoded_value_with_base(i8 zeroext %45, i32 0, i8* %44, i32* %pc_range) ; [#uses=0] + %47 = call arm_apcscc i32 @size_of_encoded_value(i8 zeroext %43) ; [#uses=2] + %48 = icmp ugt i32 %47, 3 ; [#uses=1] + br i1 %48, label %bb9, label %bb7 + +bb7: ; preds = %bb6 + %49 = shl i32 %47, 3 ; [#uses=1] + %50 = shl i32 1, %49 ; [#uses=1] + %51 = add i32 %50, -1 ; [#uses=1] + br label %bb9 + +bb9: ; preds = %bb7, %bb6 + %mask.0 = phi i32 [ %51, %bb7 ], [ -1, %bb6 ] ; [#uses=1] + %52 = load i32* %pc_begin, align 4 ; [#uses=2] + %53 = and i32 %52, %mask.0 ; [#uses=1] + %54 = icmp eq i32 %53, 0 ; [#uses=1] + br i1 %54, label %bb12, label %bb10 + +bb10: ; preds = %bb9, %bb5 + %55 = phi i32 [ %38, %bb5 ], [ %52, %bb9 ] ; [#uses=1] + %56 = sub i32 %7, %55 ; [#uses=1] + %57 = load i32* %pc_range, align 4 ; [#uses=1] + %58 = icmp ult i32 %56, %57 ; [#uses=1] + br i1 %58, label %bb15, label %bb12 + +bb12: ; preds = %bb10, %bb9, %bb5, %bb + %base.1 = phi i32 [ %base.2, %bb ], [ %base.0, %bb5 ], [ %base.0, %bb9 ], [ %base.0, %bb10 ] ; [#uses=1] + %encoding.1 = phi i32 [ %encoding.2, %bb ], [ %encoding.0, %bb5 ], [ %encoding.0, %bb9 ], [ %encoding.0, %bb10 ] ; [#uses=1] + %last_cie.1 = phi %struct.dwarf_cie* [ %last_cie.2, %bb ], [ %last_cie.0, %bb5 ], [ %last_cie.0, %bb9 ], [ %last_cie.0, %bb10 ] ; <%struct.dwarf_cie*> [#uses=1] + %59 = bitcast %struct.dwarf_fde* %this_fde_addr.0 to i8* ; [#uses=1] + %60 = load i32* %63, align 1 ; [#uses=1] + %.sum.i = add i32 %60, 4 ; [#uses=1] + %61 = getelementptr i8* %59, i32 %.sum.i ; [#uses=1] + %62 = bitcast i8* %61 to %struct.dwarf_fde* ; <%struct.dwarf_fde*> [#uses=1] + br label %bb13 + +bb13: ; preds = %bb12, %bb13.preheader + %base.2 = phi i32 [ %base.1, %bb12 ], [ %base.2.ph, %bb13.preheader ] ; [#uses=3] + %encoding.2 = phi i32 [ %encoding.1, %bb12 ], [ %3, %bb13.preheader ] ; [#uses=3] + %last_cie.2 = phi %struct.dwarf_cie* [ %last_cie.1, %bb12 ], [ null, %bb13.preheader ] ; <%struct.dwarf_cie*> [#uses=4] + %this_fde_addr.0 = phi %struct.dwarf_fde* [ %62, %bb12 ], [ %this_fde, %bb13.preheader ] ; <%struct.dwarf_fde*> [#uses=6] + %63 = getelementptr %struct.dwarf_fde* %this_fde_addr.0, i32 0, i32 0 ; [#uses=2] + %64 = load i32* %63, align 1 ; [#uses=1] + %65 = icmp eq i32 %64, 0 ; [#uses=1] + br i1 %65, label %bb15, label %bb + +bb15: ; preds = %bb13, %bb10 + %.0 = phi %struct.dwarf_fde* [ %this_fde_addr.0, %bb10 ], [ null, %bb13 ] ; <%struct.dwarf_fde*> [#uses=1] + call void @llvm.dbg.stoppoint(i32 776, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram154 to { }*)) + call void @llvm.dbg.stoppoint(i32 832, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram264 to { }*)) + ret %struct.dwarf_fde* %.0 +} + +define arm_apcscc void @__register_frame_table(i8* %begin) nounwind { +entry: + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram272 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 157, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %0 = malloc %struct.object ; <%struct.object*> [#uses=7] + tail call void @llvm.dbg.stoppoint(i32 158, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram184 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 151, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram180 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 131, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %1 = getelementptr %struct.object* %0, i32 0, i32 0 ; [#uses=1] + store i8* inttoptr (i64 4294967295 to i8*), i8** %1, align 4 + tail call void @llvm.dbg.stoppoint(i32 132, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %2 = getelementptr %struct.object* %0, i32 0, i32 1 ; [#uses=1] + store i8* null, i8** %2, align 4 + tail call void @llvm.dbg.stoppoint(i32 133, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %3 = getelementptr %struct.object* %0, i32 0, i32 2 ; [#uses=1] + store i8* null, i8** %3, align 4 + tail call void @llvm.dbg.stoppoint(i32 134, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %4 = getelementptr %struct.object* %0, i32 0, i32 3, i32 0 ; <%struct.dwarf_fde**> [#uses=1] + %.c.i.i = bitcast i8* %begin to %struct.dwarf_fde* ; <%struct.dwarf_fde*> [#uses=1] + store %struct.dwarf_fde* %.c.i.i, %struct.dwarf_fde** %4 + tail call void @llvm.dbg.stoppoint(i32 137, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %5 = getelementptr %struct.object* %0, i32 0, i32 4, i32 0 ; [#uses=1] + store i32 2042, i32* %5 + tail call void @llvm.dbg.stoppoint(i32 140, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 142, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*)) + %6 = load %struct.object** @unseen_objects, align 4 ; <%struct.object*> [#uses=1] + %7 = getelementptr %struct.object* %0, i32 0, i32 5 ; <%struct.object**> [#uses=1] + store %struct.object* %6, %struct.object** %7, align 4 + tail call void @llvm.dbg.stoppoint(i32 143, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + store %struct.object* %0, %struct.object** @unseen_objects, align 4 + tail call void @llvm.dbg.stoppoint(i32 145, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 146, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 152, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram180 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 159, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram184 to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram272 to { }*)) + ret void +} + +define arm_apcscc void @__register_frame(i8* %begin) nounwind { +entry: + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram274 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 116, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %0 = bitcast i8* %begin to i32* ; [#uses=1] + %1 = load i32* %0, align 4 ; [#uses=1] + %2 = icmp eq i32 %1, 0 ; [#uses=1] + br i1 %2, label %return, label %bb + +bb: ; preds = %entry + tail call void @llvm.dbg.stoppoint(i32 119, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %3 = malloc %struct.object ; <%struct.object*> [#uses=7] + tail call void @llvm.dbg.stoppoint(i32 120, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram176 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 107, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram172 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 82, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %4 = icmp eq i8* %begin, null ; [#uses=1] + br i1 %4, label %__register_frame_info.exit, label %bb.i.i + +bb.i.i: ; preds = %bb + tail call void @llvm.dbg.stoppoint(i32 85, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %5 = getelementptr %struct.object* %3, i32 0, i32 0 ; [#uses=1] + store i8* inttoptr (i64 4294967295 to i8*), i8** %5, align 4 + tail call void @llvm.dbg.stoppoint(i32 86, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %6 = getelementptr %struct.object* %3, i32 0, i32 1 ; [#uses=1] + store i8* null, i8** %6, align 4 + tail call void @llvm.dbg.stoppoint(i32 87, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %7 = getelementptr %struct.object* %3, i32 0, i32 2 ; [#uses=1] + store i8* null, i8** %7, align 4 + tail call void @llvm.dbg.stoppoint(i32 88, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %8 = bitcast i8* %begin to %struct.dwarf_fde* ; <%struct.dwarf_fde*> [#uses=1] + %9 = getelementptr %struct.object* %3, i32 0, i32 3, i32 0 ; <%struct.dwarf_fde**> [#uses=1] + store %struct.dwarf_fde* %8, %struct.dwarf_fde** %9, align 4 + tail call void @llvm.dbg.stoppoint(i32 90, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %10 = getelementptr %struct.object* %3, i32 0, i32 4, i32 0 ; [#uses=1] + store i32 2040, i32* %10 + tail call void @llvm.dbg.stoppoint(i32 96, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 98, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*)) + %11 = load %struct.object** @unseen_objects, align 4 ; <%struct.object*> [#uses=1] + %12 = getelementptr %struct.object* %3, i32 0, i32 5 ; <%struct.object**> [#uses=1] + store %struct.object* %11, %struct.object** %12, align 4 + tail call void @llvm.dbg.stoppoint(i32 99, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + store %struct.object* %3, %struct.object** @unseen_objects, align 4 + tail call void @llvm.dbg.stoppoint(i32 101, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 233, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit159 to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram274 to { }*)) + ret void + +__register_frame_info.exit: ; preds = %bb + ret void + +return: ; preds = %entry + tail call void @llvm.dbg.stoppoint(i32 120, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + ret void +} + +define internal arm_apcscc %struct.dwarf_fde* @search_object(%struct.object* %ob, i8* %pc) { +entry: + %pc_range.i33 = alloca i32, align 4 ; [#uses=2] + %pc_begin.i34 = alloca i32, align 4 ; [#uses=2] + %pc_range.i = alloca i32, align 4 ; [#uses=2] + %pc_begin.i = alloca i32, align 4 ; [#uses=2] + %accu.i = alloca %struct.fde_accumulator, align 4 ; <%struct.fde_accumulator*> [#uses=4] + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram284 to { }*)) + call void @llvm.dbg.stoppoint(i32 931, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %0 = getelementptr %struct.object* %ob, i32 0, i32 4, i32 0 ; [#uses=7] + %1 = load i32* %0 ; [#uses=6] + %2 = and i32 %1, 1 ; [#uses=1] + %3 = icmp eq i32 %2, 0 ; [#uses=1] + br i1 %3, label %bb, label %bb2 + +bb: ; preds = %entry + call void @llvm.dbg.stoppoint(i32 933, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram282 to { }*)) + call void @llvm.dbg.stoppoint(i32 721, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %4 = lshr i32 %1, 11 ; [#uses=2] + call void @llvm.dbg.stoppoint(i32 722, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %5 = icmp eq i32 %4, 0 ; [#uses=1] + br i1 %5, label %bb.i, label %bb8.i + +bb.i: ; preds = %bb + call void @llvm.dbg.stoppoint(i32 724, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %6 = and i32 %1, 2 ; [#uses=1] + %7 = icmp eq i32 %6, 0 ; [#uses=1] + %8 = getelementptr %struct.object* %ob, i32 0, i32 3, i32 0 ; <%struct.dwarf_fde**> [#uses=2] + br i1 %7, label %bb5.i, label %bb2.i + +bb2.i: ; preds = %bb.i + call void @llvm.dbg.stoppoint(i32 726, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %9 = load %struct.dwarf_fde** %8 ; <%struct.dwarf_fde*> [#uses=3] + %10 = bitcast %struct.dwarf_fde* %9 to i8* ; [#uses=1] + %11 = bitcast %struct.dwarf_fde* %9 to %struct.dwarf_fde** ; <%struct.dwarf_fde**> [#uses=1] + call void @llvm.dbg.stoppoint(i32 727, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %12 = load %struct.dwarf_fde** %11, align 4 ; <%struct.dwarf_fde*> [#uses=1] + %13 = icmp eq %struct.dwarf_fde* %12, null ; [#uses=1] + br i1 %13, label %bb6.i, label %bb3.i + +bb3.i: ; preds = %bb3.i, %bb2.i + %indvar.i = phi i32 [ 0, %bb2.i ], [ %indvar.next.i, %bb3.i ] ; [#uses=3] + %count.221.i = phi i32 [ 0, %bb2.i ], [ %16, %bb3.i ] ; [#uses=1] + %scevgep = getelementptr %struct.dwarf_fde* %9, i32 0, i32 1 ; [#uses=1] + %scevgep60 = getelementptr i32* %scevgep, i32 %indvar.i ; [#uses=1] + %scevgep2728.i = bitcast i32* %scevgep60 to %struct.dwarf_fde** ; <%struct.dwarf_fde**> [#uses=1] + %tmp = shl i32 %indvar.i, 2 ; [#uses=1] + %scevgep62 = getelementptr i8* %10, i32 %tmp ; [#uses=1] + %p1.020.i = bitcast i8* %scevgep62 to %struct.dwarf_fde** ; <%struct.dwarf_fde**> [#uses=1] + %14 = load %struct.dwarf_fde** %p1.020.i, align 4 ; <%struct.dwarf_fde*> [#uses=1] + %15 = call arm_apcscc i32 @classify_object_over_fdes(%struct.object* %ob, %struct.dwarf_fde* %14) ; [#uses=1] + %16 = add i32 %15, %count.221.i ; [#uses=2] + %17 = load %struct.dwarf_fde** %scevgep2728.i, align 4 ; <%struct.dwarf_fde*> [#uses=1] + %18 = icmp eq %struct.dwarf_fde* %17, null ; [#uses=1] + %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=1] + br i1 %18, label %bb6.i, label %bb3.i + +bb5.i: ; preds = %bb.i + call void @llvm.dbg.stoppoint(i32 731, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %19 = load %struct.dwarf_fde** %8, align 4 ; <%struct.dwarf_fde*> [#uses=1] + %20 = call arm_apcscc i32 @classify_object_over_fdes(%struct.object* %ob, %struct.dwarf_fde* %19) ; [#uses=1] + br label %bb6.i + +bb6.i: ; preds = %bb5.i, %bb3.i, %bb2.i + %count.0.i = phi i32 [ %20, %bb5.i ], [ 0, %bb2.i ], [ %16, %bb3.i ] ; [#uses=5] + call void @llvm.dbg.stoppoint(i32 738, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %21 = load i32* %0 ; [#uses=1] + %22 = shl i32 %count.0.i, 11 ; [#uses=1] + %23 = and i32 %21, 2047 ; [#uses=4] + %24 = or i32 %23, %22 ; [#uses=3] + store i32 %24, i32* %0 + call void @llvm.dbg.stoppoint(i32 739, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %25 = and i32 %count.0.i, 2097151 ; [#uses=1] + %26 = icmp eq i32 %25, %count.0.i ; [#uses=1] + br i1 %26, label %bb8.i, label %bb7.i + +bb7.i: ; preds = %bb6.i + call void @llvm.dbg.stoppoint(i32 740, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + store i32 %23, i32* %0 + br label %bb8.i + +bb8.i: ; preds = %bb7.i, %bb6.i, %bb + %.rle121 = phi i32 [ %23, %bb7.i ], [ %1, %bb ], [ %24, %bb6.i ] ; [#uses=2] + %27 = phi i32 [ %23, %bb7.i ], [ %1, %bb ], [ %24, %bb6.i ] ; [#uses=1] + %count.1.i = phi i32 [ %count.0.i, %bb7.i ], [ %4, %bb ], [ %count.0.i, %bb6.i ] ; [#uses=4] + call void @llvm.dbg.stoppoint(i32 743, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram268 to { }*)) + call void @llvm.dbg.stoppoint(i32 397, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %28 = icmp eq i32 %count.1.i, 0 ; [#uses=1] + br i1 %28, label %init_object.exit, label %bb1.i.i + +bb1.i.i: ; preds = %bb8.i + call void @llvm.dbg.stoppoint(i32 400, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %29 = shl i32 %count.1.i, 2 ; [#uses=1] + %30 = add i32 %29, 8 ; [#uses=2] + call void @llvm.dbg.stoppoint(i32 401, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %31 = malloc i8, i32 %30 ; [#uses=3] + %32 = bitcast i8* %31 to %struct.fde_vector* ; <%struct.fde_vector*> [#uses=1] + %33 = getelementptr %struct.fde_accumulator* %accu.i, i32 0, i32 0 ; <%struct.fde_vector**> [#uses=6] + store %struct.fde_vector* %32, %struct.fde_vector** %33, align 4 + %34 = icmp eq i8* %31, null ; [#uses=1] + br i1 %34, label %init_object.exit, label %bb2.i.i + +bb2.i.i: ; preds = %bb1.i.i + call void @llvm.dbg.stoppoint(i32 403, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %35 = getelementptr i8* %31, i32 4 ; [#uses=1] + %36 = bitcast i8* %35 to i32* ; [#uses=1] + store i32 0, i32* %36, align 4 + call void @llvm.dbg.stoppoint(i32 404, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %37 = malloc i8, i32 %30 ; [#uses=3] + %38 = bitcast i8* %37 to %struct.fde_vector* ; <%struct.fde_vector*> [#uses=1] + %39 = getelementptr %struct.fde_accumulator* %accu.i, i32 0, i32 1 ; <%struct.fde_vector**> [#uses=5] + store %struct.fde_vector* %38, %struct.fde_vector** %39, align 4 + %40 = icmp eq i8* %37, null ; [#uses=1] + br i1 %40, label %bb9.i, label %start_fde_sort.exit.thread.i + +start_fde_sort.exit.thread.i: ; preds = %bb2.i.i + call void @llvm.dbg.stoppoint(i32 405, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %41 = getelementptr i8* %37, i32 4 ; [#uses=1] + %42 = bitcast i8* %41 to i32* ; [#uses=1] + store i32 0, i32* %42, align 4 + br label %bb9.i + +bb9.i: ; preds = %start_fde_sort.exit.thread.i, %bb2.i.i + call void @llvm.dbg.stoppoint(i32 746, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %43 = and i32 %27, 2 ; [#uses=1] + %44 = icmp eq i32 %43, 0 ; [#uses=1] + %45 = getelementptr %struct.object* %ob, i32 0, i32 3, i32 0 ; <%struct.dwarf_fde**> [#uses=4] + br i1 %44, label %bb13.i, label %bb10.i + +bb10.i: ; preds = %bb9.i + call void @llvm.dbg.stoppoint(i32 749, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %46 = load %struct.dwarf_fde** %45 ; <%struct.dwarf_fde*> [#uses=3] + %47 = bitcast %struct.dwarf_fde* %46 to i8* ; [#uses=1] + %48 = bitcast %struct.dwarf_fde* %46 to %struct.dwarf_fde** ; <%struct.dwarf_fde**> [#uses=1] + %49 = load %struct.dwarf_fde** %48, align 4 ; <%struct.dwarf_fde*> [#uses=1] + %50 = icmp eq %struct.dwarf_fde* %49, null ; [#uses=1] + br i1 %50, label %bb14.i, label %bb11.i + +bb11.i: ; preds = %bb11.i, %bb10.i + %indvar29.i = phi i32 [ 0, %bb10.i ], [ %indvar.next30.i, %bb11.i ] ; [#uses=3] + %scevgep64 = getelementptr %struct.dwarf_fde* %46, i32 0, i32 1 ; [#uses=1] + %scevgep65 = getelementptr i32* %scevgep64, i32 %indvar29.i ; [#uses=1] + %scevgep3536.i = bitcast i32* %scevgep65 to %struct.dwarf_fde** ; <%struct.dwarf_fde**> [#uses=1] + %tmp67 = shl i32 %indvar29.i, 2 ; [#uses=1] + %scevgep68 = getelementptr i8* %47, i32 %tmp67 ; [#uses=1] + %p.023.i = bitcast i8* %scevgep68 to %struct.dwarf_fde** ; <%struct.dwarf_fde**> [#uses=1] + %51 = load %struct.dwarf_fde** %p.023.i, align 4 ; <%struct.dwarf_fde*> [#uses=1] + call arm_apcscc void @add_fdes(%struct.object* %ob, %struct.fde_accumulator* %accu.i, %struct.dwarf_fde* %51) + %52 = load %struct.dwarf_fde** %scevgep3536.i, align 4 ; <%struct.dwarf_fde*> [#uses=1] + %53 = icmp eq %struct.dwarf_fde* %52, null ; [#uses=1] + %indvar.next30.i = add i32 %indvar29.i, 1 ; [#uses=1] + br i1 %53, label %bb14.i, label %bb11.i + +bb13.i: ; preds = %bb9.i + call void @llvm.dbg.stoppoint(i32 753, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %54 = load %struct.dwarf_fde** %45, align 4 ; <%struct.dwarf_fde*> [#uses=1] + call arm_apcscc void @add_fdes(%struct.object* %ob, %struct.fde_accumulator* %accu.i, %struct.dwarf_fde* %54) + br label %bb14.i + +bb14.i: ; preds = %bb13.i, %bb11.i, %bb10.i + call void @llvm.dbg.stoppoint(i32 755, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram278 to { }*)) + call void @llvm.dbg.stoppoint(i32 567, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %55 = load %struct.fde_vector** %33, align 4 ; <%struct.fde_vector*> [#uses=8] + %56 = icmp eq %struct.fde_vector* %55, null ; [#uses=1] + br i1 %56, label %bb2.i17.i, label %bb.i.i + +bb.i.i: ; preds = %bb14.i + %57 = getelementptr %struct.fde_vector* %55, i32 0, i32 1 ; [#uses=1] + %58 = load i32* %57, align 4 ; [#uses=1] + %59 = icmp eq i32 %58, %count.1.i ; [#uses=1] + br i1 %59, label %bb2.i17.i, label %bb1.i16.i + +bb1.i16.i: ; preds = %bb.i.i + call arm_apcscc void @abort() noreturn nounwind + unreachable + +bb2.i17.i: ; preds = %bb.i.i, %bb14.i + call void @llvm.dbg.stoppoint(i32 569, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %60 = load i32* %0 ; [#uses=2] + %61 = and i32 %60, 4 ; [#uses=1] + %62 = icmp eq i32 %61, 0 ; [#uses=1] + br i1 %62, label %bb4.i.i, label %bb7.i.i + +bb4.i.i: ; preds = %bb2.i17.i + call void @llvm.dbg.stoppoint(i32 571, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %63 = and i32 %60, 2040 ; [#uses=1] + %64 = icmp eq i32 %63, 0 ; [#uses=1] + br i1 %64, label %bb7.i.i, label %bb6.i18.i + +bb6.i18.i: ; preds = %bb4.i.i + call void @llvm.dbg.stoppoint(i32 574, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + br label %bb7.i.i + +bb7.i.i: ; preds = %bb6.i18.i, %bb4.i.i, %bb2.i17.i + %fde_compare.0.i.i = phi i32 (%struct.object*, %struct.dwarf_fde*, %struct.dwarf_fde*)* [ @fde_single_encoding_compare, %bb6.i18.i ], [ @fde_mixed_encoding_compare, %bb2.i17.i ], [ @fde_unencoded_compare, %bb4.i.i ] ; [#uses=4] + call void @llvm.dbg.stoppoint(i32 576, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %65 = load %struct.fde_vector** %39, align 4 ; <%struct.fde_vector*> [#uses=5] + %66 = icmp eq %struct.fde_vector* %65, null ; [#uses=1] + br i1 %66, label %bb11.i.i, label %bb8.i.i + +bb8.i.i: ; preds = %bb7.i.i + call void @llvm.dbg.stoppoint(i32 578, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram208 to { }*)) + call void @llvm.dbg.stoppoint(i32 436, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %67 = getelementptr %struct.fde_vector* %55, i32 0, i32 1 ; [#uses=2] + %68 = load i32* %67, align 4 ; [#uses=3] + call void @llvm.dbg.stoppoint(i32 445, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %69 = icmp eq i32 %68, 0 ; [#uses=2] + br i1 %69, label %fde_split.exit.i.i, label %bb.nph20.i.i.i + +bb1.i.i.i: ; preds = %bb3.i.i.i + %70 = ptrtoint %struct.dwarf_fde** %probe.0.i.i.i to i32 ; [#uses=1] + %71 = sub i32 %70, %84 ; [#uses=1] + %72 = ashr i32 %71, 2 ; [#uses=1] + %73 = getelementptr %struct.fde_vector* %65, i32 0, i32 2, i32 %72 ; <%struct.dwarf_fde**> [#uses=2] + %74 = load %struct.dwarf_fde** %73, align 4 ; <%struct.dwarf_fde*> [#uses=1] + %75 = bitcast %struct.dwarf_fde* %74 to %struct.dwarf_fde** ; <%struct.dwarf_fde**> [#uses=2] + store %struct.dwarf_fde* null, %struct.dwarf_fde** %73, align 4 + br label %bb2.i.i.i + +bb2.i.i.i: ; preds = %bb2.preheader.i.i.i, %bb1.i.i.i + %probe.0.i.i.i = phi %struct.dwarf_fde** [ %75, %bb1.i.i.i ], [ %chain_end.119.i.i.i, %bb2.preheader.i.i.i ] ; <%struct.dwarf_fde**> [#uses=3] + %chain_end.0.i.i.i = phi %struct.dwarf_fde** [ %75, %bb1.i.i.i ], [ %chain_end.119.i.i.i, %bb2.preheader.i.i.i ] ; <%struct.dwarf_fde**> [#uses=1] + %76 = icmp eq %struct.dwarf_fde** %probe.0.i.i.i, @marker.2702 ; [#uses=1] + br i1 %76, label %bb4.i.i.i, label %bb3.i.i.i + +bb3.i.i.i: ; preds = %bb2.i.i.i + %scevgep333437.i.i.i = load i8** %scevgep33.i.i.i ; [#uses=1] + %77 = bitcast i8* %scevgep333437.i.i.i to %struct.dwarf_fde* ; <%struct.dwarf_fde*> [#uses=1] + %78 = load %struct.dwarf_fde** %probe.0.i.i.i, align 4 ; <%struct.dwarf_fde*> [#uses=1] + %79 = call arm_apcscc i32 %fde_compare.0.i.i(%struct.object* %ob, %struct.dwarf_fde* %77, %struct.dwarf_fde* %78) ; [#uses=1] + %80 = icmp slt i32 %79, 0 ; [#uses=1] + br i1 %80, label %bb1.i.i.i, label %bb4.i.i.i + +bb4.i.i.i: ; preds = %bb3.i.i.i, %bb2.i.i.i + %.c.i.i.i = bitcast %struct.dwarf_fde** %chain_end.0.i.i.i to i8* ; [#uses=1] + store i8* %.c.i.i.i, i8** %scevgep30.i.i.i + %81 = getelementptr %struct.fde_vector* %55, i32 0, i32 2, i32 %i.018.i.i.i ; <%struct.dwarf_fde**> [#uses=1] + %82 = add i32 %i.018.i.i.i, 1 ; [#uses=2] + %exitcond77 = icmp eq i32 %82, %umax76 ; [#uses=1] + br i1 %exitcond77, label %bb11.loopexit.i.i.i, label %bb2.preheader.i.i.i + +bb.nph20.i.i.i: ; preds = %bb8.i.i + %83 = getelementptr %struct.fde_vector* %55, i32 0, i32 2 ; <[0 x %struct.dwarf_fde*]*> [#uses=1] + %84 = ptrtoint [0 x %struct.dwarf_fde*]* %83 to i32 ; [#uses=1] + %tmp75 = icmp ugt i32 %68, 1 ; [#uses=1] + %umax76 = select i1 %tmp75, i32 %68, i32 1 ; [#uses=2] + br label %bb2.preheader.i.i.i + +bb2.preheader.i.i.i: ; preds = %bb.nph20.i.i.i, %bb4.i.i.i + %chain_end.119.i.i.i = phi %struct.dwarf_fde** [ @marker.2702, %bb.nph20.i.i.i ], [ %81, %bb4.i.i.i ] ; <%struct.dwarf_fde**> [#uses=2] + %i.018.i.i.i = phi i32 [ 0, %bb.nph20.i.i.i ], [ %82, %bb4.i.i.i ] ; [#uses=4] + %scevgep78 = getelementptr %struct.fde_vector* %55, i32 1, i32 0 ; [#uses=2] + %scevgep33.i.i.i = getelementptr i8** %scevgep78, i32 %i.018.i.i.i ; [#uses=1] + %scevgep80 = getelementptr %struct.fde_vector* %65, i32 1, i32 0 ; [#uses=2] + %scevgep30.i.i.i = getelementptr i8** %scevgep80, i32 %i.018.i.i.i ; [#uses=1] + br label %bb2.i.i.i + +bb7.i.i.i: ; preds = %bb11.loopexit.i.i.i, %bb10.i.i.i + %i.115.i.i.i = phi i32 [ %91, %bb10.i.i.i ], [ 0, %bb11.loopexit.i.i.i ] ; [#uses=3] + %j.114.i.i.i = phi i32 [ %j.0.i.i.i, %bb10.i.i.i ], [ 0, %bb11.loopexit.i.i.i ] ; [#uses=3] + %k.113.i.i.i = phi i32 [ %k.0.i.i.i, %bb10.i.i.i ], [ 0, %bb11.loopexit.i.i.i ] ; [#uses=3] + %scevgep24.i.i.i = getelementptr i8** %scevgep80, i32 %i.115.i.i.i ; [#uses=1] + %scevgep21.i.i.i = getelementptr i8** %scevgep78, i32 %i.115.i.i.i ; [#uses=1] + %scevgep242536.i.i.i = load i8** %scevgep24.i.i.i ; [#uses=1] + %85 = icmp eq i8* %scevgep242536.i.i.i, null ; [#uses=1] + %scevgep212235.i.i.i = load i8** %scevgep21.i.i.i ; [#uses=1] + %86 = bitcast i8* %scevgep212235.i.i.i to %struct.dwarf_fde* ; <%struct.dwarf_fde*> [#uses=2] + br i1 %85, label %bb9.i.i.i, label %bb8.i.i.i + +bb8.i.i.i: ; preds = %bb7.i.i.i + %87 = getelementptr %struct.fde_vector* %55, i32 0, i32 2, i32 %j.114.i.i.i ; <%struct.dwarf_fde**> [#uses=1] + store %struct.dwarf_fde* %86, %struct.dwarf_fde** %87, align 4 + %88 = add i32 %j.114.i.i.i, 1 ; [#uses=1] + br label %bb10.i.i.i + +bb9.i.i.i: ; preds = %bb7.i.i.i + %89 = getelementptr %struct.fde_vector* %65, i32 0, i32 2, i32 %k.113.i.i.i ; <%struct.dwarf_fde**> [#uses=1] + store %struct.dwarf_fde* %86, %struct.dwarf_fde** %89, align 4 + %90 = add i32 %k.113.i.i.i, 1 ; [#uses=1] + br label %bb10.i.i.i + +bb10.i.i.i: ; preds = %bb9.i.i.i, %bb8.i.i.i + %k.0.i.i.i = phi i32 [ %k.113.i.i.i, %bb8.i.i.i ], [ %90, %bb9.i.i.i ] ; [#uses=2] + %j.0.i.i.i = phi i32 [ %88, %bb8.i.i.i ], [ %j.114.i.i.i, %bb9.i.i.i ] ; [#uses=2] + %91 = add i32 %i.115.i.i.i, 1 ; [#uses=2] + %exitcond = icmp eq i32 %91, %umax76 ; [#uses=1] + br i1 %exitcond, label %fde_split.exit.i.i, label %bb7.i.i.i + +bb11.loopexit.i.i.i: ; preds = %bb4.i.i.i + call void @llvm.dbg.stoppoint(i32 463, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + br i1 %69, label %fde_split.exit.i.i, label %bb7.i.i.i + +fde_split.exit.i.i: ; preds = %bb11.loopexit.i.i.i, %bb10.i.i.i, %bb8.i.i + %j.1.lcssa.i.i.i = phi i32 [ 0, %bb8.i.i ], [ 0, %bb11.loopexit.i.i.i ], [ %j.0.i.i.i, %bb10.i.i.i ] ; [#uses=1] + %k.1.lcssa.i.i.i = phi i32 [ 0, %bb8.i.i ], [ 0, %bb11.loopexit.i.i.i ], [ %k.0.i.i.i, %bb10.i.i.i ] ; [#uses=1] + call void @llvm.dbg.stoppoint(i32 468, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + store i32 %j.1.lcssa.i.i.i, i32* %67, align 4 + call void @llvm.dbg.stoppoint(i32 469, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %92 = getelementptr %struct.fde_vector* %65, i32 0, i32 1 ; [#uses=1] + store i32 %k.1.lcssa.i.i.i, i32* %92, align 4 + call void @llvm.dbg.stoppoint(i32 579, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram208 to { }*)) + %93 = load %struct.fde_vector** %33, align 4 ; <%struct.fde_vector*> [#uses=1] + %94 = getelementptr %struct.fde_vector* %93, i32 0, i32 1 ; [#uses=1] + %95 = load i32* %94, align 4 ; [#uses=1] + %96 = load %struct.fde_vector** %39, align 4 ; <%struct.fde_vector*> [#uses=2] + %97 = getelementptr %struct.fde_vector* %96, i32 0, i32 1 ; [#uses=1] + %98 = load i32* %97, align 4 ; [#uses=1] + %99 = add i32 %98, %95 ; [#uses=1] + %100 = icmp eq i32 %99, %count.1.i ; [#uses=1] + br i1 %100, label %bb10.i.i, label %bb9.i.i + +bb9.i.i: ; preds = %fde_split.exit.i.i + call arm_apcscc void @abort() noreturn nounwind + unreachable + +bb10.i.i: ; preds = %fde_split.exit.i.i + call void @llvm.dbg.stoppoint(i32 580, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + call arm_apcscc void @frame_heapsort(%struct.object* %ob, i32 (%struct.object*, %struct.dwarf_fde*, %struct.dwarf_fde*)* %fde_compare.0.i.i, %struct.fde_vector* %96) + call void @llvm.dbg.stoppoint(i32 581, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %101 = load %struct.fde_vector** %33, align 4 ; <%struct.fde_vector*> [#uses=3] + %v19.i.i.i = bitcast %struct.fde_vector* %101 to i8* ; [#uses=2] + %102 = load %struct.fde_vector** %39, align 4 ; <%struct.fde_vector*> [#uses=3] + %v230.i.i.i = bitcast %struct.fde_vector* %102 to i8* ; [#uses=1] + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram219 to { }*)) + call void @llvm.dbg.stoppoint(i32 542, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %103 = getelementptr %struct.fde_vector* %102, i32 0, i32 1 ; [#uses=2] + %104 = load i32* %103, align 4 ; [#uses=4] + call void @llvm.dbg.stoppoint(i32 543, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %105 = icmp eq i32 %104, 0 ; [#uses=1] + br i1 %105, label %fde_merge.exit.i.i, label %bb.i.i.i + +bb.i.i.i: ; preds = %bb10.i.i + %106 = getelementptr %struct.fde_vector* %101, i32 0, i32 1 ; [#uses=3] + %107 = load i32* %106, align 4 ; [#uses=1] + %tmp18.i.i.i = add i32 %104, -1 ; [#uses=1] + %tmp104 = shl i32 %104, 2 ; [#uses=1] + %tmp105 = add i32 %tmp104, 4 ; [#uses=1] + br label %bb1.i13.i.i + +bb1.i13.i.i: ; preds = %bb5.i.i.i, %bb.i.i.i + %indvar15.i.i.i = phi i32 [ 0, %bb.i.i.i ], [ %indvar.next16.i.i.i, %bb5.i.i.i ] ; [#uses=3] + %i1.1.i.i.i = phi i32 [ %107, %bb.i.i.i ], [ %i1.0.i.i.i, %bb5.i.i.i ] ; [#uses=4] + %tmp100 = sub i32 %tmp18.i.i.i, %indvar15.i.i.i ; [#uses=2] + %tmp103 = mul i32 %indvar15.i.i.i, -4 ; [#uses=1] + %tmp106 = add i32 %tmp103, %tmp105 ; [#uses=1] + %scevgep107 = getelementptr i8* %v230.i.i.i, i32 %tmp106 ; [#uses=1] + %scevgep3536.i.i.i = bitcast i8* %scevgep107 to %struct.dwarf_fde** ; <%struct.dwarf_fde**> [#uses=1] + %108 = load %struct.dwarf_fde** %scevgep3536.i.i.i, align 4 ; <%struct.dwarf_fde*> [#uses=2] + %tmp85 = add i32 %i1.1.i.i.i, %tmp100 ; [#uses=1] + %tmp86 = shl i32 %tmp85, 2 ; [#uses=1] + %tmp87 = add i32 %tmp86, 8 ; [#uses=1] + %tmp91 = shl i32 %i1.1.i.i.i, 2 ; [#uses=1] + %tmp92 = add i32 %tmp91, 4 ; [#uses=1] + br label %bb3.i17.i.i + +bb2.i14.i.i: ; preds = %bb4.i18.i.i + %109 = load %struct.dwarf_fde** %scevgep14.i.i.i, align 4 ; <%struct.dwarf_fde*> [#uses=1] + store %struct.dwarf_fde* %109, %struct.dwarf_fde** %scevgep2425.i.i.i, align 4 + %indvar.next.i.i.i = add i32 %110, 1 ; [#uses=1] + br label %bb3.i17.i.i + +bb3.i17.i.i: ; preds = %bb2.i14.i.i, %bb1.i13.i.i + %110 = phi i32 [ 0, %bb1.i13.i.i ], [ %indvar.next.i.i.i, %bb2.i14.i.i ] ; [#uses=4] + %tmp82 = mul i32 %110, -4 ; [#uses=2] + %tmp88 = add i32 %tmp82, %tmp87 ; [#uses=1] + %scevgep89 = getelementptr i8* %v19.i.i.i, i32 %tmp88 ; [#uses=1] + %scevgep2425.i.i.i = bitcast i8* %scevgep89 to %struct.dwarf_fde** ; <%struct.dwarf_fde**> [#uses=1] + %tmp93 = add i32 %tmp82, %tmp92 ; [#uses=1] + %scevgep94 = getelementptr i8* %v19.i.i.i, i32 %tmp93 ; [#uses=1] + %scevgep14.i.i.i = bitcast i8* %scevgep94 to %struct.dwarf_fde** ; <%struct.dwarf_fde**> [#uses=2] + %i1.0.i.i.i = sub i32 %i1.1.i.i.i, %110 ; [#uses=2] + %111 = icmp eq i32 %i1.1.i.i.i, %110 ; [#uses=1] + br i1 %111, label %bb5.i.i.i, label %bb4.i18.i.i + +bb4.i18.i.i: ; preds = %bb3.i17.i.i + %112 = load %struct.dwarf_fde** %scevgep14.i.i.i, align 4 ; <%struct.dwarf_fde*> [#uses=1] + %113 = call arm_apcscc i32 %fde_compare.0.i.i(%struct.object* %ob, %struct.dwarf_fde* %112, %struct.dwarf_fde* %108) ; [#uses=1] + %114 = icmp sgt i32 %113, 0 ; [#uses=1] + br i1 %114, label %bb2.i14.i.i, label %bb5.i.i.i + +bb5.i.i.i: ; preds = %bb4.i18.i.i, %bb3.i17.i.i + %tmp29.i.i.i = add i32 %i1.0.i.i.i, %tmp100 ; [#uses=1] + %115 = getelementptr %struct.fde_vector* %101, i32 0, i32 2, i32 %tmp29.i.i.i ; <%struct.dwarf_fde**> [#uses=1] + store %struct.dwarf_fde* %108, %struct.dwarf_fde** %115, align 4 + %indvar.next16.i.i.i = add i32 %indvar15.i.i.i, 1 ; [#uses=2] + %exitcond98 = icmp eq i32 %indvar.next16.i.i.i, %104 ; [#uses=1] + br i1 %exitcond98, label %bb6.i.i.i, label %bb1.i13.i.i + +bb6.i.i.i: ; preds = %bb5.i.i.i + call void @llvm.dbg.stoppoint(i32 558, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %116 = load i32* %106, align 4 ; [#uses=1] + %117 = load i32* %103, align 4 ; [#uses=1] + %118 = add i32 %117, %116 ; [#uses=1] + store i32 %118, i32* %106, align 4 + %.pre.i.i = load %struct.fde_vector** %39, align 4 ; <%struct.fde_vector*> [#uses=1] + br label %fde_merge.exit.i.i + +fde_merge.exit.i.i: ; preds = %bb6.i.i.i, %bb10.i.i + %119 = phi %struct.fde_vector* [ %.pre.i.i, %bb6.i.i.i ], [ %102, %bb10.i.i ] ; <%struct.fde_vector*> [#uses=1] + call void @llvm.dbg.stoppoint(i32 582, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram219 to { }*)) + free %struct.fde_vector* %119 + br label %end_fde_sort.exit.i + +bb11.i.i: ; preds = %bb7.i.i + call void @llvm.dbg.stoppoint(i32 588, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + call arm_apcscc void @frame_heapsort(%struct.object* %ob, i32 (%struct.object*, %struct.dwarf_fde*, %struct.dwarf_fde*)* %fde_compare.0.i.i, %struct.fde_vector* %55) + br label %end_fde_sort.exit.i + +end_fde_sort.exit.i: ; preds = %bb11.i.i, %fde_merge.exit.i.i + call void @llvm.dbg.stoppoint(i32 759, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram278 to { }*)) + %120 = load %struct.fde_vector** %33, align 4 ; <%struct.fde_vector*> [#uses=1] + %121 = load %struct.dwarf_fde** %45, align 4 ; <%struct.dwarf_fde*> [#uses=1] + %122 = getelementptr %struct.fde_vector* %120, i32 0, i32 0 ; [#uses=1] + %123 = bitcast %struct.dwarf_fde* %121 to i8* ; [#uses=1] + store i8* %123, i8** %122, align 4 + call void @llvm.dbg.stoppoint(i32 760, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %124 = load %struct.fde_vector** %33, align 4 ; <%struct.fde_vector*> [#uses=1] + %.c.i = bitcast %struct.fde_vector* %124 to %struct.dwarf_fde* ; <%struct.dwarf_fde*> [#uses=1] + store %struct.dwarf_fde* %.c.i, %struct.dwarf_fde** %45 + call void @llvm.dbg.stoppoint(i32 762, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %125 = load i32* %0 ; [#uses=1] + %126 = or i32 %125, 1 ; [#uses=2] + store i32 %126, i32* %0 + br label %init_object.exit + +init_object.exit: ; preds = %end_fde_sort.exit.i, %bb1.i.i, %bb8.i + %.rle120 = phi i32 [ %126, %end_fde_sort.exit.i ], [ %.rle121, %bb8.i ], [ %.rle121, %bb1.i.i ] ; [#uses=1] + call void @llvm.dbg.stoppoint(i32 938, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram282 to { }*)) + %127 = getelementptr %struct.object* %ob, i32 0, i32 0 ; [#uses=1] + %128 = load i8** %127, align 4 ; [#uses=1] + %129 = icmp ugt i8* %128, %pc ; [#uses=1] + br i1 %129, label %bb16, label %bb2 + +bb2: ; preds = %init_object.exit, %entry + %130 = phi i32 [ %1, %entry ], [ %.rle120, %init_object.exit ] ; [#uses=5] + call void @llvm.dbg.stoppoint(i32 942, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %131 = and i32 %130, 1 ; [#uses=1] + %132 = icmp eq i32 %131, 0 ; [#uses=1] + br i1 %132, label %bb8, label %bb3 + +bb3: ; preds = %bb2 + call void @llvm.dbg.stoppoint(i32 944, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %133 = and i32 %130, 4 ; [#uses=1] + %134 = icmp eq i32 %133, 0 ; [#uses=1] + br i1 %134, label %bb5, label %bb4 + +bb4: ; preds = %bb3 + call void @llvm.dbg.stoppoint(i32 945, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram258 to { }*)) nounwind + call void @llvm.dbg.stoppoint(i32 898, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %135 = getelementptr %struct.object* %ob, i32 0, i32 3, i32 0 ; <%struct.dwarf_fde**> [#uses=1] + %136 = load %struct.dwarf_fde** %135 ; <%struct.dwarf_fde*> [#uses=2] + %137 = bitcast %struct.dwarf_fde* %136 to %struct.fde_vector* ; <%struct.fde_vector*> [#uses=1] + call void @llvm.dbg.stoppoint(i32 901, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %138 = getelementptr %struct.dwarf_fde* %136, i32 0, i32 1 ; [#uses=1] + %139 = load i32* %138, align 4 ; [#uses=1] + %140 = ptrtoint i8* %pc to i32 ; [#uses=2] + %141 = getelementptr %struct.object* %ob, i32 0, i32 1 ; [#uses=1] + %142 = getelementptr %struct.object* %ob, i32 0, i32 2 ; [#uses=1] + br label %bb5.i23 + +bb.i18: ; preds = %bb5.i23 + %143 = add i32 %lo.0.i, %hi.0.ph.i.ph ; [#uses=1] + %144 = lshr i32 %143, 1 ; [#uses=3] + %145 = getelementptr %struct.fde_vector* %137, i32 0, i32 2, i32 %144 ; <%struct.dwarf_fde**> [#uses=1] + %146 = load %struct.dwarf_fde** %145, align 4 ; <%struct.dwarf_fde*> [#uses=3] + %147 = getelementptr %struct.dwarf_fde* %146, i32 0, i32 1 ; [#uses=2] + %148 = bitcast i32* %147 to i8* ; [#uses=1] + %149 = load i32* %147, align 1 ; [#uses=1] + %150 = sub i32 0, %149 ; [#uses=1] + %151 = getelementptr i8* %148, i32 %150 ; [#uses=1] + %152 = bitcast i8* %151 to %struct.dwarf_cie* ; <%struct.dwarf_cie*> [#uses=1] + %153 = call arm_apcscc i32 @get_cie_encoding(%struct.dwarf_cie* %152) nounwind ; [#uses=2] + %154 = trunc i32 %153 to i8 ; [#uses=3] + %155 = icmp eq i8 %154, -1 ; [#uses=1] + br i1 %155, label %base_from_object.exit.i, label %bb1.i.i19 + +bb1.i.i19: ; preds = %bb.i18 + %156 = and i32 %153, 112 ; [#uses=1] + switch i32 %156, label %bb5.i.i [ + i32 0, label %base_from_object.exit.i + i32 16, label %base_from_object.exit.i + i32 32, label %bb3.i.i + i32 48, label %bb4.i.i20 + i32 80, label %base_from_object.exit.i + ] + +bb3.i.i: ; preds = %bb1.i.i19 + %157 = load i8** %141, align 4 ; [#uses=1] + %158 = ptrtoint i8* %157 to i32 ; [#uses=1] + br label %base_from_object.exit.i + +bb4.i.i20: ; preds = %bb1.i.i19 + %159 = load i8** %142, align 4 ; [#uses=1] + %160 = ptrtoint i8* %159 to i32 ; [#uses=1] + br label %base_from_object.exit.i + +bb5.i.i: ; preds = %bb1.i.i19 + call void @llvm.dbg.stoppoint(i32 909, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram248 to { }*)) nounwind + call void @llvm.dbg.stoppoint(i32 312, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*)) nounwind + call void @llvm.dbg.stoppoint(i32 163, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*)) nounwind + call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*)) nounwind + call void @llvm.dbg.stoppoint(i32 910, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram248 to { }*)) nounwind + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*)) nounwind + call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + call arm_apcscc void @abort() noreturn nounwind + unreachable + +base_from_object.exit.i: ; preds = %bb4.i.i20, %bb3.i.i, %bb1.i.i19, %bb1.i.i19, %bb1.i.i19, %bb.i18 + %161 = phi i32 [ %160, %bb4.i.i20 ], [ %158, %bb3.i.i ], [ 0, %bb.i18 ], [ 0, %bb1.i.i19 ], [ 0, %bb1.i.i19 ], [ 0, %bb1.i.i19 ] ; [#uses=1] + %162 = getelementptr %struct.dwarf_fde* %146, i32 0, i32 2, i32 0 ; [#uses=1] + %163 = call arm_apcscc i8* @read_encoded_value_with_base(i8 zeroext %154, i32 %161, i8* %162, i32* %pc_begin.i) nounwind ; [#uses=1] + %164 = and i8 %154, 15 ; [#uses=1] + %165 = call arm_apcscc i8* @read_encoded_value_with_base(i8 zeroext %164, i32 0, i8* %163, i32* %pc_range.i) nounwind ; [#uses=0] + %166 = load i32* %pc_begin.i, align 4 ; [#uses=2] + %167 = icmp ult i32 %140, %166 ; [#uses=1] + br i1 %167, label %bb5.i23, label %bb2.i21 + +bb2.i21: ; preds = %base_from_object.exit.i + %168 = load i32* %pc_range.i, align 4 ; [#uses=1] + %169 = add i32 %168, %166 ; [#uses=1] + %170 = icmp ult i32 %140, %169 ; [#uses=1] + br i1 %170, label %binary_search_mixed_encoding_fdes.exit, label %bb3.i22 + +bb3.i22: ; preds = %bb2.i21 + %171 = add i32 %144, 1 ; [#uses=1] + br label %bb5.i23 + +bb5.i23: ; preds = %bb3.i22, %base_from_object.exit.i, %bb4 + %hi.0.ph.i.ph = phi i32 [ %139, %bb4 ], [ %144, %base_from_object.exit.i ], [ %hi.0.ph.i.ph, %bb3.i22 ] ; [#uses=3] + %lo.0.i = phi i32 [ %171, %bb3.i22 ], [ 0, %bb4 ], [ %lo.0.i, %base_from_object.exit.i ] ; [#uses=3] + %172 = icmp ult i32 %lo.0.i, %hi.0.ph.i.ph ; [#uses=1] + br i1 %172, label %bb.i18, label %binary_search_mixed_encoding_fdes.exit + +binary_search_mixed_encoding_fdes.exit: ; preds = %bb5.i23, %bb2.i21 + %.0.i = phi %struct.dwarf_fde* [ %146, %bb2.i21 ], [ null, %bb5.i23 ] ; <%struct.dwarf_fde*> [#uses=1] + call void @llvm.dbg.stoppoint(i32 923, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram284 to { }*)) + ret %struct.dwarf_fde* %.0.i + +bb5: ; preds = %bb3 + call void @llvm.dbg.stoppoint(i32 946, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %173 = and i32 %130, 2040 ; [#uses=1] + %174 = icmp eq i32 %173, 0 ; [#uses=1] + %175 = getelementptr %struct.object* %ob, i32 0, i32 3, i32 0 ; <%struct.dwarf_fde**> [#uses=1] + %176 = load %struct.dwarf_fde** %175 ; <%struct.dwarf_fde*> [#uses=3] + %177 = bitcast %struct.dwarf_fde* %176 to %struct.fde_vector* ; <%struct.fde_vector*> [#uses=2] + br i1 %174, label %bb6, label %bb7 + +bb6: ; preds = %bb5 + call void @llvm.dbg.stoppoint(i32 947, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram223 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 844, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %178 = getelementptr %struct.dwarf_fde* %176, i32 0, i32 1 ; [#uses=1] + %179 = load i32* %178, align 4 ; [#uses=1] + br label %bb5.i30 + +bb.i25: ; preds = %bb5.i30 + %180 = add i32 %lo.0.i29, %hi.0.ph.i28.ph ; [#uses=1] + %181 = lshr i32 %180, 1 ; [#uses=3] + %182 = getelementptr %struct.fde_vector* %177, i32 0, i32 2, i32 %181 ; <%struct.dwarf_fde**> [#uses=1] + %183 = load %struct.dwarf_fde** %182, align 4 ; <%struct.dwarf_fde*> [#uses=2] + %184 = getelementptr %struct.dwarf_fde* %183, i32 0, i32 2 ; <[0 x i8]*> [#uses=2] + %185 = bitcast [0 x i8]* %184 to i8** ; [#uses=1] + %186 = load i8** %185, align 4 ; [#uses=2] + %187 = icmp ugt i8* %186, %pc ; [#uses=1] + br i1 %187, label %bb5.i30, label %bb2.i26 + +bb2.i26: ; preds = %bb.i25 + %188 = bitcast [0 x i8]* %184 to i32* ; [#uses=1] + %189 = getelementptr i32* %188, i32 1 ; [#uses=1] + %190 = load i32* %189, align 4 ; [#uses=1] + %191 = getelementptr i8* %186, i32 %190 ; [#uses=1] + %192 = icmp ugt i8* %191, %pc ; [#uses=1] + br i1 %192, label %binary_search_unencoded_fdes.exit, label %bb3.i27 + +bb3.i27: ; preds = %bb2.i26 + %193 = add i32 %181, 1 ; [#uses=1] + br label %bb5.i30 + +bb5.i30: ; preds = %bb3.i27, %bb.i25, %bb6 + %hi.0.ph.i28.ph = phi i32 [ %179, %bb6 ], [ %181, %bb.i25 ], [ %hi.0.ph.i28.ph, %bb3.i27 ] ; [#uses=3] + %lo.0.i29 = phi i32 [ %193, %bb3.i27 ], [ 0, %bb6 ], [ %lo.0.i29, %bb.i25 ] ; [#uses=3] + %194 = icmp ult i32 %lo.0.i29, %hi.0.ph.i28.ph ; [#uses=1] + br i1 %194, label %bb.i25, label %binary_search_unencoded_fdes.exit + +binary_search_unencoded_fdes.exit: ; preds = %bb5.i30, %bb2.i26 + %.0.i31 = phi %struct.dwarf_fde* [ %183, %bb2.i26 ], [ null, %bb5.i30 ] ; <%struct.dwarf_fde*> [#uses=1] + tail call void @llvm.dbg.stoppoint(i32 862, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + ret %struct.dwarf_fde* %.0.i31 + +bb7: ; preds = %bb5 + call void @llvm.dbg.stoppoint(i32 949, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram260 to { }*)) nounwind + call void @llvm.dbg.stoppoint(i32 869, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %195 = lshr i32 %130, 3 ; [#uses=2] + call void @llvm.dbg.stoppoint(i32 870, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %196 = trunc i32 %195 to i8 ; [#uses=3] + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*)) nounwind + call void @llvm.dbg.stoppoint(i32 242, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %197 = icmp eq i8 %196, -1 ; [#uses=1] + br i1 %197, label %base_from_object.exit.i39, label %bb1.i.i35 + +bb1.i.i35: ; preds = %bb7 + call void @llvm.dbg.stoppoint(i32 245, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %198 = and i32 %195, 112 ; [#uses=1] + switch i32 %198, label %bb5.i.i38 [ + i32 0, label %base_from_object.exit.i39 + i32 16, label %base_from_object.exit.i39 + i32 32, label %bb3.i.i36 + i32 48, label %bb4.i.i37 + i32 80, label %base_from_object.exit.i39 + ] + +bb3.i.i36: ; preds = %bb1.i.i35 + call void @llvm.dbg.stoppoint(i32 253, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %199 = getelementptr %struct.object* %ob, i32 0, i32 1 ; [#uses=1] + %200 = load i8** %199, align 4 ; [#uses=1] + %201 = ptrtoint i8* %200 to i32 ; [#uses=1] + br label %base_from_object.exit.i39 + +bb4.i.i37: ; preds = %bb1.i.i35 + call void @llvm.dbg.stoppoint(i32 255, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %202 = getelementptr %struct.object* %ob, i32 0, i32 2 ; [#uses=1] + %203 = load i8** %202, align 4 ; [#uses=1] + %204 = ptrtoint i8* %203 to i32 ; [#uses=1] + br label %base_from_object.exit.i39 + +bb5.i.i38: ; preds = %bb1.i.i35 + call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + call arm_apcscc void @abort() noreturn nounwind + unreachable + +base_from_object.exit.i39: ; preds = %bb4.i.i37, %bb3.i.i36, %bb1.i.i35, %bb1.i.i35, %bb1.i.i35, %bb7 + %205 = phi i32 [ %204, %bb4.i.i37 ], [ %201, %bb3.i.i36 ], [ 0, %bb7 ], [ 0, %bb1.i.i35 ], [ 0, %bb1.i.i35 ], [ 0, %bb1.i.i35 ] ; [#uses=1] + call void @llvm.dbg.stoppoint(i32 873, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*)) nounwind + %206 = getelementptr %struct.dwarf_fde* %176, i32 0, i32 1 ; [#uses=1] + %207 = load i32* %206, align 4 ; [#uses=1] + %208 = and i8 %196, 15 ; [#uses=1] + %209 = ptrtoint i8* %pc to i32 ; [#uses=2] + br label %bb5.i45 + +bb.i40: ; preds = %bb5.i45 + %210 = add i32 %lo.0.i44, %hi.0.ph.i43.ph ; [#uses=1] + %211 = lshr i32 %210, 1 ; [#uses=3] + %212 = getelementptr %struct.fde_vector* %177, i32 0, i32 2, i32 %211 ; <%struct.dwarf_fde**> [#uses=1] + %213 = load %struct.dwarf_fde** %212, align 4 ; <%struct.dwarf_fde*> [#uses=2] + %214 = getelementptr %struct.dwarf_fde* %213, i32 0, i32 2, i32 0 ; [#uses=1] + %215 = call arm_apcscc i8* @read_encoded_value_with_base(i8 zeroext %196, i32 %205, i8* %214, i32* %pc_begin.i34) nounwind ; [#uses=1] + %216 = call arm_apcscc i8* @read_encoded_value_with_base(i8 zeroext %208, i32 0, i8* %215, i32* %pc_range.i33) nounwind ; [#uses=0] + %217 = load i32* %pc_begin.i34, align 4 ; [#uses=2] + %218 = icmp ult i32 %209, %217 ; [#uses=1] + br i1 %218, label %bb5.i45, label %bb2.i41 + +bb2.i41: ; preds = %bb.i40 + %219 = load i32* %pc_range.i33, align 4 ; [#uses=1] + %220 = add i32 %219, %217 ; [#uses=1] + %221 = icmp ult i32 %209, %220 ; [#uses=1] + br i1 %221, label %binary_search_single_encoding_fdes.exit, label %bb3.i42 + +bb3.i42: ; preds = %bb2.i41 + %222 = add i32 %211, 1 ; [#uses=1] + br label %bb5.i45 + +bb5.i45: ; preds = %bb3.i42, %bb.i40, %base_from_object.exit.i39 + %hi.0.ph.i43.ph = phi i32 [ %207, %base_from_object.exit.i39 ], [ %211, %bb.i40 ], [ %hi.0.ph.i43.ph, %bb3.i42 ] ; [#uses=3] + %lo.0.i44 = phi i32 [ %222, %bb3.i42 ], [ 0, %base_from_object.exit.i39 ], [ %lo.0.i44, %bb.i40 ] ; [#uses=3] + %223 = icmp ult i32 %lo.0.i44, %hi.0.ph.i43.ph ; [#uses=1] + br i1 %223, label %bb.i40, label %binary_search_single_encoding_fdes.exit + +binary_search_single_encoding_fdes.exit: ; preds = %bb5.i45, %bb2.i41 + %.0.i46 = phi %struct.dwarf_fde* [ %213, %bb2.i41 ], [ null, %bb5.i45 ] ; <%struct.dwarf_fde*> [#uses=1] + call void @llvm.dbg.stoppoint(i32 892, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + ret %struct.dwarf_fde* %.0.i46 + +bb8: ; preds = %bb2 + call void @llvm.dbg.stoppoint(i32 954, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %224 = and i32 %130, 2 ; [#uses=1] + %225 = icmp eq i32 %224, 0 ; [#uses=1] + %226 = getelementptr %struct.object* %ob, i32 0, i32 3, i32 0 ; <%struct.dwarf_fde**> [#uses=2] + br i1 %225, label %bb15, label %bb9 + +bb9: ; preds = %bb8 + call void @llvm.dbg.stoppoint(i32 957, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %227 = load %struct.dwarf_fde** %226 ; <%struct.dwarf_fde*> [#uses=1] + %228 = bitcast %struct.dwarf_fde* %227 to i8* ; [#uses=1] + br label %bb13 + +bb10: ; preds = %bb13 + %229 = call arm_apcscc %struct.dwarf_fde* @linear_search_fdes(%struct.object* %ob, %struct.dwarf_fde* %231, i8* %pc) ; <%struct.dwarf_fde*> [#uses=2] + %230 = icmp eq %struct.dwarf_fde* %229, null ; [#uses=1] + br i1 %230, label %bb12, label %bb16 + +bb12: ; preds = %bb10 + %indvar.next = add i32 %indvar, 1 ; [#uses=1] + br label %bb13 + +bb13: ; preds = %bb12, %bb9 + %indvar = phi i32 [ 0, %bb9 ], [ %indvar.next, %bb12 ] ; [#uses=2] + %tmp117 = shl i32 %indvar, 2 ; [#uses=1] + %scevgep118 = getelementptr i8* %228, i32 %tmp117 ; [#uses=1] + %p.0 = bitcast i8* %scevgep118 to %struct.dwarf_fde** ; <%struct.dwarf_fde**> [#uses=1] + %231 = load %struct.dwarf_fde** %p.0, align 4 ; <%struct.dwarf_fde*> [#uses=2] + %232 = icmp eq %struct.dwarf_fde* %231, null ; [#uses=1] + br i1 %232, label %bb16, label %bb10 + +bb15: ; preds = %bb8 + call void @llvm.dbg.stoppoint(i32 966, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %233 = load %struct.dwarf_fde** %226, align 4 ; <%struct.dwarf_fde*> [#uses=1] + %234 = call arm_apcscc %struct.dwarf_fde* @linear_search_fdes(%struct.object* %ob, %struct.dwarf_fde* %233, i8* %pc) ; <%struct.dwarf_fde*> [#uses=1] + ret %struct.dwarf_fde* %234 + +bb16: ; preds = %bb13, %bb10, %init_object.exit + %.0 = phi %struct.dwarf_fde* [ null, %init_object.exit ], [ %229, %bb10 ], [ null, %bb13 ] ; <%struct.dwarf_fde*> [#uses=1] + call void @llvm.dbg.stoppoint(i32 966, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + ret %struct.dwarf_fde* %.0 +} + +define arm_apcscc %struct.dwarf_fde* @_Unwind_Find_FDE(i8* %pc, %struct.dwarf_eh_bases* nocapture %bases) { +entry: + %func = alloca i32, align 4 ; [#uses=2] + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram297 to { }*)) + call void @llvm.dbg.stoppoint(i32 977, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*)) + call void @llvm.dbg.stoppoint(i32 982, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram166 to { }*)) + br label %bb3 + +bb: ; preds = %bb3 + %0 = getelementptr %struct.object* %ob.0, i32 0, i32 0 ; [#uses=1] + %1 = load i8** %0, align 4 ; [#uses=1] + %2 = icmp ugt i8* %1, %pc ; [#uses=1] + br i1 %2, label %bb2, label %bb1 + +bb1: ; preds = %bb + call void @llvm.dbg.stoppoint(i32 985, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %3 = call arm_apcscc %struct.dwarf_fde* @search_object(%struct.object* %ob.0, i8* %pc) ; <%struct.dwarf_fde*> [#uses=3] + call void @llvm.dbg.stoppoint(i32 986, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %4 = icmp eq %struct.dwarf_fde* %3, null ; [#uses=1] + br i1 %4, label %bb9, label %fini + +bb2: ; preds = %bb + %5 = getelementptr %struct.object* %ob.0, i32 0, i32 5 ; <%struct.object**> [#uses=1] + br label %bb3 + +bb3: ; preds = %bb2, %entry + %ob.0.in = phi %struct.object** [ @seen_objects, %entry ], [ %5, %bb2 ] ; <%struct.object**> [#uses=1] + %ob.0 = load %struct.object** %ob.0.in ; <%struct.object*> [#uses=5] + %6 = icmp eq %struct.object* %ob.0, null ; [#uses=1] + br i1 %6, label %bb9, label %bb + +bb4: ; preds = %bb9 + %7 = getelementptr %struct.object* %19, i32 0, i32 5 ; <%struct.object**> [#uses=2] + %8 = load %struct.object** %7, align 4 ; <%struct.object*> [#uses=1] + store %struct.object* %8, %struct.object** @unseen_objects, align 4 + %9 = call arm_apcscc %struct.dwarf_fde* @search_object(%struct.object* %19, i8* %pc) ; <%struct.dwarf_fde*> [#uses=3] + %10 = getelementptr %struct.object* %19, i32 0, i32 0 ; [#uses=1] + br label %bb7 + +bb5: ; preds = %bb7 + %11 = getelementptr %struct.object* %16, i32 0, i32 0 ; [#uses=1] + %12 = load i8** %11, align 4 ; [#uses=1] + %13 = load i8** %10, align 4 ; [#uses=1] + %14 = icmp ult i8* %12, %13 ; [#uses=1] + br i1 %14, label %bb8, label %bb6 + +bb6: ; preds = %bb5 + %15 = getelementptr %struct.object* %16, i32 0, i32 5 ; <%struct.object**> [#uses=1] + br label %bb7 + +bb7: ; preds = %bb6, %bb4 + %p.0 = phi %struct.object** [ @seen_objects, %bb4 ], [ %15, %bb6 ] ; <%struct.object**> [#uses=2] + %16 = load %struct.object** %p.0, align 4 ; <%struct.object*> [#uses=4] + %17 = icmp eq %struct.object* %16, null ; [#uses=1] + br i1 %17, label %bb8, label %bb5 + +bb8: ; preds = %bb7, %bb5 + store %struct.object* %16, %struct.object** %7, align 4 + store %struct.object* %19, %struct.object** %p.0, align 4 + %18 = icmp eq %struct.dwarf_fde* %9, null ; [#uses=1] + br i1 %18, label %bb9, label %fini + +bb9: ; preds = %bb8, %bb3, %bb1 + %f.0 = phi %struct.dwarf_fde* [ %9, %bb8 ], [ %3, %bb1 ], [ null, %bb3 ] ; <%struct.dwarf_fde*> [#uses=1] + %19 = load %struct.object** @unseen_objects, align 4 ; <%struct.object*> [#uses=7] + %20 = icmp eq %struct.object* %19, null ; [#uses=1] + br i1 %20, label %fini, label %bb4 + +fini: ; preds = %bb9, %bb8, %bb1 + %f.1 = phi %struct.dwarf_fde* [ %3, %bb1 ], [ %9, %bb8 ], [ %f.0, %bb9 ] ; <%struct.dwarf_fde*> [#uses=5] + %ob.1 = phi %struct.object* [ %ob.0, %bb1 ], [ %19, %bb9 ], [ %19, %bb8 ] ; <%struct.object*> [#uses=3] + call void @llvm.dbg.stoppoint(i32 1011, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*)) + call void @llvm.dbg.stoppoint(i32 1013, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*)) + %21 = icmp eq %struct.dwarf_fde* %f.1, null ; [#uses=1] + br i1 %21, label %bb13, label %bb10 + +bb10: ; preds = %fini + call void @llvm.dbg.stoppoint(i32 1018, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %22 = getelementptr %struct.object* %ob.1, i32 0, i32 1 ; [#uses=2] + %23 = load i8** %22, align 4 ; [#uses=1] + %24 = getelementptr %struct.dwarf_eh_bases* %bases, i32 0, i32 0 ; [#uses=1] + store i8* %23, i8** %24, align 4 + call void @llvm.dbg.stoppoint(i32 1019, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %25 = getelementptr %struct.object* %ob.1, i32 0, i32 2 ; [#uses=2] + %26 = load i8** %25, align 4 ; [#uses=1] + %27 = getelementptr %struct.dwarf_eh_bases* %bases, i32 0, i32 1 ; [#uses=1] + store i8* %26, i8** %27, align 4 + call void @llvm.dbg.stoppoint(i32 1021, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %28 = getelementptr %struct.object* %ob.1, i32 0, i32 4, i32 0 ; [#uses=1] + %29 = load i32* %28 ; [#uses=2] + %30 = lshr i32 %29, 3 ; [#uses=1] + %31 = and i32 %30, 255 ; [#uses=1] + call void @llvm.dbg.stoppoint(i32 1022, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %32 = and i32 %29, 4 ; [#uses=1] + %33 = icmp eq i32 %32, 0 ; [#uses=1] + br i1 %33, label %bb12, label %bb11 + +bb11: ; preds = %bb10 + call void @llvm.dbg.stoppoint(i32 1023, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram248 to { }*)) nounwind + call void @llvm.dbg.stoppoint(i32 312, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*)) nounwind + call void @llvm.dbg.stoppoint(i32 163, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit30 to { }*)) nounwind + %34 = getelementptr %struct.dwarf_fde* %f.1, i32 0, i32 1 ; [#uses=2] + %35 = bitcast i32* %34 to i8* ; [#uses=1] + %36 = load i32* %34, align 1 ; [#uses=1] + %37 = sub i32 0, %36 ; [#uses=1] + %38 = getelementptr i8* %35, i32 %37 ; [#uses=1] + %39 = bitcast i8* %38 to %struct.dwarf_cie* ; <%struct.dwarf_cie*> [#uses=1] + %40 = call arm_apcscc i32 @get_cie_encoding(%struct.dwarf_cie* %39) nounwind ; [#uses=1] + call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram76 to { }*)) nounwind + br label %bb12 + +bb12: ; preds = %bb11, %bb10 + %encoding.0 = phi i32 [ %40, %bb11 ], [ %31, %bb10 ] ; [#uses=2] + call void @llvm.dbg.stoppoint(i32 1024, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %41 = trunc i32 %encoding.0 to i8 ; [#uses=2] + call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*)) nounwind + call void @llvm.dbg.stoppoint(i32 242, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %42 = icmp eq i8 %41, -1 ; [#uses=1] + br i1 %42, label %base_from_object.exit, label %bb1.i + +bb1.i: ; preds = %bb12 + call void @llvm.dbg.stoppoint(i32 245, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %43 = and i32 %encoding.0, 112 ; [#uses=1] + switch i32 %43, label %bb5.i [ + i32 0, label %base_from_object.exit + i32 16, label %base_from_object.exit + i32 32, label %bb3.i + i32 48, label %bb4.i + i32 80, label %base_from_object.exit + ] + +bb3.i: ; preds = %bb1.i + call void @llvm.dbg.stoppoint(i32 253, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %44 = load i8** %22, align 4 ; [#uses=1] + %45 = ptrtoint i8* %44 to i32 ; [#uses=1] + br label %base_from_object.exit + +bb4.i: ; preds = %bb1.i + call void @llvm.dbg.stoppoint(i32 255, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %46 = load i8** %25, align 4 ; [#uses=1] + %47 = ptrtoint i8* %46 to i32 ; [#uses=1] + br label %base_from_object.exit + +bb5.i: ; preds = %bb1.i + call void @llvm.dbg.stoppoint(i32 257, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + call arm_apcscc void @abort() noreturn nounwind + unreachable + +base_from_object.exit: ; preds = %bb4.i, %bb3.i, %bb1.i, %bb1.i, %bb1.i, %bb12 + %48 = phi i32 [ %47, %bb4.i ], [ %45, %bb3.i ], [ 0, %bb12 ], [ 0, %bb1.i ], [ 0, %bb1.i ], [ 0, %bb1.i ] ; [#uses=1] + %49 = getelementptr %struct.dwarf_fde* %f.1, i32 0, i32 2, i32 0 ; [#uses=1] + %50 = call arm_apcscc i8* @read_encoded_value_with_base(i8 zeroext %41, i32 %48, i8* %49, i32* %func) ; [#uses=0] + call void @llvm.dbg.stoppoint(i32 1026, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram231 to { }*)) + %51 = load i32* %func, align 4 ; [#uses=1] + %52 = inttoptr i32 %51 to i8* ; [#uses=1] + %53 = getelementptr %struct.dwarf_eh_bases* %bases, i32 0, i32 2 ; [#uses=1] + store i8* %52, i8** %53, align 4 + call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram297 to { }*)) + ret %struct.dwarf_fde* %f.1 + +bb13: ; preds = %fini + call void @llvm.dbg.stoppoint(i32 1029, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + ret %struct.dwarf_fde* %f.1 +} + +define arm_apcscc i8* @__deregister_frame_info_bases(i8* %begin) nounwind { +entry: + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram301 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 180, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %0 = icmp eq i8* %begin, null ; [#uses=1] + br i1 %0, label %bb17, label %bb + +bb: ; preds = %entry + %1 = bitcast i8* %begin to i32* ; [#uses=1] + %2 = load i32* %1, align 4 ; [#uses=1] + %3 = icmp eq i32 %2, 0 ; [#uses=1] + br i1 %3, label %bb17, label %bb6 + +bb3: ; preds = %bb6 + %4 = getelementptr %struct.object* %10, i32 0, i32 3, i32 0 ; <%struct.dwarf_fde**> [#uses=1] + %5 = load %struct.dwarf_fde** %4, align 4 ; <%struct.dwarf_fde*> [#uses=1] + %6 = bitcast %struct.dwarf_fde* %5 to i8* ; [#uses=1] + %7 = icmp eq i8* %6, %begin ; [#uses=1] + %8 = getelementptr %struct.object* %10, i32 0, i32 5 ; <%struct.object**> [#uses=2] + br i1 %7, label %bb4, label %bb6 + +bb4: ; preds = %bb3 + tail call void @llvm.dbg.stoppoint(i32 190, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %9 = load %struct.object** %8, align 4 ; <%struct.object*> [#uses=1] + store %struct.object* %9, %struct.object** %p.0, align 4 + br label %out + +bb6: ; preds = %bb3, %bb + %p.0 = phi %struct.object** [ @unseen_objects, %bb ], [ %8, %bb3 ] ; <%struct.object**> [#uses=2] + %10 = load %struct.object** %p.0, align 4 ; <%struct.object*> [#uses=4] + %11 = icmp eq %struct.object* %10, null ; [#uses=1] + br i1 %11, label %bb14, label %bb3 + +bb8: ; preds = %bb14 + %12 = getelementptr %struct.object* %30, i32 0, i32 4, i32 0 ; [#uses=1] + %13 = load i32* %12 ; [#uses=1] + %14 = and i32 %13, 1 ; [#uses=1] + %15 = icmp eq i32 %14, 0 ; [#uses=1] + %16 = getelementptr %struct.object* %30, i32 0, i32 3, i32 0 ; <%struct.dwarf_fde**> [#uses=3] + br i1 %15, label %bb11, label %bb9 + +bb9: ; preds = %bb8 + %17 = load %struct.dwarf_fde** %16 ; <%struct.dwarf_fde*> [#uses=1] + %18 = bitcast %struct.dwarf_fde* %17 to i8** ; [#uses=1] + %19 = load i8** %18, align 4 ; [#uses=1] + %20 = icmp eq i8* %19, %begin ; [#uses=1] + br i1 %20, label %bb10, label %bb13 + +bb10: ; preds = %bb9 + tail call void @llvm.dbg.stoppoint(i32 200, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %21 = getelementptr %struct.object* %30, i32 0, i32 5 ; <%struct.object**> [#uses=1] + %22 = load %struct.object** %21, align 4 ; <%struct.object*> [#uses=1] + store %struct.object* %22, %struct.object** %p.1, align 4 + tail call void @llvm.dbg.stoppoint(i32 201, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %23 = load %struct.dwarf_fde** %16 ; <%struct.dwarf_fde*> [#uses=1] + free %struct.dwarf_fde* %23 + br label %out + +bb11: ; preds = %bb8 + %24 = load %struct.dwarf_fde** %16, align 4 ; <%struct.dwarf_fde*> [#uses=1] + %25 = bitcast %struct.dwarf_fde* %24 to i8* ; [#uses=1] + %26 = icmp eq i8* %25, %begin ; [#uses=1] + br i1 %26, label %bb12, label %bb13 + +bb12: ; preds = %bb11 + tail call void @llvm.dbg.stoppoint(i32 210, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %27 = getelementptr %struct.object* %30, i32 0, i32 5 ; <%struct.object**> [#uses=1] + %28 = load %struct.object** %27, align 4 ; <%struct.object*> [#uses=1] + store %struct.object* %28, %struct.object** %p.1, align 4 + br label %out + +bb13: ; preds = %bb11, %bb9 + %29 = getelementptr %struct.object* %30, i32 0, i32 5 ; <%struct.object**> [#uses=1] + br label %bb14 + +bb14: ; preds = %bb13, %bb6 + %p.1 = phi %struct.object** [ %29, %bb13 ], [ @seen_objects, %bb6 ] ; <%struct.object**> [#uses=3] + %30 = load %struct.object** %p.1, align 4 ; <%struct.object*> [#uses=8] + %31 = icmp eq %struct.object* %30, null ; [#uses=1] + br i1 %31, label %bb15, label %bb8 + +out: ; preds = %bb12, %bb10, %bb4 + %ob.0 = phi %struct.object* [ %10, %bb4 ], [ %30, %bb10 ], [ %30, %bb12 ] ; <%struct.object*> [#uses=2] + tail call void @llvm.dbg.stoppoint(i32 216, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 217, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram168 to { }*)) + %32 = icmp eq %struct.object* %ob.0, null ; [#uses=1] + br i1 %32, label %bb15, label %bb16 + +bb15: ; preds = %out, %bb14 + tail call void @llvm.dbg.stoppoint(i32 217, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call arm_apcscc void @abort() noreturn nounwind + unreachable + +bb16: ; preds = %out + tail call void @llvm.dbg.stoppoint(i32 218, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %33 = bitcast %struct.object* %ob.0 to i8* ; [#uses=1] + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram301 to { }*)) + ret i8* %33 + +bb17: ; preds = %bb, %entry + tail call void @llvm.dbg.stoppoint(i32 218, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + ret i8* null +} + +define arm_apcscc i8* @__deregister_frame_info(i8* %begin) nounwind { +entry: + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram303 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 224, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %0 = tail call arm_apcscc i8* @__deregister_frame_info_bases(i8* %begin) ; [#uses=1] + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram303 to { }*)) + ret i8* %0 +} + +define arm_apcscc void @__deregister_frame(i8* %begin) nounwind { +entry: + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram305 to { }*)) + tail call void @llvm.dbg.stoppoint(i32 231, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + %0 = bitcast i8* %begin to i32* ; [#uses=1] + %1 = load i32* %0, align 4 ; [#uses=1] + %2 = icmp eq i32 %1, 0 ; [#uses=1] + br i1 %2, label %return, label %bb + +bb: ; preds = %entry + tail call void @llvm.dbg.stoppoint(i32 232, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + tail call void @llvm.dbg.func.start({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram303 to { }*)) nounwind + tail call void @llvm.dbg.stoppoint(i32 224, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) nounwind + %3 = tail call arm_apcscc i8* @__deregister_frame_info_bases(i8* %begin) nounwind ; [#uses=1] + free i8* %3 + tail call void @llvm.dbg.region.end({ }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram305 to { }*)) + ret void + +return: ; preds = %entry + tail call void @llvm.dbg.stoppoint(i32 233, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) + ret void +} diff --git a/test/FrontendC++/2009-07-15-LineNumbers.cpp b/test/FrontendC++/2009-07-15-LineNumbers.cpp index 6030c172acf..c02fe0fa3f3 100644 --- a/test/FrontendC++/2009-07-15-LineNumbers.cpp +++ b/test/FrontendC++/2009-07-15-LineNumbers.cpp @@ -2,7 +2,6 @@ // print line numbers in asm. // RUN: %llvmgcc -S -O0 -g %s -o - | llvm-as | \ // RUN: llc --disable-fp-elim -f -O0 -relocation-model=pic | grep {# SrcLine 25} -// XFAIL: * #include diff --git a/utils/TableGen/AsmWriterEmitter.cpp b/utils/TableGen/AsmWriterEmitter.cpp index f34feef0c28..206c90b75db 100644 --- a/utils/TableGen/AsmWriterEmitter.cpp +++ b/utils/TableGen/AsmWriterEmitter.cpp @@ -19,6 +19,7 @@ #include "llvm/Support/Debug.h" #include "llvm/Support/MathExtras.h" #include +#include #include using namespace llvm; @@ -32,7 +33,11 @@ static bool isIdentChar(char C) { // This should be an anon namespace, this works around a GCC warning. namespace llvm { struct AsmWriterOperand { - enum { isLiteralTextOperand, isMachineInstrOperand } OperandType; + enum OpType { + isLiteralTextOperand, + isMachineInstrOperand, + isLiteralStatementOperand + } OperandType; /// Str - For isLiteralTextOperand, this IS the literal text. For /// isMachineInstrOperand, this is the PrinterMethodName for the operand. @@ -47,14 +52,16 @@ namespace llvm { std::string MiModifier; // To make VS STL happy - AsmWriterOperand():OperandType(isLiteralTextOperand) {} + AsmWriterOperand(OpType op = isLiteralTextOperand):OperandType(op) {} - explicit AsmWriterOperand(const std::string &LitStr) - : OperandType(isLiteralTextOperand), Str(LitStr) {} + AsmWriterOperand(const std::string &LitStr, + OpType op = isLiteralTextOperand) + : OperandType(op), Str(LitStr) {} AsmWriterOperand(const std::string &Printer, unsigned OpNo, - const std::string &Modifier) - : OperandType(isMachineInstrOperand), Str(Printer), MIOpNo(OpNo), + const std::string &Modifier, + OpType op = isMachineInstrOperand) + : OperandType(op), Str(Printer), MIOpNo(OpNo), MiModifier(Modifier) {} bool operator!=(const AsmWriterOperand &Other) const { @@ -78,6 +85,22 @@ namespace llvm { std::vector Operands; const CodeGenInstruction *CGI; + /// MAX_GROUP_NESTING_LEVEL - The maximum number of group nesting + /// levels we ever expect to see in an asm operand. + static const int MAX_GROUP_NESTING_LEVEL = 10; + + /// GroupLevel - The level of nesting of the current operand + /// group, such as [reg + (reg + offset)]. -1 means we are not in + /// a group. + int GroupLevel; + + /// GroupDelim - Remember the delimeter for a group operand. + char GroupDelim[MAX_GROUP_NESTING_LEVEL]; + + /// InGroup - Determine whether we are in the middle of an + /// operand group. + bool InGroup() const { return GroupLevel != -1; } + AsmWriterInst(const CodeGenInstruction &CGI, unsigned Variant); /// MatchesAllButOneOp - If this instruction is exactly identical to the @@ -89,6 +112,70 @@ namespace llvm { void AddLiteralString(const std::string &Str) { // If the last operand was already a literal text string, append this to // it, otherwise add a new operand. + + std::string::size_type SearchStart = 0; + std::string::size_type SpaceStartPos = std::string::npos; + do { + // Search for whitespace and replace with calls to set the + // output column. + SpaceStartPos = Str.find_first_of(" \t", SearchStart); + // Assume grouped text is one operand. + std::string::size_type StartDelimPos = Str.find_first_of("[{(", SearchStart); + + SearchStart = std::string::npos; + + if (StartDelimPos != std::string::npos) { + ++GroupLevel; + assert(GroupLevel < MAX_GROUP_NESTING_LEVEL + && "Exceeded maximum operand group nesting level"); + GroupDelim[GroupLevel] = Str[StartDelimPos]; + if (SpaceStartPos != std::string::npos && + SpaceStartPos > StartDelimPos) { + // This space doesn't count. + SpaceStartPos = std::string::npos; + } + } + + if (InGroup()) { + // Find the end delimiter. + char EndDelim = (GroupDelim[GroupLevel] == '{' ? '}' : + (GroupDelim[GroupLevel] == '(' ? ')' : ']')); + std::string::size_type EndDelimSearchStart = + StartDelimPos == std::string::npos ? 0 : StartDelimPos+1; + std::string::size_type EndDelimPos = Str.find(EndDelim, + EndDelimSearchStart); + SearchStart = EndDelimPos; + if (EndDelimPos != std::string::npos) { + // Iterate. + SearchStart = EndDelimPos + 1; + --GroupLevel; + assert(GroupLevel > -2 && "Too many end delimeters!"); + } + if (InGroup()) + SpaceStartPos = std::string::npos; + } + } while (SearchStart != std::string::npos); + + + if (SpaceStartPos != std::string::npos) { + std::string::size_type SpaceEndPos = + Str.find_first_not_of(" \t", SpaceStartPos+1); + if (SpaceStartPos != 0) { + // Emit the first part of the string. + AddLiteralString(Str.substr(0, SpaceStartPos)); + } + Operands.push_back( + AsmWriterOperand( + "O.PadToColumn(TAI->getOperandColumn(OperandColumn++), 1);\n", + AsmWriterOperand::isLiteralStatementOperand)); + if (SpaceEndPos != std::string::npos) { + // Emit the last part of the string. + AddLiteralString(Str.substr(SpaceEndPos)); + } + // We've emitted the whole string. + return; + } + if (!Operands.empty() && Operands.back().OperandType == AsmWriterOperand::isLiteralTextOperand) Operands.back().Str.append(Str); @@ -103,6 +190,18 @@ std::string AsmWriterOperand::getCode() const { if (OperandType == isLiteralTextOperand) return "O << \"" + Str + "\"; "; + if (OperandType == isLiteralStatementOperand) { + return Str; + } + + if (OperandType == isLiteralStatementOperand) { + return Str; + } + + if (OperandType == isLiteralStatementOperand) { + return Str; + } + std::string Result = Str + "(MI"; if (MIOpNo != ~0U) Result += ", " + utostr(MIOpNo); @@ -115,7 +214,8 @@ std::string AsmWriterOperand::getCode() const { /// ParseAsmString - Parse the specified Instruction's AsmString into this /// AsmWriterInst. /// -AsmWriterInst::AsmWriterInst(const CodeGenInstruction &CGI, unsigned Variant) { +AsmWriterInst::AsmWriterInst(const CodeGenInstruction &CGI, unsigned Variant) + : GroupLevel(-1) { this->CGI = &CGI; unsigned CurVariant = ~0U; // ~0 if we are outside a {.|.|.} region, other #. @@ -188,7 +288,7 @@ AsmWriterInst::AsmWriterInst(const CodeGenInstruction &CGI, unsigned Variant) { } else { // Get the name of the variable. std::string::size_type VarEnd = DollarPos+1; - + // handle ${foo}bar as $foo by detecting whether the character following // the dollar sign is a curly brace. If so, advance VarEnd and DollarPos // so the variable name does not contain the leading curly brace. @@ -260,6 +360,9 @@ AsmWriterInst::AsmWriterInst(const CodeGenInstruction &CGI, unsigned Variant) { } } + Operands.push_back( + AsmWriterOperand("EmitComments(*MI);\n", + AsmWriterOperand::isLiteralStatementOperand)); AddLiteralString("\\n"); } @@ -357,7 +460,6 @@ static void EmitInstructions(std::vector &Insts, } O << "\n"; } - O << " break;\n"; } @@ -385,8 +487,9 @@ FindUniqueOperandCommands(std::vector &UniqueOperandCommands, Command = " " + Inst->Operands[0].getCode() + "\n"; // If this is the last operand, emit a return. - if (Inst->Operands.size() == 1) + if (Inst->Operands.size() == 1) { Command += " return true;\n"; + } // Check to see if we already have 'Command' in UniqueOperandCommands. // If not, add it. @@ -431,7 +534,10 @@ FindUniqueOperandCommands(std::vector &UniqueOperandCommands, // Otherwise, scan to see if all of the other instructions in this command // set share the operand. bool AllSame = true; - + // Keep track of the maximum, number of operands or any + // instruction we see in the group. + size_t MaxSize = FirstInst->Operands.size(); + for (NIT = std::find(NIT+1, InstIdxs.end(), CommandIdx); NIT != InstIdxs.end(); NIT = std::find(NIT+1, InstIdxs.end(), CommandIdx)) { @@ -439,6 +545,11 @@ FindUniqueOperandCommands(std::vector &UniqueOperandCommands, // matches, we're ok, otherwise bail out. const AsmWriterInst *OtherInst = getAsmWriterInstByID(NIT-InstIdxs.begin()); + + if (OtherInst && + OtherInst->Operands.size() > FirstInst->Operands.size()) + MaxSize = std::max(MaxSize, OtherInst->Operands.size()); + if (!OtherInst || OtherInst->Operands.size() == Op || OtherInst->Operands[Op] != FirstInst->Operands[Op]) { AllSame = false; @@ -452,8 +563,12 @@ FindUniqueOperandCommands(std::vector &UniqueOperandCommands, std::string Command = " " + FirstInst->Operands[Op].getCode() + "\n"; // If this is the last operand, emit a return after the code. - if (FirstInst->Operands.size() == Op+1) + if (FirstInst->Operands.size() == Op+1 && + // Don't early-out too soon. Other instructions in this + // group may have more operands. + FirstInst->Operands.size() == MaxSize) { Command += " return true;\n"; + } UniqueOperandCommands[CommandIdx] += Command; InstOpsUsed[CommandIdx]++; @@ -567,7 +682,7 @@ void AsmWriterEmitter::run(raw_ostream &O) { UniqueOperandCommands.push_back(" return true;\n"); isFirst = false; } - + std::vector InstIdxs; std::vector NumInstOpsHandled; FindUniqueOperandCommands(UniqueOperandCommands, InstIdxs, @@ -675,8 +790,16 @@ void AsmWriterEmitter::run(raw_ostream &O) { O << " // Emit the opcode for the instruction.\n" << " unsigned Bits = OpInfo[MI->getOpcode()];\n" - << " if (Bits == 0) return false;\n" - << " O << AsmStrs+(Bits & " << (1 << AsmStrBits)-1 << ");\n\n"; + << " if (Bits == 0) return false;\n\n"; + + O << " std::string OpStr(AsmStrs+(Bits & " << (1 << AsmStrBits)-1 << "));\n" + << " unsigned OperandColumn = 1;\n" + << " O << OpStr;\n\n"; + + O << " if (OpStr.find_last_of(\" \\t\") == OpStr.size()-1) {\n" + << " O.PadToColumn(TAI->getOperandColumn(1));\n" + << " OperandColumn = 2;\n" + << " }\n\n"; // Output the table driven operand information. BitsLeft = 32-AsmStrBits; @@ -741,6 +864,7 @@ void AsmWriterEmitter::run(raw_ostream &O) { O << " }\n"; O << " return true;\n"; } - + + O << " return true;\n"; O << "}\n"; } -- 2.34.1