From 83368191a21340a6c3a8f88b01ecae6433640957 Mon Sep 17 00:00:00 2001 From: Sean Perry Date: Thu, 26 Sep 2024 14:11:29 -0400 Subject: [PATCH 01/13] Use %errc to get text for system errors (#109852) Several lit tests look for messages with text generated from strerror() such as "no such file or directory". The value can change slightly from system to system. Use the llvm-lit macro `%errc_` instead. This was really noticable on z/OS because the generated text includes an error code as well as the text. --- clang/test/Driver/cl-options.c | 4 ++-- clang/test/Driver/cl-zc.cpp | 4 ++-- clang/test/Driver/config-file-errs.c | 6 +++--- clang/test/Driver/response-file-errs.c | 4 ++-- llvm/test/Support/interrupts.test | 4 ++-- .../tools/dsymutil/X86/remarks-linking-archive.text | 10 +++++----- llvm/test/tools/gold/X86/stats-file-option.ll | 4 ++-- llvm/test/tools/llvm-ar/read-only-archive.test | 6 +++--- .../llvm-ctxprof-util/llvm-ctxprof-util-negative.test | 4 ++-- 9 files changed, 23 insertions(+), 23 deletions(-) diff --git a/clang/test/Driver/cl-options.c b/clang/test/Driver/cl-options.c index a6f338533ad76..07a25da0269fd 100644 --- a/clang/test/Driver/cl-options.c +++ b/clang/test/Driver/cl-options.c @@ -406,9 +406,9 @@ // RUN: /Zm \ // RUN: /Zo \ // RUN: /Zo- \ -// RUN: -### -- %s 2>&1 | FileCheck -check-prefix=IGNORED %s +// RUN: -### -- %s 2>&1 | FileCheck -DMSG=%errc_ENOENT -check-prefix=IGNORED %s // IGNORED-NOT: argument unused during compilation -// IGNORED-NOT: no such file or directory +// IGNORED-NOT: [[MSG]] // Don't confuse /openmp- with the /o flag: // IGNORED-NOT: "-o" "penmp-.obj" diff --git a/clang/test/Driver/cl-zc.cpp b/clang/test/Driver/cl-zc.cpp index c7cf5b1b6525b..9b1ea53888ceb 100644 --- a/clang/test/Driver/cl-zc.cpp +++ b/clang/test/Driver/cl-zc.cpp @@ -133,9 +133,9 @@ // RUN: /Zc:inline \ // RUN: /Zc:rvalueCast \ // RUN: /Zc:ternary \ -// RUN: -### -- %s 2>&1 | FileCheck -check-prefix=IGNORED %s +// RUN: -### -- %s 2>&1 | FileCheck -DMSG=%errc_ENOENT -check-prefix=IGNORED %s // IGNORED-NOT: argument unused during compilation -// IGNORED-NOT: no such file or directory +// IGNORED-NOT: [[MSG]] // Negated form warns: // RUN: %clang_cl /c \ diff --git a/clang/test/Driver/config-file-errs.c b/clang/test/Driver/config-file-errs.c index 96b49b2acf8ab..dc4fcdebf44bc 100644 --- a/clang/test/Driver/config-file-errs.c +++ b/clang/test/Driver/config-file-errs.c @@ -6,13 +6,13 @@ //--- Argument of '--config' must be existing file, if it is specified by path. // -// RUN: not %clang --config somewhere/nonexistent-config-file 2>&1 | FileCheck %s -check-prefix CHECK-NONEXISTENT -// CHECK-NONEXISTENT: configuration file '{{.*}}somewhere{{.}}nonexistent-config-file' cannot be opened: {{[Nn]}}o such file or directory +// RUN: not %clang --config somewhere/nonexistent-config-file 2>&1 | FileCheck -DMSG=%errc_ENOENT %s -check-prefix CHECK-NONEXISTENT +// CHECK-NONEXISTENT: configuration file '{{.*}}somewhere{{.}}nonexistent-config-file' cannot be opened: [[MSG]] //--- All '--config' arguments must be existing files. // -// RUN: not %clang --config %S/Inputs/config-4.cfg --config somewhere/nonexistent-config-file 2>&1 | FileCheck %s -check-prefix CHECK-NONEXISTENT +// RUN: not %clang --config %S/Inputs/config-4.cfg --config somewhere/nonexistent-config-file 2>&1 | FileCheck -DMSG=%errc_ENOENT %s -check-prefix CHECK-NONEXISTENT //--- Argument of '--config' must exist somewhere in well-known directories, if it is specified by bare name. diff --git a/clang/test/Driver/response-file-errs.c b/clang/test/Driver/response-file-errs.c index efde7575a51e0..5331c8e308f48 100644 --- a/clang/test/Driver/response-file-errs.c +++ b/clang/test/Driver/response-file-errs.c @@ -11,5 +11,5 @@ // If file in `@file` is a directory, it is an error. // -// RUN: not %clang @%S/Inputs -### 2>&1 | FileCheck --check-prefix=DIRECTORY %s -// DIRECTORY: cannot not open file '{{.*}}Inputs': {{[Ii]}}s a directory +// RUN: not %clang @%S/Inputs -### 2>&1 | FileCheck -DMSG=%errc_EISDIR --check-prefix=DIRECTORY %s +// DIRECTORY: cannot not open file '{{.*}}Inputs': [[MSG]] diff --git a/llvm/test/Support/interrupts.test b/llvm/test/Support/interrupts.test index 4768ac61dff02..0966586106cc7 100644 --- a/llvm/test/Support/interrupts.test +++ b/llvm/test/Support/interrupts.test @@ -1,9 +1,9 @@ ## Show that SIGINT and similar signals don't cause crash messages to be ## reported. # RUN: %python %s wrapper llvm-symbolizer 2> %t.err -# RUN: FileCheck --input-file=%t.err %s +# RUN: FileCheck -DMSG=%errc_ENOENT --input-file=%t.err %s -# CHECK: {{.*}} error: 'foo': {{[Nn]}}o such file or directory +# CHECK: {{.*}} error: 'foo': [[MSG]] # CHECK-NOT: {{.+}} import os diff --git a/llvm/test/tools/dsymutil/X86/remarks-linking-archive.text b/llvm/test/tools/dsymutil/X86/remarks-linking-archive.text index e23d0b620cac1..47f9df82296fe 100644 --- a/llvm/test/tools/dsymutil/X86/remarks-linking-archive.text +++ b/llvm/test/tools/dsymutil/X86/remarks-linking-archive.text @@ -14,9 +14,9 @@ RUN: llvm-bcanalyzer -dump %t/basic.macho.remarks.archive.x86_64.dSYM/Contents/R Check that we don't error if we're missing remark files from an archive, but we warn instead. Instead of creating a new binary, just remove the remarks prepend path. -RUN: dsymutil -oso-prepend-path=%p/../Inputs %t/basic.macho.remarks.archive.x86_64 2>&1 | FileCheck %s --check-prefix=CHECK-MISSING +RUN: dsymutil -oso-prepend-path=%p/../Inputs %t/basic.macho.remarks.archive.x86_64 2>&1 | FileCheck -DMSG=%errc_ENOENT %s --check-prefix=CHECK-MISSING -RUN: dsymutil --linker parallel -oso-prepend-path=%p/../Inputs %t/basic.macho.remarks.archive.x86_64 2>&1 | FileCheck %s --check-prefix=CHECK-MISSING +RUN: dsymutil --linker parallel -oso-prepend-path=%p/../Inputs %t/basic.macho.remarks.archive.x86_64 2>&1 | FileCheck -DMSG=%errc_ENOENT %s --check-prefix=CHECK-MISSING CHECK: &1 | FileCheck --check-prefix=ERROR %s -; ERROR: LLVM gold plugin: No such file or directory +; RUN: -m elf_x86_64 -r -o %t.o %t.bc 2>&1 | FileCheck -DMSG=%errc_ENOENT --check-prefix=ERROR %s +; ERROR: LLVM gold plugin: [[MSG]] diff --git a/llvm/test/tools/llvm-ar/read-only-archive.test b/llvm/test/tools/llvm-ar/read-only-archive.test index 0365f6ad054da..e3659903d8cb3 100644 --- a/llvm/test/tools/llvm-ar/read-only-archive.test +++ b/llvm/test/tools/llvm-ar/read-only-archive.test @@ -11,12 +11,12 @@ # RUN: chmod 444 %t/archive.a # RUN: not llvm-ar r %t/archive.a %t/3.txt \ -# RUN: FileCheck %s --check-prefix=ERROR -DFILE=%t/archive.a +# RUN: FileCheck %s --check-prefix=ERROR -DFILE=%t/archive.a -DMSG=%errc_ENOENT -# ERROR: error: [[FILE]]: no such file or directory +# ERROR: error: [[FILE]]: [[MSG]] # RUN: not llvm-ar q %t/archive.a %t/3.txt \ -# RUN: FileCheck %s --check-prefix=ERROR -DFILE=%t/archive.a +# RUN: FileCheck %s --check-prefix=ERROR -DFILE=%t/archive.a -DMSG=%errc_ENOENT # RUN: not llvm-ar m %t/archive.a t/1.txt \ # RUN: FileCheck %s --check-prefix=ERROR-2 -DFILE=%t/archive.a diff --git a/llvm/test/tools/llvm-ctxprof-util/llvm-ctxprof-util-negative.test b/llvm/test/tools/llvm-ctxprof-util/llvm-ctxprof-util-negative.test index 08c83c9f907fb..e8668a7f198a9 100644 --- a/llvm/test/tools/llvm-ctxprof-util/llvm-ctxprof-util-negative.test +++ b/llvm/test/tools/llvm-ctxprof-util/llvm-ctxprof-util-negative.test @@ -3,7 +3,7 @@ ; RUN: not llvm-ctxprof-util nofile.json 2>&1 | FileCheck %s --check-prefix=NO_CMD ; RUN: not llvm-ctxprof-util invalidCmd --input nofile.json 2>&1 | FileCheck %s --check-prefix=INVALID_CMD ; RUN: not llvm-ctxprof-util fromJSON nofile.json 2>&1 | FileCheck %s --check-prefix=NO_FLAG -; RUN: not llvm-ctxprof-util fromJSON --input nofile.json 2>&1 | FileCheck %s --check-prefix=NO_FILE +; RUN: not llvm-ctxprof-util fromJSON --input nofile.json 2>&1 | FileCheck -DMSG=%errc_ENOENT %s --check-prefix=NO_FILE ; RUN: not llvm-ctxprof-util fromJSON --input %S/Inputs/bad.json 2>&1 | FileCheck %s --check-prefix=BAD_JSON ; RUN: not llvm-ctxprof-util fromJSON --input %S/Inputs/invalid-no-vector.json 2>&1 | FileCheck %s --check-prefix=NO_VECTOR ; RUN: not llvm-ctxprof-util fromJSON --input %S/Inputs/invalid-no-ctx.json 2>&1 | FileCheck %s --check-prefix=NO_CTX @@ -15,7 +15,7 @@ ; NO_CMD: Unknown subcommand 'nofile.json' ; INVALID_CMD: Unknown subcommand 'invalidCmd' ; NO_FLAG: Unknown command line argument 'nofile.json'. -; NO_FILE: 'nofile.json': No such file or directory +; NO_FILE: 'nofile.json': [[MSG]] ; BAD_JSON: Expected object key ; NO_VECTOR: expected array ; NO_CTX: missing value at (root)[0].Guid From 68ed1728bf45162187a2b54eed226097b8fc0a12 Mon Sep 17 00:00:00 2001 From: Florian Hahn Date: Thu, 26 Sep 2024 19:16:42 +0100 Subject: [PATCH 02/13] [VPlan] Unify mayWriteToMemory and mayHaveSideEffects logic for VPInst. Unify logic for mayWriteToMemory and mayHaveSideEffects for VPInstruction, with the later relying on the former. Also extend to handle binary operators. Split off from https://github.com/llvm/llvm-project/pull/106441 --- .../lib/Transforms/Vectorize/VPlanRecipes.cpp | 34 +++++++++++-------- .../LoopVectorize/X86/iv-live-outs.ll | 6 ---- ...ned-value-used-as-scalar-and-first-lane.ll | 23 +++---------- .../Transforms/Vectorize/VPlanTest.cpp | 4 +-- 4 files changed, 25 insertions(+), 42 deletions(-) diff --git a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp index 9a0aefb898e58..18116b5701fe1 100644 --- a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp +++ b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp @@ -48,6 +48,24 @@ extern cl::opt ForceTargetInstructionCost; bool VPRecipeBase::mayWriteToMemory() const { switch (getVPDefID()) { + case VPInstructionSC: + if (Instruction::isBinaryOp(cast(this)->getOpcode())) + return false; + switch (cast(this)->getOpcode()) { + case Instruction::Or: + case Instruction::ICmp: + case Instruction::Select: + case VPInstruction::Not: + case VPInstruction::CalculateTripCountMinusVF: + case VPInstruction::CanonicalIVIncrementForPart: + case VPInstruction::ExtractFromEnd: + case VPInstruction::FirstOrderRecurrenceSplice: + case VPInstruction::LogicalAnd: + case VPInstruction::PtrAdd: + return false; + default: + return true; + } case VPInterleaveSC: return cast(this)->getNumStoreOperands() > 0; case VPWidenStoreEVLSC: @@ -137,21 +155,7 @@ bool VPRecipeBase::mayHaveSideEffects() const { case VPScalarCastSC: return false; case VPInstructionSC: - switch (cast(this)->getOpcode()) { - case Instruction::Or: - case Instruction::ICmp: - case Instruction::Select: - case VPInstruction::Not: - case VPInstruction::CalculateTripCountMinusVF: - case VPInstruction::CanonicalIVIncrementForPart: - case VPInstruction::ExtractFromEnd: - case VPInstruction::FirstOrderRecurrenceSplice: - case VPInstruction::LogicalAnd: - case VPInstruction::PtrAdd: - return false; - default: - return true; - } + return mayWriteToMemory(); case VPWidenCallSC: { Function *Fn = cast(this)->getCalledScalarFunction(); return mayWriteToMemory() || !Fn->doesNotThrow() || !Fn->willReturn(); diff --git a/llvm/test/Transforms/LoopVectorize/X86/iv-live-outs.ll b/llvm/test/Transforms/LoopVectorize/X86/iv-live-outs.ll index 40c143faadd3c..d956f718cb10a 100644 --- a/llvm/test/Transforms/LoopVectorize/X86/iv-live-outs.ll +++ b/llvm/test/Transforms/LoopVectorize/X86/iv-live-outs.ll @@ -17,13 +17,7 @@ define i64 @test_pr98660(ptr %dst, i64 %N) { ; CHECK: [[VECTOR_BODY]]: ; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ] ; CHECK-NEXT: [[TMP1:%.*]] = add i64 [[INDEX]], 0 -; CHECK-NEXT: [[TMP2:%.*]] = add i64 [[INDEX]], 8 -; CHECK-NEXT: [[TMP3:%.*]] = add i64 [[INDEX]], 16 -; CHECK-NEXT: [[TMP4:%.*]] = add i64 [[INDEX]], 24 ; CHECK-NEXT: [[TMP5:%.*]] = add i64 [[TMP1]], 1 -; CHECK-NEXT: [[TMP6:%.*]] = add i64 [[TMP2]], 1 -; CHECK-NEXT: [[TMP7:%.*]] = add i64 [[TMP3]], 1 -; CHECK-NEXT: [[TMP8:%.*]] = add i64 [[TMP4]], 1 ; CHECK-NEXT: [[TMP9:%.*]] = getelementptr i32, ptr [[DST]], i64 [[TMP5]] ; CHECK-NEXT: [[TMP13:%.*]] = getelementptr i32, ptr [[TMP9]], i32 0 ; CHECK-NEXT: [[TMP14:%.*]] = getelementptr i32, ptr [[TMP9]], i32 8 diff --git a/llvm/test/Transforms/LoopVectorize/X86/widened-value-used-as-scalar-and-first-lane.ll b/llvm/test/Transforms/LoopVectorize/X86/widened-value-used-as-scalar-and-first-lane.ll index a768f69f49788..12f95e0a0a7dc 100644 --- a/llvm/test/Transforms/LoopVectorize/X86/widened-value-used-as-scalar-and-first-lane.ll +++ b/llvm/test/Transforms/LoopVectorize/X86/widened-value-used-as-scalar-and-first-lane.ll @@ -35,15 +35,9 @@ define void @iv.4_used_as_vector_and_first_lane(ptr %src, ptr noalias %dst) { ; CHECK-NEXT: [[TMP17:%.*]] = icmp ule <4 x i64> [[WIDE_LOAD4]], ; CHECK-NEXT: [[TMP18:%.*]] = icmp ule <4 x i64> [[WIDE_LOAD5]], ; CHECK-NEXT: [[TMP19:%.*]] = icmp ule <4 x i64> [[WIDE_LOAD6]], -; CHECK-NEXT: [[TMP20:%.*]] = extractelement <4 x i64> [[TMP12]], i32 0 -; CHECK-NEXT: [[TMP21:%.*]] = add i64 [[TMP20]], 1 -; CHECK-NEXT: [[TMP22:%.*]] = extractelement <4 x i64> [[TMP13]], i32 0 -; CHECK-NEXT: [[TMP23:%.*]] = add i64 [[TMP22]], 1 -; CHECK-NEXT: [[TMP24:%.*]] = extractelement <4 x i64> [[TMP14]], i32 0 -; CHECK-NEXT: [[TMP25:%.*]] = add i64 [[TMP24]], 1 -; CHECK-NEXT: [[TMP26:%.*]] = extractelement <4 x i64> [[TMP15]], i32 0 +; CHECK-NEXT: [[TMP26:%.*]] = extractelement <4 x i64> [[TMP12]], i32 0 ; CHECK-NEXT: [[TMP27:%.*]] = add i64 [[TMP26]], 1 -; CHECK-NEXT: [[TMP28:%.*]] = getelementptr i64, ptr [[DST]], i64 [[TMP21]] +; CHECK-NEXT: [[TMP28:%.*]] = getelementptr i64, ptr [[DST]], i64 [[TMP27]] ; CHECK-NEXT: [[TMP32:%.*]] = getelementptr i64, ptr [[TMP28]], i32 0 ; CHECK-NEXT: [[TMP33:%.*]] = getelementptr i64, ptr [[TMP28]], i32 4 ; CHECK-NEXT: [[TMP34:%.*]] = getelementptr i64, ptr [[TMP28]], i32 8 @@ -116,9 +110,6 @@ define void @iv.4_used_as_first_lane(ptr %src, ptr noalias %dst) { ; CHECK: vector.body: ; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ] ; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[INDEX]], 0 -; CHECK-NEXT: [[TMP1:%.*]] = add i64 [[INDEX]], 4 -; CHECK-NEXT: [[TMP2:%.*]] = add i64 [[INDEX]], 8 -; CHECK-NEXT: [[TMP3:%.*]] = add i64 [[INDEX]], 12 ; CHECK-NEXT: [[TMP4:%.*]] = getelementptr inbounds i64, ptr [[SRC]], i64 [[TMP0]] ; CHECK-NEXT: [[TMP8:%.*]] = getelementptr inbounds i64, ptr [[TMP4]], i32 0 ; CHECK-NEXT: [[TMP9:%.*]] = getelementptr inbounds i64, ptr [[TMP4]], i32 4 @@ -128,19 +119,13 @@ define void @iv.4_used_as_first_lane(ptr %src, ptr noalias %dst) { ; CHECK-NEXT: [[WIDE_LOAD1:%.*]] = load <4 x i64>, ptr [[TMP9]], align 8 ; CHECK-NEXT: [[WIDE_LOAD2:%.*]] = load <4 x i64>, ptr [[TMP10]], align 8 ; CHECK-NEXT: [[WIDE_LOAD3:%.*]] = load <4 x i64>, ptr [[TMP11]], align 8 -; CHECK-NEXT: [[TMP12:%.*]] = add i64 [[TMP0]], 4 -; CHECK-NEXT: [[TMP13:%.*]] = add i64 [[TMP1]], 4 -; CHECK-NEXT: [[TMP14:%.*]] = add i64 [[TMP2]], 4 -; CHECK-NEXT: [[TMP15:%.*]] = add i64 [[TMP3]], 4 +; CHECK-NEXT: [[TMP15:%.*]] = add i64 [[TMP0]], 4 ; CHECK-NEXT: [[TMP16:%.*]] = icmp ule <4 x i64> [[WIDE_LOAD]], ; CHECK-NEXT: [[TMP17:%.*]] = icmp ule <4 x i64> [[WIDE_LOAD1]], ; CHECK-NEXT: [[TMP18:%.*]] = icmp ule <4 x i64> [[WIDE_LOAD2]], ; CHECK-NEXT: [[TMP19:%.*]] = icmp ule <4 x i64> [[WIDE_LOAD3]], -; CHECK-NEXT: [[TMP20:%.*]] = add i64 [[TMP12]], 1 -; CHECK-NEXT: [[TMP21:%.*]] = add i64 [[TMP13]], 1 -; CHECK-NEXT: [[TMP22:%.*]] = add i64 [[TMP14]], 1 ; CHECK-NEXT: [[TMP23:%.*]] = add i64 [[TMP15]], 1 -; CHECK-NEXT: [[TMP24:%.*]] = getelementptr i64, ptr [[DST]], i64 [[TMP20]] +; CHECK-NEXT: [[TMP24:%.*]] = getelementptr i64, ptr [[DST]], i64 [[TMP23]] ; CHECK-NEXT: [[TMP28:%.*]] = getelementptr i64, ptr [[TMP24]], i32 0 ; CHECK-NEXT: [[TMP29:%.*]] = getelementptr i64, ptr [[TMP24]], i32 4 ; CHECK-NEXT: [[TMP30:%.*]] = getelementptr i64, ptr [[TMP24]], i32 8 diff --git a/llvm/unittests/Transforms/Vectorize/VPlanTest.cpp b/llvm/unittests/Transforms/Vectorize/VPlanTest.cpp index a7ff51067c8d0..a5d44e9a57246 100644 --- a/llvm/unittests/Transforms/Vectorize/VPlanTest.cpp +++ b/llvm/unittests/Transforms/Vectorize/VPlanTest.cpp @@ -1230,9 +1230,9 @@ TEST(VPRecipeTest, MayHaveSideEffectsAndMayReadWriteMemory) { VPValue Op2; VPInstruction VPInst(Instruction::Add, {&Op1, &Op2}); VPRecipeBase &Recipe = VPInst; - EXPECT_TRUE(Recipe.mayHaveSideEffects()); + EXPECT_FALSE(Recipe.mayHaveSideEffects()); EXPECT_TRUE(Recipe.mayReadFromMemory()); - EXPECT_TRUE(Recipe.mayWriteToMemory()); + EXPECT_FALSE(Recipe.mayWriteToMemory()); EXPECT_TRUE(Recipe.mayReadOrWriteMemory()); } { From 4822e9dce3483fdec7957cea092384041c8ca013 Mon Sep 17 00:00:00 2001 From: William G Hatch Date: Thu, 26 Sep 2024 12:30:06 -0600 Subject: [PATCH 03/13] [llvm] use 64-bit types for result of getDwarfRegNum (NFC) (#109494) The register encoding used by NVPTX and cuda-gdb basically use strings encoded as numbers. They are always within 64-bits, but typically outside of 32-bits, since they often need at least 5 characters. This patch changes the signature of `MCRegisterInfo::getDwarfRegNum` and some related data structures to use 64-bit numbers to accommodate encodings like this. Additionally, `MCRegisterInfo::getDwarfRegNum` is marked as virtual, so that targets with peculiar dwarf register mapping schemes (such as NVPTX) can override its behavior. I originally tried to do a broader switch to 64-bit types for registers, but it caused many problems. There are various places in code generation where registers are not just treated as 32-bit numbers, but also treat certain bit offsets as flags. So I limited the change as much as possible to just the output of `getDwarfRegNum`. Keeping the types used by `DwarfLLVMRegPair` as unsigned preserves the current behaviors. The only way to give a 64-bit output from `getDwarfRegNum` that actually needs more than 32-bits is to override `getDwarfRegNum` and provide an implementation that sidesteps the use of the `DwarfLLVMRegPair` maps defined in tablegen files. First layer of stack supporting: https://github.com/llvm/llvm-project/pull/109495 --- llvm/include/llvm/MC/MCRegisterInfo.h | 6 +++--- llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 4 ++-- llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp | 8 ++++---- llvm/lib/CodeGen/AsmPrinter/DwarfExpression.h | 12 ++++++------ llvm/lib/MC/MCRegisterInfo.cpp | 14 +++++++++----- llvm/lib/Target/Lanai/LanaiRegisterInfo.h | 2 -- 6 files changed, 24 insertions(+), 22 deletions(-) diff --git a/llvm/include/llvm/MC/MCRegisterInfo.h b/llvm/include/llvm/MC/MCRegisterInfo.h index a617ddecd38a2..8a6f9fce97e30 100644 --- a/llvm/include/llvm/MC/MCRegisterInfo.h +++ b/llvm/include/llvm/MC/MCRegisterInfo.h @@ -418,15 +418,15 @@ class MCRegisterInfo { /// number. Returns -1 if there is no equivalent value. The second /// parameter allows targets to use different numberings for EH info and /// debugging info. - int getDwarfRegNum(MCRegister RegNum, bool isEH) const; + virtual int64_t getDwarfRegNum(MCRegister RegNum, bool isEH) const; /// Map a dwarf register back to a target register. Returns std::nullopt if /// there is no mapping. - std::optional getLLVMRegNum(unsigned RegNum, bool isEH) const; + std::optional getLLVMRegNum(uint64_t RegNum, bool isEH) const; /// Map a target EH register number to an equivalent DWARF register /// number. - int getDwarfRegNumFromDwarfEHRegNum(unsigned RegNum) const; + int64_t getDwarfRegNumFromDwarfEHRegNum(uint64_t RegNum) const; /// Map a target register to an equivalent SEH register /// number. Returns LLVM register number if there is no equivalent value. diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index f94240e6d2224..6f211abb299e7 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -570,7 +570,7 @@ void DwarfDebug::constructAbstractSubprogramScopeDIE(DwarfCompileUnit &SrcCU, /// debug expression to a register in the forwarded register worklist. struct FwdRegParamInfo { /// The described parameter register. - unsigned ParamReg; + uint64_t ParamReg; /// Debug expression that has been built up when walking through the /// instruction chain that produces the parameter's value. @@ -578,7 +578,7 @@ struct FwdRegParamInfo { }; /// Register worklist for finding call site values. -using FwdRegWorklist = MapVector>; +using FwdRegWorklist = MapVector>; /// Container for the set of registers known to be clobbered on the path to a /// call site. using ClobberedRegSet = SmallSet; diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp index 9d6e1bb367bc8..08c762485b652 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp @@ -40,7 +40,7 @@ void DwarfExpression::emitConstu(uint64_t Value) { } } -void DwarfExpression::addReg(int DwarfReg, const char *Comment) { +void DwarfExpression::addReg(int64_t DwarfReg, const char *Comment) { assert(DwarfReg >= 0 && "invalid negative dwarf register number"); assert((isUnknownLocation() || isRegisterLocation()) && "location description already locked down"); @@ -53,7 +53,7 @@ void DwarfExpression::addReg(int DwarfReg, const char *Comment) { } } -void DwarfExpression::addBReg(int DwarfReg, int Offset) { +void DwarfExpression::addBReg(int64_t DwarfReg, int64_t Offset) { assert(DwarfReg >= 0 && "invalid negative dwarf register number"); assert(!isRegisterLocation() && "location description already locked down"); if (DwarfReg < 32) { @@ -65,7 +65,7 @@ void DwarfExpression::addBReg(int DwarfReg, int Offset) { emitSigned(Offset); } -void DwarfExpression::addFBReg(int Offset) { +void DwarfExpression::addFBReg(int64_t Offset) { emitOp(dwarf::DW_OP_fbreg); emitSigned(Offset); } @@ -108,7 +108,7 @@ bool DwarfExpression::addMachineReg(const TargetRegisterInfo &TRI, return false; } - int Reg = TRI.getDwarfRegNum(MachineReg, false); + int64_t Reg = TRI.getDwarfRegNum(MachineReg, false); // If this is a valid register number, emit it. if (Reg >= 0) { diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.h b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.h index 4daa78b15b8e2..06809ab263875 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.h +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.h @@ -45,17 +45,17 @@ class DwarfExpression { protected: /// Holds information about all subregisters comprising a register location. struct Register { - int DwarfRegNo; + int64_t DwarfRegNo; unsigned SubRegSize; const char *Comment; /// Create a full register, no extra DW_OP_piece operators necessary. - static Register createRegister(int RegNo, const char *Comment) { + static Register createRegister(int64_t RegNo, const char *Comment) { return {RegNo, 0, Comment}; } /// Create a subregister that needs a DW_OP_piece operator with SizeInBits. - static Register createSubRegister(int RegNo, unsigned SizeInBits, + static Register createSubRegister(int64_t RegNo, unsigned SizeInBits, const char *Comment) { return {RegNo, SizeInBits, Comment}; } @@ -161,13 +161,13 @@ class DwarfExpression { /// Emit a DW_OP_reg operation. Note that this is only legal inside a DWARF /// register location description. - void addReg(int DwarfReg, const char *Comment = nullptr); + void addReg(int64_t DwarfReg, const char *Comment = nullptr); /// Emit a DW_OP_breg operation. - void addBReg(int DwarfReg, int Offset); + void addBReg(int64_t DwarfReg, int64_t Offset); /// Emit DW_OP_fbreg . - void addFBReg(int Offset); + void addFBReg(int64_t Offset); /// Emit a partial DWARF register operation. /// diff --git a/llvm/lib/MC/MCRegisterInfo.cpp b/llvm/lib/MC/MCRegisterInfo.cpp index a5de02abce667..178b1d21e5200 100644 --- a/llvm/lib/MC/MCRegisterInfo.cpp +++ b/llvm/lib/MC/MCRegisterInfo.cpp @@ -141,7 +141,7 @@ unsigned MCRegisterInfo::getSubRegIndex(MCRegister Reg, return 0; } -int MCRegisterInfo::getDwarfRegNum(MCRegister RegNum, bool isEH) const { +int64_t MCRegisterInfo::getDwarfRegNum(MCRegister RegNum, bool isEH) const { const DwarfLLVMRegPair *M = isEH ? EHL2DwarfRegs : L2DwarfRegs; unsigned Size = isEH ? EHL2DwarfRegsSize : L2DwarfRegsSize; @@ -151,24 +151,28 @@ int MCRegisterInfo::getDwarfRegNum(MCRegister RegNum, bool isEH) const { const DwarfLLVMRegPair *I = std::lower_bound(M, M+Size, Key); if (I == M+Size || I->FromReg != RegNum) return -1; - return I->ToReg; + // Consumers need to be able to detect -1 and -2, but at various points + // the numbers move between unsigned and signed representations, as well as + // between 32- and 64-bit representations. We need to convert first to int + // before int64_t for proper sign handling. + return int64_t(int(I->ToReg)); } -std::optional MCRegisterInfo::getLLVMRegNum(unsigned RegNum, +std::optional MCRegisterInfo::getLLVMRegNum(uint64_t RegNum, bool isEH) const { const DwarfLLVMRegPair *M = isEH ? EHDwarf2LRegs : Dwarf2LRegs; unsigned Size = isEH ? EHDwarf2LRegsSize : Dwarf2LRegsSize; if (!M) return std::nullopt; - DwarfLLVMRegPair Key = { RegNum, 0 }; + DwarfLLVMRegPair Key = {unsigned(RegNum), 0}; const DwarfLLVMRegPair *I = std::lower_bound(M, M+Size, Key); if (I != M + Size && I->FromReg == RegNum) return MCRegister::from(I->ToReg); return std::nullopt; } -int MCRegisterInfo::getDwarfRegNumFromDwarfEHRegNum(unsigned RegNum) const { +int64_t MCRegisterInfo::getDwarfRegNumFromDwarfEHRegNum(uint64_t RegNum) const { // On ELF platforms, DWARF EH register numbers are the same as DWARF // other register numbers. On Darwin x86, they differ and so need to be // mapped. The .cfi_* directives accept integer literals as well as diff --git a/llvm/lib/Target/Lanai/LanaiRegisterInfo.h b/llvm/lib/Target/Lanai/LanaiRegisterInfo.h index 5168dddd93019..4ff74c5f4eb1e 100644 --- a/llvm/lib/Target/Lanai/LanaiRegisterInfo.h +++ b/llvm/lib/Target/Lanai/LanaiRegisterInfo.h @@ -43,8 +43,6 @@ struct LanaiRegisterInfo : public LanaiGenRegisterInfo { Register getFrameRegister(const MachineFunction &MF) const override; Register getBaseRegister() const; bool hasBasePointer(const MachineFunction &MF) const; - - int getDwarfRegNum(unsigned RegNum, bool IsEH) const; }; } // end namespace llvm From 95eb3d45f6f906a484164cd5148167f331502dda Mon Sep 17 00:00:00 2001 From: William G Hatch Date: Thu, 26 Sep 2024 12:32:43 -0600 Subject: [PATCH 04/13] [NVPTX] add support for encoding PTX registers for DWARF (#109495) This patch adds support for encoding PTX registers for DWARF, using the encoding supported by nvcc and cuda-gcc. There are some other features still needed for proper register debugging that this patch does not address, such as DW_AT_address_class. This PR is stacked on: https://github.com/llvm/llvm-project/pull/109494 --- .../CodeGen/AsmPrinter/DwarfExpression.cpp | 6 + llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp | 21 + llvm/lib/Target/NVPTX/NVPTXAsmPrinter.h | 1 + llvm/lib/Target/NVPTX/NVPTXRegisterInfo.cpp | 45 + llvm/lib/Target/NVPTX/NVPTXRegisterInfo.h | 16 + llvm/test/DebugInfo/NVPTX/cu-range-hole.ll | 36 +- llvm/test/DebugInfo/NVPTX/debug-addr-class.ll | 53 +- llvm/test/DebugInfo/NVPTX/debug-info.ll | 2246 +++++++++-------- 8 files changed, 1281 insertions(+), 1143 deletions(-) diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp index 08c762485b652..f5d2863ae70b7 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp @@ -105,6 +105,12 @@ bool DwarfExpression::addMachineReg(const TargetRegisterInfo &TRI, DwarfRegs.push_back(Register::createRegister(-1, nullptr)); return true; } + // Try getting dwarf register for virtual register anyway, eg. for NVPTX. + int64_t Reg = TRI.getDwarfRegNum(MachineReg, false); + if (Reg > 0) { + DwarfRegs.push_back(Register::createRegister(Reg, nullptr)); + return true; + } return false; } diff --git a/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp b/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp index fd69e483ae200..09d84d41a2294 100644 --- a/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp +++ b/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp @@ -490,6 +490,7 @@ void NVPTXAsmPrinter::emitFunctionEntryLabel() { // Emit open brace for function body. OutStreamer->emitRawText(StringRef("{\n")); setAndEmitFunctionVirtualRegisters(*MF); + encodeDebugInfoRegisterNumbers(*MF); // Emit initial .loc debug directive for correct relocation symbol data. if (const DISubprogram *SP = MF->getFunction().getSubprogram()) { assert(SP->getUnit()); @@ -1792,6 +1793,26 @@ void NVPTXAsmPrinter::setAndEmitFunctionVirtualRegisters( OutStreamer->emitRawText(O.str()); } +/// Translate virtual register numbers in DebugInfo locations to their printed +/// encodings, as used by CUDA-GDB. +void NVPTXAsmPrinter::encodeDebugInfoRegisterNumbers( + const MachineFunction &MF) { + const NVPTXSubtarget &STI = MF.getSubtarget(); + const NVPTXRegisterInfo *registerInfo = STI.getRegisterInfo(); + + // Clear the old mapping, and add the new one. This mapping is used after the + // printing of the current function is complete, but before the next function + // is printed. + registerInfo->clearDebugRegisterMap(); + + for (auto &classMap : VRegMapping) { + for (auto ®isterMapping : classMap.getSecond()) { + auto reg = registerMapping.getFirst(); + registerInfo->addToDebugRegisterMap(reg, getVirtualRegisterName(reg)); + } + } +} + void NVPTXAsmPrinter::printFPConstant(const ConstantFP *Fp, raw_ostream &O) { APFloat APF = APFloat(Fp->getValueAPF()); // make a copy bool ignored; diff --git a/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.h b/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.h index d950047dc92c7..f58b4bdc40474 100644 --- a/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.h +++ b/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.h @@ -181,6 +181,7 @@ class LLVM_LIBRARY_VISIBILITY NVPTXAsmPrinter : public AsmPrinter { void emitVirtualRegister(unsigned int vr, raw_ostream &); void emitFunctionParamList(const Function *, raw_ostream &O); void setAndEmitFunctionVirtualRegisters(const MachineFunction &MF); + void encodeDebugInfoRegisterNumbers(const MachineFunction &MF); void printReturnValStr(const Function *, raw_ostream &O); void printReturnValStr(const MachineFunction &MF, raw_ostream &O); bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNo, diff --git a/llvm/lib/Target/NVPTX/NVPTXRegisterInfo.cpp b/llvm/lib/Target/NVPTX/NVPTXRegisterInfo.cpp index a8a23f04c1249..97673f78685f5 100644 --- a/llvm/lib/Target/NVPTX/NVPTXRegisterInfo.cpp +++ b/llvm/lib/Target/NVPTX/NVPTXRegisterInfo.cpp @@ -11,6 +11,7 @@ //===----------------------------------------------------------------------===// #include "NVPTXRegisterInfo.h" +#include "MCTargetDesc/NVPTXInstPrinter.h" #include "NVPTX.h" #include "NVPTXSubtarget.h" #include "NVPTXTargetMachine.h" @@ -141,3 +142,47 @@ NVPTXRegisterInfo::getFrameLocalRegister(const MachineFunction &MF) const { static_cast(MF.getTarget()); return TM.is64Bit() ? NVPTX::VRFrameLocal64 : NVPTX::VRFrameLocal32; } + +void NVPTXRegisterInfo::clearDebugRegisterMap() const { + debugRegisterMap.clear(); +} + +static uint64_t encodeRegisterForDwarf(std::string registerName) { + if (registerName.length() > 8) { + // The name is more than 8 characters long, and so won't fit into 64 bits. + return 0; + } + + // Encode the name string into a DWARF register number using cuda-gdb's + // encoding. See cuda_check_dwarf2_reg_ptx_virtual_register in cuda-tdep.c, + // https://github.com/NVIDIA/cuda-gdb/blob/e5cf3bddae520ffb326f95b4d98ce5c7474b828b/gdb/cuda/cuda-tdep.c#L353 + // IE the bytes of the string are concatenated in reverse into a single + // number, which is stored in ULEB128, but in practice must be no more than 8 + // bytes (excluding null terminator, which is not included). + uint64_t result = 0; + for (int i = 0; i < registerName.length(); ++i) { + result = result << 8; + unsigned char c = registerName[i]; + result |= c; + } + return result; +} + +void NVPTXRegisterInfo::addToDebugRegisterMap( + uint64_t preEncodedVirtualRegister, std::string registerName) const { + uint64_t mapped = encodeRegisterForDwarf(registerName); + if (mapped == 0) + return; + debugRegisterMap.insert({preEncodedVirtualRegister, mapped}); +} + +int64_t NVPTXRegisterInfo::getDwarfRegNum(MCRegister RegNum, bool isEH) const { + if (Register::isPhysicalRegister(RegNum)) { + std::string name = NVPTXInstPrinter::getRegisterName(RegNum.id()); + return encodeRegisterForDwarf(name); + } + uint64_t lookup = debugRegisterMap.lookup(RegNum.id()); + if (lookup) + return lookup; + return -1; +} diff --git a/llvm/lib/Target/NVPTX/NVPTXRegisterInfo.h b/llvm/lib/Target/NVPTX/NVPTXRegisterInfo.h index 7bce3bd18ae8f..d2f6d257d6b07 100644 --- a/llvm/lib/Target/NVPTX/NVPTXRegisterInfo.h +++ b/llvm/lib/Target/NVPTX/NVPTXRegisterInfo.h @@ -26,6 +26,10 @@ class NVPTXRegisterInfo : public NVPTXGenRegisterInfo { // Hold Strings that can be free'd all together with NVPTXRegisterInfo BumpPtrAllocator StrAlloc; UniqueStringSaver StrPool; + // State for debug register mapping that can be mutated even through a const + // pointer so that we can get the proper dwarf register encoding during ASM + // emission. + mutable DenseMap debugRegisterMap; public: NVPTXRegisterInfo(); @@ -56,6 +60,18 @@ class NVPTXRegisterInfo : public NVPTXGenRegisterInfo { return getStrPool().save(O.str()).data(); } + // Manage the debugRegisterMap. PTX virtual registers for DebugInfo are + // encoded using the names used in the emitted text of the PTX assembly. This + // mapping must be managed during assembly emission. + // + // These are marked const because the interfaces used to access this + // RegisterInfo object are all const, but we need to communicate some state + // here, because the proper encoding for debug registers is available only + // temporarily during ASM emission. + void addToDebugRegisterMap(uint64_t preEncodedVirtualRegister, + std::string registerName) const; + void clearDebugRegisterMap() const; + int64_t getDwarfRegNum(MCRegister RegNum, bool isEH) const override; }; std::string getNVPTXRegClassName(const TargetRegisterClass *RC); diff --git a/llvm/test/DebugInfo/NVPTX/cu-range-hole.ll b/llvm/test/DebugInfo/NVPTX/cu-range-hole.ll index 4ae0b78f160c8..6acc1ba251271 100644 --- a/llvm/test/DebugInfo/NVPTX/cu-range-hole.ll +++ b/llvm/test/DebugInfo/NVPTX/cu-range-hole.ll @@ -120,6 +120,8 @@ entry: ; CHECK-NEXT: .b8 3 // Abbreviation Code ; CHECK-NEXT: .b8 5 // DW_TAG_formal_parameter ; CHECK-NEXT: .b8 0 // DW_CHILDREN_no +; CHECK-NEXT: .b8 2 // DW_AT_location +; CHECK-NEXT: .b8 10 // DW_FORM_block1 ; CHECK-NEXT: .b8 3 // DW_AT_name ; CHECK-NEXT: .b8 8 // DW_FORM_string ; CHECK-NEXT: .b8 58 // DW_AT_decl_file @@ -145,12 +147,12 @@ entry: ; CHECK-NEXT: } ; CHECK-NEXT: .section .debug_info ; CHECK-NEXT: { -; CHECK-NEXT: .b32 183 // Length of Unit +; CHECK-NEXT: .b32 195 // Length of Unit ; CHECK-NEXT: .b8 2 // DWARF version number ; CHECK-NEXT: .b8 0 ; CHECK-NEXT: .b32 .debug_abbrev // Offset Into Abbrev. Section ; CHECK-NEXT: .b8 8 // Address Size (in bytes) -; CHECK-NEXT: .b8 1 // Abbrev [1] 0xb:0xb0 DW_TAG_compile_unit +; CHECK-NEXT: .b8 1 // Abbrev [1] 0xb:0xbc DW_TAG_compile_unit ; CHECK-NEXT: .b8 99 // DW_AT_producer ; CHECK-NEXT: .b8 108 ; CHECK-NEXT: .b8 97 @@ -223,7 +225,7 @@ entry: ; CHECK-NEXT: .b8 0 ; CHECK-NEXT: .b64 $L__func_begin0 // DW_AT_low_pc ; CHECK-NEXT: .b64 $L__func_end2 // DW_AT_high_pc -; CHECK-NEXT: .b8 2 // Abbrev [2] 0x65:0x27 DW_TAG_subprogram +; CHECK-NEXT: .b8 2 // Abbrev [2] 0x65:0x2d DW_TAG_subprogram ; CHECK-NEXT: .b64 $L__func_begin0 // DW_AT_low_pc ; CHECK-NEXT: .b64 $L__func_end0 // DW_AT_high_pc ; CHECK-NEXT: .b8 1 // DW_AT_frame_base @@ -233,16 +235,22 @@ entry: ; CHECK-NEXT: .b8 1 // DW_AT_decl_file ; CHECK-NEXT: .b8 1 // DW_AT_decl_line ; CHECK-NEXT: .b8 1 // DW_AT_prototyped -; CHECK-NEXT: .b32 179 // DW_AT_type +; CHECK-NEXT: .b32 191 // DW_AT_type ; CHECK-NEXT: .b8 1 // DW_AT_external -; CHECK-NEXT: .b8 3 // Abbrev [3] 0x82:0x9 DW_TAG_formal_parameter +; CHECK-NEXT: .b8 3 // Abbrev [3] 0x82:0xf DW_TAG_formal_parameter +; CHECK-NEXT: .b8 5 // DW_AT_location +; CHECK-NEXT: .b8 144 +; CHECK-NEXT: .b8 177 +; CHECK-NEXT: .b8 228 +; CHECK-NEXT: .b8 149 +; CHECK-NEXT: .b8 1 ; CHECK-NEXT: .b8 99 // DW_AT_name ; CHECK-NEXT: .b8 0 ; CHECK-NEXT: .b8 1 // DW_AT_decl_file ; CHECK-NEXT: .b8 1 // DW_AT_decl_line -; CHECK-NEXT: .b32 179 // DW_AT_type +; CHECK-NEXT: .b32 191 // DW_AT_type ; CHECK-NEXT: .b8 0 // End Of Children Mark -; CHECK-NEXT: .b8 2 // Abbrev [2] 0x8c:0x27 DW_TAG_subprogram +; CHECK-NEXT: .b8 2 // Abbrev [2] 0x92:0x2d DW_TAG_subprogram ; CHECK-NEXT: .b64 $L__func_begin2 // DW_AT_low_pc ; CHECK-NEXT: .b64 $L__func_end2 // DW_AT_high_pc ; CHECK-NEXT: .b8 1 // DW_AT_frame_base @@ -252,16 +260,22 @@ entry: ; CHECK-NEXT: .b8 1 // DW_AT_decl_file ; CHECK-NEXT: .b8 3 // DW_AT_decl_line ; CHECK-NEXT: .b8 1 // DW_AT_prototyped -; CHECK-NEXT: .b32 179 // DW_AT_type +; CHECK-NEXT: .b32 191 // DW_AT_type ; CHECK-NEXT: .b8 1 // DW_AT_external -; CHECK-NEXT: .b8 3 // Abbrev [3] 0xa9:0x9 DW_TAG_formal_parameter +; CHECK-NEXT: .b8 3 // Abbrev [3] 0xaf:0xf DW_TAG_formal_parameter +; CHECK-NEXT: .b8 5 // DW_AT_location +; CHECK-NEXT: .b8 144 +; CHECK-NEXT: .b8 177 +; CHECK-NEXT: .b8 228 +; CHECK-NEXT: .b8 149 +; CHECK-NEXT: .b8 1 ; CHECK-NEXT: .b8 101 // DW_AT_name ; CHECK-NEXT: .b8 0 ; CHECK-NEXT: .b8 1 // DW_AT_decl_file ; CHECK-NEXT: .b8 3 // DW_AT_decl_line -; CHECK-NEXT: .b32 179 // DW_AT_type +; CHECK-NEXT: .b32 191 // DW_AT_type ; CHECK-NEXT: .b8 0 // End Of Children Mark -; CHECK-NEXT: .b8 4 // Abbrev [4] 0xb3:0x7 DW_TAG_base_type +; CHECK-NEXT: .b8 4 // Abbrev [4] 0xbf:0x7 DW_TAG_base_type ; CHECK-NEXT: .b8 105 // DW_AT_name ; CHECK-NEXT: .b8 110 ; CHECK-NEXT: .b8 116 diff --git a/llvm/test/DebugInfo/NVPTX/debug-addr-class.ll b/llvm/test/DebugInfo/NVPTX/debug-addr-class.ll index c25742ef0d276..03a120cd52fab 100644 --- a/llvm/test/DebugInfo/NVPTX/debug-addr-class.ll +++ b/llvm/test/DebugInfo/NVPTX/debug-addr-class.ll @@ -160,6 +160,8 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) ; CHECK-NEXT:.b8 5 // Abbreviation Code ; CHECK-NEXT:.b8 5 // DW_TAG_formal_parameter ; CHECK-NEXT:.b8 0 // DW_CHILDREN_no +; CHECK-NEXT:.b8 2 // DW_AT_location +; CHECK-NEXT:.b8 10 // DW_FORM_block1 ; CHECK-NEXT:.b8 3 // DW_AT_name ; CHECK-NEXT:.b8 8 // DW_FORM_string ; CHECK-NEXT:.b8 58 // DW_AT_decl_file @@ -171,6 +173,19 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) ; CHECK-NEXT:.b8 0 // EOM(1) ; CHECK-NEXT:.b8 0 // EOM(2) ; CHECK-NEXT:.b8 6 // Abbreviation Code +; CHECK-NEXT:.b8 5 // DW_TAG_formal_parameter +; CHECK-NEXT:.b8 0 // DW_CHILDREN_no +; CHECK-NEXT:.b8 3 // DW_AT_name +; CHECK-NEXT:.b8 8 // DW_FORM_string +; CHECK-NEXT:.b8 58 // DW_AT_decl_file +; CHECK-NEXT:.b8 11 // DW_FORM_data1 +; CHECK-NEXT:.b8 59 // DW_AT_decl_line +; CHECK-NEXT:.b8 11 // DW_FORM_data1 +; CHECK-NEXT:.b8 73 // DW_AT_type +; CHECK-NEXT:.b8 19 // DW_FORM_ref4 +; CHECK-NEXT:.b8 0 // EOM(1) +; CHECK-NEXT:.b8 0 // EOM(2) +; CHECK-NEXT:.b8 7 // Abbreviation Code ; CHECK-NEXT:.b8 15 // DW_TAG_pointer_type ; CHECK-NEXT:.b8 0 // DW_CHILDREN_no ; CHECK-NEXT:.b8 73 // DW_AT_type @@ -181,12 +196,12 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) ; CHECK-NEXT: } ; CHECK-NEXT: .section .debug_info ; CHECK-NEXT: { -; CHECK-NEXT:.b32 240 // Length of Unit +; CHECK-NEXT:.b32 252 // Length of Unit ; CHECK-NEXT:.b8 2 // DWARF version number ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b32 .debug_abbrev // Offset Into Abbrev. Section ; CHECK-NEXT:.b8 8 // Address Size (in bytes) -; CHECK-NEXT:.b8 1 // Abbrev [1] 0xb:0xe9 DW_TAG_compile_unit +; CHECK-NEXT:.b8 1 // Abbrev [1] 0xb:0xf5 DW_TAG_compile_unit ; CHECK-NEXT:.b8 99 // DW_AT_producer ; CHECK-NEXT:.b8 108 ; CHECK-NEXT:.b8 97 @@ -298,7 +313,7 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) ; CHECK-NEXT:.b8 9 // DW_AT_location ; CHECK-NEXT:.b8 3 ; CHECK-NEXT:.b64 SHARED -; CHECK-NEXT:.b8 4 // Abbrev [4] 0xa0:0x45 DW_TAG_subprogram +; CHECK-NEXT:.b8 4 // Abbrev [4] 0xa0:0x51 DW_TAG_subprogram ; CHECK-NEXT:.b64 $L__func_begin0 // DW_AT_low_pc ; CHECK-NEXT:.b64 $L__func_end0 // DW_AT_high_pc ; CHECK-NEXT:.b8 1 // DW_AT_frame_base @@ -316,32 +331,44 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) ; CHECK-NEXT:.b8 1 // DW_AT_decl_file ; CHECK-NEXT:.b8 6 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 5 // Abbrev [5] 0xc0:0x9 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 5 // Abbrev [5] 0xc0:0xf DW_TAG_formal_parameter +; CHECK-NEXT:.b8 5 // DW_AT_location +; CHECK-NEXT:.b8 144 +; CHECK-NEXT:.b8 177 +; CHECK-NEXT:.b8 204 +; CHECK-NEXT:.b8 149 +; CHECK-NEXT:.b8 1 ; CHECK-NEXT:.b8 97 // DW_AT_name ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 1 // DW_AT_decl_file ; CHECK-NEXT:.b8 6 // DW_AT_decl_line -; CHECK-NEXT:.b32 229 // DW_AT_type -; CHECK-NEXT:.b8 5 // Abbrev [5] 0xc9:0x9 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 241 // DW_AT_type +; CHECK-NEXT:.b8 6 // Abbrev [6] 0xcf:0x9 DW_TAG_formal_parameter ; CHECK-NEXT:.b8 120 // DW_AT_name ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 1 // DW_AT_decl_file ; CHECK-NEXT:.b8 6 // DW_AT_decl_line -; CHECK-NEXT:.b32 238 // DW_AT_type -; CHECK-NEXT:.b8 5 // Abbrev [5] 0xd2:0x9 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 250 // DW_AT_type +; CHECK-NEXT:.b8 6 // Abbrev [6] 0xd8:0x9 DW_TAG_formal_parameter ; CHECK-NEXT:.b8 121 // DW_AT_name ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 1 // DW_AT_decl_file ; CHECK-NEXT:.b8 6 // DW_AT_decl_line -; CHECK-NEXT:.b32 238 // DW_AT_type -; CHECK-NEXT:.b8 5 // Abbrev [5] 0xdb:0x9 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 250 // DW_AT_type +; CHECK-NEXT:.b8 5 // Abbrev [5] 0xe1:0xf DW_TAG_formal_parameter +; CHECK-NEXT:.b8 5 // DW_AT_location +; CHECK-NEXT:.b8 144 +; CHECK-NEXT:.b8 177 +; CHECK-NEXT:.b8 228 +; CHECK-NEXT:.b8 149 +; CHECK-NEXT:.b8 1 ; CHECK-NEXT:.b8 105 // DW_AT_name ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 1 // DW_AT_decl_file ; CHECK-NEXT:.b8 6 // DW_AT_decl_line ; CHECK-NEXT:.b32 127 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 3 // Abbrev [3] 0xe5:0x9 DW_TAG_base_type +; CHECK-NEXT:.b8 3 // Abbrev [3] 0xf1:0x9 DW_TAG_base_type ; CHECK-NEXT:.b8 102 // DW_AT_name ; CHECK-NEXT:.b8 108 ; CHECK-NEXT:.b8 111 @@ -350,8 +377,8 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_encoding ; CHECK-NEXT:.b8 4 // DW_AT_byte_size -; CHECK-NEXT:.b8 6 // Abbrev [6] 0xee:0x5 DW_TAG_pointer_type -; CHECK-NEXT:.b32 229 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0xfa:0x5 DW_TAG_pointer_type +; CHECK-NEXT:.b32 241 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark ; CHECK-NEXT: } ; CHECK-NEXT: .section .debug_loc { } diff --git a/llvm/test/DebugInfo/NVPTX/debug-info.ll b/llvm/test/DebugInfo/NVPTX/debug-info.ll index 9948925db57c9..5c5fb53edd7cb 100644 --- a/llvm/test/DebugInfo/NVPTX/debug-info.ll +++ b/llvm/test/DebugInfo/NVPTX/debug-info.ll @@ -490,6 +490,8 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 27 // Abbreviation Code ; CHECK-NEXT:.b8 5 // DW_TAG_formal_parameter ; CHECK-NEXT:.b8 0 // DW_CHILDREN_no +; CHECK-NEXT:.b8 2 // DW_AT_location +; CHECK-NEXT:.b8 10 // DW_FORM_block1 ; CHECK-NEXT:.b8 49 // DW_AT_abstract_origin ; CHECK-NEXT:.b8 19 // DW_FORM_ref4 ; CHECK-NEXT:.b8 0 // EOM(1) @@ -703,12 +705,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT: } ; CHECK-NEXT: .section .debug_info ; CHECK-NEXT: { -; CHECK-NEXT:.b32 10029 // Length of Unit +; CHECK-NEXT:.b32 10035 // Length of Unit ; CHECK-NEXT:.b8 2 // DWARF version number ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b32 .debug_abbrev // Offset Into Abbrev. Section ; CHECK-NEXT:.b8 8 // Address Size (in bytes) -; CHECK-NEXT:.b8 1 // Abbrev [1] 0xb:0x2726 DW_TAG_compile_unit +; CHECK-NEXT:.b8 1 // Abbrev [1] 0xb:0x272c DW_TAG_compile_unit ; CHECK-NEXT:.b8 0 // DW_AT_producer ; CHECK-NEXT:.b8 4 // DW_AT_language ; CHECK-NEXT:.b8 0 @@ -2600,7 +2602,7 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 4 // DW_AT_byte_size ; CHECK-NEXT:.b8 12 // Abbrev [12] 0x84d:0x5 DW_TAG_pointer_type ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 23 // Abbrev [23] 0x852:0xbf DW_TAG_subprogram +; CHECK-NEXT:.b8 23 // Abbrev [23] 0x852:0xc5 DW_TAG_subprogram ; CHECK-NEXT:.b64 $L__func_begin0 // DW_AT_low_pc ; CHECK-NEXT:.b64 $L__func_end0 // DW_AT_high_pc ; CHECK-NEXT:.b8 1 // DW_AT_frame_base @@ -2634,7 +2636,7 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 1 // DW_AT_decl_file ; CHECK-NEXT:.b8 5 // DW_AT_decl_line -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 22 // Abbrev [22] 0x886:0x9 DW_TAG_formal_parameter ; CHECK-NEXT:.b8 97 // DW_AT_name ; CHECK-NEXT:.b8 0 @@ -2658,7 +2660,7 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 1 // DW_AT_decl_file ; CHECK-NEXT:.b8 6 // DW_AT_decl_line -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 25 // Abbrev [25] 0x8aa:0x18 DW_TAG_inlined_subroutine ; CHECK-NEXT:.b32 707 // DW_AT_abstract_origin ; CHECK-NEXT:.b64 $L__tmp0 // DW_AT_low_pc @@ -2680,867 +2682,873 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 1 // DW_AT_call_file ; CHECK-NEXT:.b8 6 // DW_AT_call_line ; CHECK-NEXT:.b8 37 // DW_AT_call_column -; CHECK-NEXT:.b8 26 // Abbrev [26] 0x8f2:0x1e DW_TAG_inlined_subroutine +; CHECK-NEXT:.b8 26 // Abbrev [26] 0x8f2:0x24 DW_TAG_inlined_subroutine ; CHECK-NEXT:.b32 2066 // DW_AT_abstract_origin ; CHECK-NEXT:.b64 $L__tmp9 // DW_AT_low_pc ; CHECK-NEXT:.b64 $L__tmp10 // DW_AT_high_pc ; CHECK-NEXT:.b8 1 // DW_AT_call_file ; CHECK-NEXT:.b8 8 // DW_AT_call_line ; CHECK-NEXT:.b8 5 // DW_AT_call_column -; CHECK-NEXT:.b8 27 // Abbrev [27] 0x90a:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 27 // Abbrev [27] 0x90a:0xb DW_TAG_formal_parameter +; CHECK-NEXT:.b8 5 // DW_AT_location +; CHECK-NEXT:.b8 144 +; CHECK-NEXT:.b8 179 +; CHECK-NEXT:.b8 204 +; CHECK-NEXT:.b8 149 +; CHECK-NEXT:.b8 1 ; CHECK-NEXT:.b32 2095 // DW_AT_abstract_origin ; CHECK-NEXT:.b8 0 // End Of Children Mark ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 28 // Abbrev [28] 0x911:0x588 DW_TAG_namespace +; CHECK-NEXT:.b8 28 // Abbrev [28] 0x917:0x588 DW_TAG_namespace ; CHECK-NEXT:.b8 115 // DW_AT_name ; CHECK-NEXT:.b8 116 ; CHECK-NEXT:.b8 100 ; CHECK-NEXT:.b8 0 -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x916:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x91c:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 202 // DW_AT_decl_line -; CHECK-NEXT:.b32 3737 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x91d:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 3743 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x923:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 203 // DW_AT_decl_line -; CHECK-NEXT:.b32 3781 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x924:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 3787 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x92a:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 204 // DW_AT_decl_line -; CHECK-NEXT:.b32 3810 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x92b:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 3816 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x931:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 205 // DW_AT_decl_line -; CHECK-NEXT:.b32 3841 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x932:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 3847 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x938:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 206 // DW_AT_decl_line -; CHECK-NEXT:.b32 3870 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x939:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 3876 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x93f:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 207 // DW_AT_decl_line -; CHECK-NEXT:.b32 3901 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x940:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 3907 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x946:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 208 // DW_AT_decl_line -; CHECK-NEXT:.b32 3930 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x947:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 3936 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x94d:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 209 // DW_AT_decl_line -; CHECK-NEXT:.b32 3967 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x94e:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 3973 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x954:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 210 // DW_AT_decl_line -; CHECK-NEXT:.b32 3998 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x955:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4004 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x95b:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 211 // DW_AT_decl_line -; CHECK-NEXT:.b32 4027 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x95c:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4033 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x962:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 212 // DW_AT_decl_line -; CHECK-NEXT:.b32 4056 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x963:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4062 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x969:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 213 // DW_AT_decl_line -; CHECK-NEXT:.b32 4099 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x96a:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4105 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x970:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 214 // DW_AT_decl_line -; CHECK-NEXT:.b32 4126 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x971:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4132 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x977:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 215 // DW_AT_decl_line -; CHECK-NEXT:.b32 4155 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x978:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4161 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x97e:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 216 // DW_AT_decl_line -; CHECK-NEXT:.b32 4182 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x97f:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4188 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x985:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 217 // DW_AT_decl_line -; CHECK-NEXT:.b32 4211 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x986:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4217 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x98c:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 218 // DW_AT_decl_line -; CHECK-NEXT:.b32 4238 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x98d:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4244 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x993:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 219 // DW_AT_decl_line -; CHECK-NEXT:.b32 4267 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x994:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4273 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x99a:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 220 // DW_AT_decl_line -; CHECK-NEXT:.b32 4298 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x99b:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4304 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9a1:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 221 // DW_AT_decl_line -; CHECK-NEXT:.b32 4327 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9a2:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4333 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9a8:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 222 // DW_AT_decl_line -; CHECK-NEXT:.b32 4362 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9a9:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4368 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9af:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 223 // DW_AT_decl_line -; CHECK-NEXT:.b32 4393 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9b0:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4399 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9b6:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 224 // DW_AT_decl_line -; CHECK-NEXT:.b32 4432 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9b7:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4438 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9bd:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 225 // DW_AT_decl_line -; CHECK-NEXT:.b32 4467 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9be:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4473 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9c4:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 226 // DW_AT_decl_line -; CHECK-NEXT:.b32 4502 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9c5:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4508 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9cb:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 227 // DW_AT_decl_line -; CHECK-NEXT:.b32 4537 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9cc:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4543 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9d2:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 228 // DW_AT_decl_line -; CHECK-NEXT:.b32 4586 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9d3:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4592 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9d9:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 229 // DW_AT_decl_line -; CHECK-NEXT:.b32 4629 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9da:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4635 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9e0:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 230 // DW_AT_decl_line -; CHECK-NEXT:.b32 4666 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9e1:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4672 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9e7:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 231 // DW_AT_decl_line -; CHECK-NEXT:.b32 4697 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9e8:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4703 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9ee:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 232 // DW_AT_decl_line -; CHECK-NEXT:.b32 4742 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9ef:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4748 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9f5:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 233 // DW_AT_decl_line -; CHECK-NEXT:.b32 4787 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9f6:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4793 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9fc:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 234 // DW_AT_decl_line -; CHECK-NEXT:.b32 4843 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x9fd:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4849 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa03:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 235 // DW_AT_decl_line -; CHECK-NEXT:.b32 4874 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa04:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4880 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa0a:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 236 // DW_AT_decl_line -; CHECK-NEXT:.b32 4913 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa0b:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4919 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa11:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 237 // DW_AT_decl_line -; CHECK-NEXT:.b32 4963 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa12:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 4969 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa18:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 238 // DW_AT_decl_line -; CHECK-NEXT:.b32 5017 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa19:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5023 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa1f:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 239 // DW_AT_decl_line -; CHECK-NEXT:.b32 5048 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa20:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5054 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa26:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 240 // DW_AT_decl_line -; CHECK-NEXT:.b32 5085 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa27:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5091 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa2d:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 241 // DW_AT_decl_line -; CHECK-NEXT:.b32 5135 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa2e:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5141 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa34:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 242 // DW_AT_decl_line -; CHECK-NEXT:.b32 5176 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa35:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5182 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa3b:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 243 // DW_AT_decl_line -; CHECK-NEXT:.b32 5213 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa3c:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5219 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa42:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 244 // DW_AT_decl_line -; CHECK-NEXT:.b32 5246 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa43:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5252 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa49:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 245 // DW_AT_decl_line -; CHECK-NEXT:.b32 5277 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa4a:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5283 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa50:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 246 // DW_AT_decl_line -; CHECK-NEXT:.b32 5310 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa51:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5316 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa57:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 247 // DW_AT_decl_line -; CHECK-NEXT:.b32 5337 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa58:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5343 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa5e:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 248 // DW_AT_decl_line -; CHECK-NEXT:.b32 5368 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa5f:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5374 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa65:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 249 // DW_AT_decl_line -; CHECK-NEXT:.b32 5399 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa66:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5405 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa6c:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 250 // DW_AT_decl_line -; CHECK-NEXT:.b32 5428 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa6d:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5434 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa73:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 251 // DW_AT_decl_line -; CHECK-NEXT:.b32 5457 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa74:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5463 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa7a:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 252 // DW_AT_decl_line -; CHECK-NEXT:.b32 5488 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa7b:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5494 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa81:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 253 // DW_AT_decl_line -; CHECK-NEXT:.b32 5521 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa82:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5527 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa88:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 254 // DW_AT_decl_line -; CHECK-NEXT:.b32 5556 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa89:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5562 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xa8f:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 255 // DW_AT_decl_line -; CHECK-NEXT:.b32 5592 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xa90:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5598 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xa96:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 0 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 5649 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xa98:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5655 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xa9e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 1 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 5680 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xaa0:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5686 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xaa6:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 2 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 5719 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xaa8:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5725 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xaae:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 3 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 5764 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xab0:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5770 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xab6:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 4 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 5797 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xab8:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5803 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xabe:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 5 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 5842 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xac0:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5848 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xac6:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 6 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 5888 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xac8:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5894 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xace:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 7 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 5917 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xad0:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5923 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xad6:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 8 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 5948 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xad8:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5954 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xade:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 9 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 5989 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xae0:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 5995 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xae6:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 10 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6028 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xae8:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6034 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xaee:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 11 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6063 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xaf0:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6069 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xaf6:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 12 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6090 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xaf8:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6096 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xafe:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 13 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6119 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb00:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6125 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb06:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 14 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6148 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb08:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6154 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb0e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 15 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6175 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb10:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6181 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb16:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 16 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6204 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb18:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6210 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb1e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 17 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6237 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xb20:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6243 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xb26:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 102 // DW_AT_decl_line -; CHECK-NEXT:.b32 6268 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xb27:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6274 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xb2d:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 121 // DW_AT_decl_line -; CHECK-NEXT:.b32 6288 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xb2e:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6294 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xb34:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 140 // DW_AT_decl_line -; CHECK-NEXT:.b32 6308 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xb35:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6314 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xb3b:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 159 // DW_AT_decl_line -; CHECK-NEXT:.b32 6328 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xb3c:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6334 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xb42:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 180 // DW_AT_decl_line -; CHECK-NEXT:.b32 6354 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xb43:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6360 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xb49:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 199 // DW_AT_decl_line -; CHECK-NEXT:.b32 6374 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xb4a:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6380 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xb50:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 218 // DW_AT_decl_line -; CHECK-NEXT:.b32 6393 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xb51:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6399 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xb57:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 237 // DW_AT_decl_line -; CHECK-NEXT:.b32 6413 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb58:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6419 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb5e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 0 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6432 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb60:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6438 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb66:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 19 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6452 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb68:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6458 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb6e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 38 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6473 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb70:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6479 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb76:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 59 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6498 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb78:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6504 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb7e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 78 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6524 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb80:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6530 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb86:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 97 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6550 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb88:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6556 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb8e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 116 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6569 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb90:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6575 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb96:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 135 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6590 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb98:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6596 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xb9e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 147 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6620 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xba0:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6626 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xba6:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 184 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6644 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xba8:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6650 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xbae:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 203 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6663 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xbb0:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6669 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xbb6:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 222 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6683 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xbb8:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6689 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xbbe:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 241 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6703 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xbc0:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6709 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xbc6:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 6 // DW_AT_decl_file ; CHECK-NEXT:.b8 4 // DW_AT_decl_line ; CHECK-NEXT:.b8 2 -; CHECK-NEXT:.b32 6722 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xbc8:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6728 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xbce:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 118 // DW_AT_decl_line -; CHECK-NEXT:.b32 6742 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xbcf:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6748 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xbd5:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 119 // DW_AT_decl_line -; CHECK-NEXT:.b32 6757 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xbd6:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6763 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xbdc:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 121 // DW_AT_decl_line -; CHECK-NEXT:.b32 6805 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xbdd:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6811 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xbe3:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 122 // DW_AT_decl_line -; CHECK-NEXT:.b32 6818 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xbe4:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6824 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xbea:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 123 // DW_AT_decl_line -; CHECK-NEXT:.b32 6838 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xbeb:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6844 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xbf1:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 129 // DW_AT_decl_line -; CHECK-NEXT:.b32 6867 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xbf2:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6873 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xbf8:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 130 // DW_AT_decl_line -; CHECK-NEXT:.b32 6887 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xbf9:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6893 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xbff:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 131 // DW_AT_decl_line -; CHECK-NEXT:.b32 6908 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc00:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6914 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc06:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 132 // DW_AT_decl_line -; CHECK-NEXT:.b32 6929 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc07:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 6935 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc0d:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 133 // DW_AT_decl_line -; CHECK-NEXT:.b32 7057 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc0e:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7063 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc14:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 134 // DW_AT_decl_line -; CHECK-NEXT:.b32 7085 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc15:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7091 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc1b:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 135 // DW_AT_decl_line -; CHECK-NEXT:.b32 7110 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc1c:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7116 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc22:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 136 // DW_AT_decl_line -; CHECK-NEXT:.b32 7128 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc23:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7134 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc29:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 137 // DW_AT_decl_line -; CHECK-NEXT:.b32 7145 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc2a:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7151 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc30:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 138 // DW_AT_decl_line -; CHECK-NEXT:.b32 7173 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc31:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7179 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc37:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 139 // DW_AT_decl_line -; CHECK-NEXT:.b32 7194 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc38:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7200 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc3e:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 140 // DW_AT_decl_line -; CHECK-NEXT:.b32 7220 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc3f:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7226 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc45:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 142 // DW_AT_decl_line -; CHECK-NEXT:.b32 7243 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc46:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7249 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc4c:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 143 // DW_AT_decl_line -; CHECK-NEXT:.b32 7270 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc4d:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7276 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc53:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 144 // DW_AT_decl_line -; CHECK-NEXT:.b32 7321 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc54:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7327 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc5a:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 146 // DW_AT_decl_line -; CHECK-NEXT:.b32 7354 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc5b:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7360 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc61:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 152 // DW_AT_decl_line -; CHECK-NEXT:.b32 7387 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc62:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7393 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc68:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 153 // DW_AT_decl_line -; CHECK-NEXT:.b32 7402 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc69:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7408 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc6f:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 154 // DW_AT_decl_line -; CHECK-NEXT:.b32 7431 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc70:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7437 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc76:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 155 // DW_AT_decl_line -; CHECK-NEXT:.b32 7449 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc77:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7455 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc7d:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 156 // DW_AT_decl_line -; CHECK-NEXT:.b32 7481 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc7e:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7487 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc84:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 157 // DW_AT_decl_line -; CHECK-NEXT:.b32 7513 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc85:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7519 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc8b:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 158 // DW_AT_decl_line -; CHECK-NEXT:.b32 7546 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc8c:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7552 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc92:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 160 // DW_AT_decl_line -; CHECK-NEXT:.b32 7569 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc93:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7575 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc99:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 161 // DW_AT_decl_line -; CHECK-NEXT:.b32 7614 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xc9a:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7620 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xca0:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 241 // DW_AT_decl_line -; CHECK-NEXT:.b32 7762 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xca1:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7768 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xca7:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 243 // DW_AT_decl_line -; CHECK-NEXT:.b32 7811 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xca8:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7817 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xcae:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 245 // DW_AT_decl_line -; CHECK-NEXT:.b32 7830 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xcaf:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7836 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xcb5:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 246 // DW_AT_decl_line -; CHECK-NEXT:.b32 7716 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xcb6:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7722 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xcbc:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 247 // DW_AT_decl_line -; CHECK-NEXT:.b32 7852 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xcbd:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7858 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xcc3:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 249 // DW_AT_decl_line -; CHECK-NEXT:.b32 7879 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xcc4:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7885 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xcca:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 250 // DW_AT_decl_line -; CHECK-NEXT:.b32 7994 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xccb:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8000 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xcd1:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 251 // DW_AT_decl_line -; CHECK-NEXT:.b32 7901 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xcd2:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7907 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xcd8:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 252 // DW_AT_decl_line -; CHECK-NEXT:.b32 7934 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0xcd9:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7940 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0xcdf:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 253 // DW_AT_decl_line -; CHECK-NEXT:.b32 8021 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xce0:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8027 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xce6:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 149 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8064 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xce8:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8070 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xcee:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 150 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8096 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xcf0:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8102 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xcf6:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 151 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8130 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xcf8:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8136 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xcfe:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 152 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8162 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd00:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8168 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd06:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 153 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8196 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd08:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8202 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd0e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 154 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8236 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd10:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8242 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd16:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 155 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8268 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd18:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8274 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd1e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 156 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8302 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd20:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8308 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd26:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 157 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8334 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd28:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8340 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd2e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 158 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8366 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd30:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8372 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd36:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 159 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8412 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd38:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8418 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd3e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 160 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8442 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd40:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8448 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd46:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 161 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8474 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd48:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8480 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd4e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 162 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8506 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd50:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8512 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd56:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 163 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8536 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd58:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8542 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd5e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 164 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8568 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd60:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8574 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd66:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 165 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8598 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd68:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8604 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd6e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 166 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8632 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd70:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8638 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd76:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 167 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8664 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd78:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8670 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd7e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 168 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8702 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd80:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8708 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd86:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 169 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8736 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd88:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8742 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd8e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 170 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8778 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd90:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8784 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd96:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 171 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8816 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd98:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8822 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xd9e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 172 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8854 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xda0:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8860 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xda6:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 173 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8892 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xda8:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8898 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xdae:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 174 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8933 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xdb0:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8939 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xdb6:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 175 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 8973 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xdb8:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8979 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xdbe:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 176 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9007 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xdc0:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9013 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xdc6:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 177 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9047 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xdc8:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9053 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xdce:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 178 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9083 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xdd0:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9089 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xdd6:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 179 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9119 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xdd8:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9125 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xdde:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 180 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9157 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xde0:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9163 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xde6:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 181 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9191 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xde8:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9197 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xdee:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 182 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9225 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xdf0:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9231 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xdf6:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 183 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9257 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xdf8:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9263 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xdfe:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 184 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9289 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe00:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9295 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe06:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 185 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9319 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe08:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9325 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe0e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 186 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9353 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe10:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9359 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe16:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 187 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9389 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe18:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9395 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe1e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 188 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9428 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe20:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9434 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe26:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 189 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9471 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe28:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9477 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe2e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 190 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9520 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe30:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9526 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe36:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 191 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9556 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe38:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9562 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe3e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 192 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9605 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe40:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9611 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe46:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 193 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9654 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe48:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9660 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe4e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 194 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9686 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe50:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9692 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe56:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 195 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9720 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe58:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9726 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe5e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 196 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9764 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe60:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9770 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe66:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 197 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9806 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe68:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9812 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe6e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 198 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9836 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe70:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9842 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe76:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 199 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9868 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe78:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9874 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe7e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 200 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9900 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe80:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9906 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe86:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 201 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9930 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe88:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9936 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe8e:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 202 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9962 // DW_AT_import -; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe90:0x8 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 9968 // DW_AT_import +; CHECK-NEXT:.b8 30 // Abbrev [30] 0xe96:0x8 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 13 // DW_AT_decl_file ; CHECK-NEXT:.b8 203 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 9998 // DW_AT_import +; CHECK-NEXT:.b32 10004 // DW_AT_import ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0xe99:0x1b DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0xe9f:0x1b DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -3556,12 +3564,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 44 // DW_AT_decl_line -; CHECK-NEXT:.b32 3764 // DW_AT_type +; CHECK-NEXT:.b32 3770 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0xeae:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 3764 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0xeb4:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 3770 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 10 // Abbrev [10] 0xeb4:0x11 DW_TAG_base_type +; CHECK-NEXT:.b8 10 // Abbrev [10] 0xeba:0x11 DW_TAG_base_type ; CHECK-NEXT:.b8 108 // DW_AT_name ; CHECK-NEXT:.b8 111 ; CHECK-NEXT:.b8 110 @@ -3578,7 +3586,7 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_encoding ; CHECK-NEXT:.b8 8 // DW_AT_byte_size -; CHECK-NEXT:.b8 31 // Abbrev [31] 0xec5:0x1d DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0xecb:0x1d DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -3598,10 +3606,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 46 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0xedc:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0xee2:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0xee2:0x1f DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0xee8:0x1f DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -3623,10 +3631,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 48 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0xefb:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0xf01:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0xf01:0x1d DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0xf07:0x1d DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -3646,10 +3654,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 50 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0xf18:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0xf1e:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0xf1e:0x1f DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0xf24:0x1f DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -3671,10 +3679,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 52 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0xf37:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0xf3d:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0xf3d:0x1d DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0xf43:0x1d DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -3694,10 +3702,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 56 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0xf54:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0xf5a:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0xf5a:0x25 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0xf60:0x25 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -3720,12 +3728,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 54 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0xf74:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0xf7a:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0xf79:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0xf7f:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0xf7f:0x1f DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0xf85:0x1f DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -3747,10 +3755,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 58 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0xf98:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0xf9e:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0xf9e:0x1d DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0xfa4:0x1d DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -3770,10 +3778,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 60 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0xfb5:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0xfbb:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0xfbb:0x1d DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0xfc1:0x1d DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -3793,10 +3801,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 62 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0xfd2:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0xfd8:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0xfd8:0x2b DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0xfde:0x2b DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -3825,12 +3833,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 64 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0xff8:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0xffe:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0xffd:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1003:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1003:0x1b DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1009:0x1b DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -3848,10 +3856,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 66 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1018:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x101e:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x101e:0x1d DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1024:0x1d DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -3871,10 +3879,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 68 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1035:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x103b:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x103b:0x1b DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1041:0x1b DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -3892,10 +3900,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 72 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1050:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1056:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1056:0x1d DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x105c:0x1d DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -3915,10 +3923,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 70 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x106d:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1073:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1073:0x1b DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1079:0x1b DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -3936,10 +3944,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 76 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1088:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x108e:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x108e:0x1d DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1094:0x1d DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -3959,10 +3967,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 74 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x10a5:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x10ab:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x10ab:0x1f DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x10b1:0x1f DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -3984,10 +3992,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 78 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x10c4:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x10ca:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x10ca:0x1d DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x10d0:0x1d DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4007,10 +4015,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 80 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x10e1:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x10e7:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x10e7:0x23 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x10ed:0x23 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4031,12 +4039,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 82 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x10ff:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1105:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1104:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x110a:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x110a:0x1f DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1110:0x1f DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4058,10 +4066,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 84 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1123:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1129:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1129:0x27 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x112f:0x27 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4081,14 +4089,14 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 86 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1140:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1146:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1145:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x114b:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x114a:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1150:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1150:0x23 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1156:0x23 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4109,12 +4117,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 88 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1168:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x116e:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x116d:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1173:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1173:0x23 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1179:0x23 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4135,12 +4143,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 90 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x118b:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1191:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1190:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1196:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1196:0x23 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x119c:0x23 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4161,12 +4169,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 92 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x11ae:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x11b4:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x11b3:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x11b9:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x11b9:0x2a DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x11bf:0x2a DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4197,19 +4205,19 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 94 // DW_AT_decl_line -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x11dd:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x11e3:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 10 // Abbrev [10] 0x11e3:0x7 DW_TAG_base_type +; CHECK-NEXT:.b8 10 // Abbrev [10] 0x11e9:0x7 DW_TAG_base_type ; CHECK-NEXT:.b8 105 // DW_AT_name ; CHECK-NEXT:.b8 110 ; CHECK-NEXT:.b8 116 ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_encoding ; CHECK-NEXT:.b8 4 // DW_AT_byte_size -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x11ea:0x26 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x11f0:0x26 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4233,14 +4241,14 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 96 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1205:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x120b:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x120a:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 4624 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1210:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 4630 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 12 // Abbrev [12] 0x1210:0x5 DW_TAG_pointer_type -; CHECK-NEXT:.b32 4579 // DW_AT_type -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1215:0x25 DW_TAG_subprogram +; CHECK-NEXT:.b8 12 // Abbrev [12] 0x1216:0x5 DW_TAG_pointer_type +; CHECK-NEXT:.b32 4585 // DW_AT_type +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x121b:0x25 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4263,12 +4271,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 98 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x122f:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1235:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1234:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x123a:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x123a:0x1f DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1240:0x1f DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4288,12 +4296,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 100 // DW_AT_decl_line -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1253:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1259:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1259:0x25 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x125f:0x25 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4319,12 +4327,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 102 // DW_AT_decl_line -; CHECK-NEXT:.b32 4734 // DW_AT_type +; CHECK-NEXT:.b32 4740 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1278:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x127e:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 10 // Abbrev [10] 0x127e:0x8 DW_TAG_base_type +; CHECK-NEXT:.b8 10 // Abbrev [10] 0x1284:0x8 DW_TAG_base_type ; CHECK-NEXT:.b8 98 // DW_AT_name ; CHECK-NEXT:.b8 111 ; CHECK-NEXT:.b8 111 @@ -4332,7 +4340,7 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 2 // DW_AT_encoding ; CHECK-NEXT:.b8 1 // DW_AT_byte_size -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1286:0x2d DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x128c:0x2d DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4361,14 +4369,14 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 106 // DW_AT_decl_line -; CHECK-NEXT:.b32 4734 // DW_AT_type +; CHECK-NEXT:.b32 4740 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x12a8:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x12ae:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x12ad:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x12b3:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x12b3:0x38 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x12b9:0x38 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4408,14 +4416,14 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 105 // DW_AT_decl_line -; CHECK-NEXT:.b32 4734 // DW_AT_type +; CHECK-NEXT:.b32 4740 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x12e0:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x12e6:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x12e5:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x12eb:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x12eb:0x1f DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x12f1:0x1f DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4435,12 +4443,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 108 // DW_AT_decl_line -; CHECK-NEXT:.b32 4734 // DW_AT_type +; CHECK-NEXT:.b32 4740 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1304:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x130a:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x130a:0x27 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1310:0x27 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4463,14 +4471,14 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 112 // DW_AT_decl_line -; CHECK-NEXT:.b32 4734 // DW_AT_type +; CHECK-NEXT:.b32 4740 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1326:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x132c:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x132b:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1331:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1331:0x32 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1337:0x32 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4504,14 +4512,14 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 111 // DW_AT_decl_line -; CHECK-NEXT:.b32 4734 // DW_AT_type +; CHECK-NEXT:.b32 4740 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1358:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x135e:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x135d:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1363:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1363:0x36 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1369:0x36 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4549,14 +4557,14 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 114 // DW_AT_decl_line -; CHECK-NEXT:.b32 4734 // DW_AT_type +; CHECK-NEXT:.b32 4740 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x138e:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1394:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1393:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1399:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1399:0x1f DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x139f:0x1f DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4576,12 +4584,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 116 // DW_AT_decl_line -; CHECK-NEXT:.b32 4734 // DW_AT_type +; CHECK-NEXT:.b32 4740 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x13b2:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x13b8:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x13b8:0x25 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x13be:0x25 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4607,12 +4615,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 118 // DW_AT_decl_line -; CHECK-NEXT:.b32 4734 // DW_AT_type +; CHECK-NEXT:.b32 4740 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x13d7:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x13dd:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x13dd:0x32 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x13e3:0x32 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4646,14 +4654,14 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 120 // DW_AT_decl_line -; CHECK-NEXT:.b32 4734 // DW_AT_type +; CHECK-NEXT:.b32 4740 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1404:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x140a:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1409:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x140f:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x140f:0x1d DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1415:0x1d DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4671,12 +4679,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 121 // DW_AT_decl_line -; CHECK-NEXT:.b32 5164 // DW_AT_type +; CHECK-NEXT:.b32 5170 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1426:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5164 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x142c:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5170 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 10 // Abbrev [10] 0x142c:0xc DW_TAG_base_type +; CHECK-NEXT:.b8 10 // Abbrev [10] 0x1432:0xc DW_TAG_base_type ; CHECK-NEXT:.b8 108 // DW_AT_name ; CHECK-NEXT:.b8 111 ; CHECK-NEXT:.b8 110 @@ -4688,7 +4696,7 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_encoding ; CHECK-NEXT:.b8 8 // DW_AT_byte_size -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1438:0x25 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x143e:0x25 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4711,12 +4719,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 123 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1452:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1458:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1457:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x145d:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x145d:0x21 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1463:0x21 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4740,10 +4748,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 125 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1478:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x147e:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x147e:0x1f DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1484:0x1f DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4763,12 +4771,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 126 // DW_AT_decl_line -; CHECK-NEXT:.b32 3764 // DW_AT_type +; CHECK-NEXT:.b32 3770 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1497:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 3764 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x149d:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 3770 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x149d:0x21 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x14a3:0x21 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4790,12 +4798,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 128 // DW_AT_decl_line -; CHECK-NEXT:.b32 3764 // DW_AT_type +; CHECK-NEXT:.b32 3770 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x14b8:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x14be:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x14be:0x1b DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x14c4:0x1b DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4813,10 +4821,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 138 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x14d3:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x14d9:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x14d9:0x1f DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x14df:0x1f DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4838,10 +4846,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 130 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x14f2:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x14f8:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x14f8:0x1f DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x14fe:0x1f DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4863,10 +4871,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 132 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1511:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1517:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1517:0x1d DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x151d:0x1d DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4886,10 +4894,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 134 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x152e:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1534:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1534:0x1d DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x153a:0x1d DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4909,10 +4917,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 136 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x154b:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1551:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1551:0x1f DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1557:0x1f DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4932,12 +4940,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 140 // DW_AT_decl_line -; CHECK-NEXT:.b32 5164 // DW_AT_type +; CHECK-NEXT:.b32 5170 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x156a:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1570:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1570:0x21 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1576:0x21 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4959,12 +4967,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 142 // DW_AT_decl_line -; CHECK-NEXT:.b32 5164 // DW_AT_type +; CHECK-NEXT:.b32 5170 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x158b:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1591:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1591:0x23 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1597:0x23 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -4988,12 +4996,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 143 // DW_AT_decl_line -; CHECK-NEXT:.b32 3764 // DW_AT_type +; CHECK-NEXT:.b32 3770 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x15ae:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x15b4:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x15b4:0x24 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x15ba:0x24 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -5015,12 +5023,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 145 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x15cd:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x15d3:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x15d2:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x15d8:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2125 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x15d8:0x1d DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x15de:0x1d DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -5038,12 +5046,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 146 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x15ef:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5631 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x15f5:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5637 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 10 // Abbrev [10] 0x15f5:0xa DW_TAG_base_type +; CHECK-NEXT:.b8 10 // Abbrev [10] 0x15fb:0xa DW_TAG_base_type ; CHECK-NEXT:.b8 100 // DW_AT_name ; CHECK-NEXT:.b8 111 ; CHECK-NEXT:.b8 117 @@ -5053,11 +5061,11 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_encoding ; CHECK-NEXT:.b8 8 // DW_AT_byte_size -; CHECK-NEXT:.b8 12 // Abbrev [12] 0x15ff:0x5 DW_TAG_pointer_type -; CHECK-NEXT:.b32 5636 // DW_AT_type -; CHECK-NEXT:.b8 13 // Abbrev [13] 0x1604:0x5 DW_TAG_const_type -; CHECK-NEXT:.b32 5641 // DW_AT_type -; CHECK-NEXT:.b8 10 // Abbrev [10] 0x1609:0x8 DW_TAG_base_type +; CHECK-NEXT:.b8 12 // Abbrev [12] 0x1605:0x5 DW_TAG_pointer_type +; CHECK-NEXT:.b32 5642 // DW_AT_type +; CHECK-NEXT:.b8 13 // Abbrev [13] 0x160a:0x5 DW_TAG_const_type +; CHECK-NEXT:.b32 5647 // DW_AT_type +; CHECK-NEXT:.b8 10 // Abbrev [10] 0x160f:0x8 DW_TAG_base_type ; CHECK-NEXT:.b8 99 // DW_AT_name ; CHECK-NEXT:.b8 104 ; CHECK-NEXT:.b8 97 @@ -5065,7 +5073,7 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 8 // DW_AT_encoding ; CHECK-NEXT:.b8 1 // DW_AT_byte_size -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1611:0x1f DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1617:0x1f DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -5087,10 +5095,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 147 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x162a:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5631 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1630:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5637 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1630:0x27 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1636:0x27 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -5120,10 +5128,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 149 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1651:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1657:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1657:0x2d DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x165d:0x2d DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -5154,12 +5162,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 151 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1679:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x167f:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x167e:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1684:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1684:0x21 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x168a:0x21 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -5178,12 +5186,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 155 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x169a:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x16a0:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x169f:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x16a5:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x16a5:0x2d DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x16ab:0x2d DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -5214,12 +5222,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 157 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x16c7:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x16cd:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x16cc:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x16d2:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x16d2:0x2e DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x16d8:0x2e DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -5246,14 +5254,14 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 159 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x16f0:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x16f6:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x16f5:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x16fb:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x16fa:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 4624 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1700:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 4630 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1700:0x1d DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1706:0x1d DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -5273,10 +5281,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 161 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1717:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x171d:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x171d:0x1f DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1723:0x1f DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -5298,10 +5306,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 163 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1736:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x173c:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x173c:0x29 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1742:0x29 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -5328,12 +5336,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 165 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x175a:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1760:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x175f:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5164 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1765:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5170 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1765:0x27 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x176b:0x27 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -5358,12 +5366,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 167 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1781:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1787:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1786:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x178c:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x178c:0x23 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1792:0x23 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -5387,12 +5395,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_decl_file ; CHECK-NEXT:.b8 169 // DW_AT_decl_line -; CHECK-NEXT:.b32 4734 // DW_AT_type +; CHECK-NEXT:.b32 4740 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x17a9:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x17af:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x17af:0x1b DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x17b5:0x1b DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -5410,10 +5418,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 171 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x17c4:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x17ca:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x17ca:0x1d DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x17d0:0x1d DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -5433,10 +5441,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 173 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x17e1:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x17e7:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x17e7:0x1d DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x17ed:0x1d DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -5456,10 +5464,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 175 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x17fe:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1804:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1804:0x1b DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x180a:0x1b DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -5477,10 +5485,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 177 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1819:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x181f:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x181f:0x1d DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1825:0x1d DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -5500,10 +5508,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 179 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1836:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x183c:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x183c:0x21 DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1842:0x21 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -5527,10 +5535,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 181 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1857:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x185d:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 31 // Abbrev [31] 0x185d:0x1f DW_TAG_subprogram +; CHECK-NEXT:.b8 31 // Abbrev [31] 0x1863:0x1f DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -5552,10 +5560,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 183 // DW_AT_decl_line ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1876:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x187c:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x187c:0x14 DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1882:0x14 DW_TAG_subprogram ; CHECK-NEXT:.b8 97 // DW_AT_name ; CHECK-NEXT:.b8 99 ; CHECK-NEXT:.b8 111 @@ -5563,13 +5571,13 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 54 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x188a:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1890:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1890:0x14 DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1896:0x14 DW_TAG_subprogram ; CHECK-NEXT:.b8 97 // DW_AT_name ; CHECK-NEXT:.b8 115 ; CHECK-NEXT:.b8 105 @@ -5577,13 +5585,13 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 56 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x189e:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x18a4:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x18a4:0x14 DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x18aa:0x14 DW_TAG_subprogram ; CHECK-NEXT:.b8 97 // DW_AT_name ; CHECK-NEXT:.b8 116 ; CHECK-NEXT:.b8 97 @@ -5591,13 +5599,13 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 58 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x18b2:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x18b8:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x18b8:0x1a DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x18be:0x1a DW_TAG_subprogram ; CHECK-NEXT:.b8 97 // DW_AT_name ; CHECK-NEXT:.b8 116 ; CHECK-NEXT:.b8 97 @@ -5606,15 +5614,15 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 60 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x18c7:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x18cc:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x18cd:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x18d2:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x18d2:0x14 DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x18d8:0x14 DW_TAG_subprogram ; CHECK-NEXT:.b8 99 // DW_AT_name ; CHECK-NEXT:.b8 101 ; CHECK-NEXT:.b8 105 @@ -5622,26 +5630,26 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 178 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x18e0:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x18e6:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x18e6:0x13 DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x18ec:0x13 DW_TAG_subprogram ; CHECK-NEXT:.b8 99 // DW_AT_name ; CHECK-NEXT:.b8 111 ; CHECK-NEXT:.b8 115 ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 63 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x18f3:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x18f9:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x18f9:0x14 DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x18ff:0x14 DW_TAG_subprogram ; CHECK-NEXT:.b8 99 // DW_AT_name ; CHECK-NEXT:.b8 111 ; CHECK-NEXT:.b8 115 @@ -5649,26 +5657,26 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 72 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1907:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x190d:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x190d:0x13 DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1913:0x13 DW_TAG_subprogram ; CHECK-NEXT:.b8 101 // DW_AT_name ; CHECK-NEXT:.b8 120 ; CHECK-NEXT:.b8 112 ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 100 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x191a:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1920:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1920:0x14 DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1926:0x14 DW_TAG_subprogram ; CHECK-NEXT:.b8 102 // DW_AT_name ; CHECK-NEXT:.b8 97 ; CHECK-NEXT:.b8 98 @@ -5676,13 +5684,13 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 181 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x192e:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1934:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1934:0x15 DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x193a:0x15 DW_TAG_subprogram ; CHECK-NEXT:.b8 102 // DW_AT_name ; CHECK-NEXT:.b8 108 ; CHECK-NEXT:.b8 111 @@ -5691,13 +5699,13 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 184 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1943:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1949:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1949:0x19 DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x194f:0x19 DW_TAG_subprogram ; CHECK-NEXT:.b8 102 // DW_AT_name ; CHECK-NEXT:.b8 109 ; CHECK-NEXT:.b8 111 @@ -5705,15 +5713,15 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 187 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1957:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x195c:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x195d:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1962:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1962:0x1a DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1968:0x1a DW_TAG_subprogram ; CHECK-NEXT:.b8 102 // DW_AT_name ; CHECK-NEXT:.b8 114 ; CHECK-NEXT:.b8 101 @@ -5722,15 +5730,15 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 103 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1971:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1976:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 4624 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1977:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x197c:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 4630 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x197c:0x1a DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1982:0x1a DW_TAG_subprogram ; CHECK-NEXT:.b8 108 // DW_AT_name ; CHECK-NEXT:.b8 100 ; CHECK-NEXT:.b8 101 @@ -5739,28 +5747,28 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 106 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x198b:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1990:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1991:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1996:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1996:0x13 DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x199c:0x13 DW_TAG_subprogram ; CHECK-NEXT:.b8 108 // DW_AT_name ; CHECK-NEXT:.b8 111 ; CHECK-NEXT:.b8 103 ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 109 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x19a3:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x19a9:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x19a9:0x15 DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x19af:0x15 DW_TAG_subprogram ; CHECK-NEXT:.b8 108 // DW_AT_name ; CHECK-NEXT:.b8 111 ; CHECK-NEXT:.b8 103 @@ -5769,13 +5777,13 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 112 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x19b8:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x19be:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x19be:0x19 DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x19c4:0x19 DW_TAG_subprogram ; CHECK-NEXT:.b8 109 // DW_AT_name ; CHECK-NEXT:.b8 111 ; CHECK-NEXT:.b8 100 @@ -5783,45 +5791,45 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 115 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x19cc:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x19d1:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 6615 // DW_AT_type -; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 12 // Abbrev [12] 0x19d7:0x5 DW_TAG_pointer_type -; CHECK-NEXT:.b32 5621 // DW_AT_type -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x19dc:0x18 DW_TAG_subprogram +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x19d2:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x19d7:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 6621 // DW_AT_type +; CHECK-NEXT:.b8 0 // End Of Children Mark +; CHECK-NEXT:.b8 12 // Abbrev [12] 0x19dd:0x5 DW_TAG_pointer_type +; CHECK-NEXT:.b32 5627 // DW_AT_type +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x19e2:0x18 DW_TAG_subprogram ; CHECK-NEXT:.b8 112 // DW_AT_name ; CHECK-NEXT:.b8 111 ; CHECK-NEXT:.b8 119 ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 153 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x19e9:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x19ee:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x19ef:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x19f4:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x19f4:0x13 DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x19fa:0x13 DW_TAG_subprogram ; CHECK-NEXT:.b8 115 // DW_AT_name ; CHECK-NEXT:.b8 105 ; CHECK-NEXT:.b8 110 ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 65 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1a01:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1a07:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1a07:0x14 DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1a0d:0x14 DW_TAG_subprogram ; CHECK-NEXT:.b8 115 // DW_AT_name ; CHECK-NEXT:.b8 105 ; CHECK-NEXT:.b8 110 @@ -5829,13 +5837,13 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 74 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1a15:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1a1b:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1a1b:0x14 DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1a21:0x14 DW_TAG_subprogram ; CHECK-NEXT:.b8 115 // DW_AT_name ; CHECK-NEXT:.b8 113 ; CHECK-NEXT:.b8 114 @@ -5843,26 +5851,26 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 156 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1a29:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1a2f:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1a2f:0x13 DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1a35:0x13 DW_TAG_subprogram ; CHECK-NEXT:.b8 116 // DW_AT_name ; CHECK-NEXT:.b8 97 ; CHECK-NEXT:.b8 110 ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 67 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1a3c:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1a42:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1a42:0x14 DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1a48:0x14 DW_TAG_subprogram ; CHECK-NEXT:.b8 116 // DW_AT_name ; CHECK-NEXT:.b8 97 ; CHECK-NEXT:.b8 110 @@ -5870,14 +5878,14 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_decl_file ; CHECK-NEXT:.b8 76 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1a50:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1a56:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 33 // Abbrev [33] 0x1a56:0xd DW_TAG_typedef -; CHECK-NEXT:.b32 6755 // DW_AT_type +; CHECK-NEXT:.b8 33 // Abbrev [33] 0x1a5c:0xd DW_TAG_typedef +; CHECK-NEXT:.b32 6761 // DW_AT_type ; CHECK-NEXT:.b8 100 // DW_AT_name ; CHECK-NEXT:.b8 105 ; CHECK-NEXT:.b8 118 @@ -5886,10 +5894,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 101 // DW_AT_decl_line -; CHECK-NEXT:.b8 34 // Abbrev [34] 0x1a63:0x2 DW_TAG_structure_type +; CHECK-NEXT:.b8 34 // Abbrev [34] 0x1a69:0x2 DW_TAG_structure_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 33 // Abbrev [33] 0x1a65:0xe DW_TAG_typedef -; CHECK-NEXT:.b32 6771 // DW_AT_type +; CHECK-NEXT:.b8 33 // Abbrev [33] 0x1a6b:0xe DW_TAG_typedef +; CHECK-NEXT:.b32 6777 // DW_AT_type ; CHECK-NEXT:.b8 108 // DW_AT_name ; CHECK-NEXT:.b8 100 ; CHECK-NEXT:.b8 105 @@ -5899,35 +5907,35 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 109 // DW_AT_decl_line -; CHECK-NEXT:.b8 35 // Abbrev [35] 0x1a73:0x22 DW_TAG_structure_type +; CHECK-NEXT:.b8 35 // Abbrev [35] 0x1a79:0x22 DW_TAG_structure_type ; CHECK-NEXT:.b8 16 // DW_AT_byte_size ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 105 // DW_AT_decl_line -; CHECK-NEXT:.b8 11 // Abbrev [11] 0x1a77:0xf DW_TAG_member +; CHECK-NEXT:.b8 11 // Abbrev [11] 0x1a7d:0xf DW_TAG_member ; CHECK-NEXT:.b8 113 // DW_AT_name ; CHECK-NEXT:.b8 117 ; CHECK-NEXT:.b8 111 ; CHECK-NEXT:.b8 116 ; CHECK-NEXT:.b8 0 -; CHECK-NEXT:.b32 5164 // DW_AT_type +; CHECK-NEXT:.b32 5170 // DW_AT_type ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 107 // DW_AT_decl_line ; CHECK-NEXT:.b8 2 // DW_AT_data_member_location ; CHECK-NEXT:.b8 35 ; CHECK-NEXT:.b8 0 -; CHECK-NEXT:.b8 11 // Abbrev [11] 0x1a86:0xe DW_TAG_member +; CHECK-NEXT:.b8 11 // Abbrev [11] 0x1a8c:0xe DW_TAG_member ; CHECK-NEXT:.b8 114 // DW_AT_name ; CHECK-NEXT:.b8 101 ; CHECK-NEXT:.b8 109 ; CHECK-NEXT:.b8 0 -; CHECK-NEXT:.b32 5164 // DW_AT_type +; CHECK-NEXT:.b32 5170 // DW_AT_type ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 108 // DW_AT_decl_line ; CHECK-NEXT:.b8 2 // DW_AT_data_member_location ; CHECK-NEXT:.b8 35 ; CHECK-NEXT:.b8 8 ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 36 // Abbrev [36] 0x1a95:0xd DW_TAG_subprogram +; CHECK-NEXT:.b8 36 // Abbrev [36] 0x1a9b:0xd DW_TAG_subprogram ; CHECK-NEXT:.b8 97 // DW_AT_name ; CHECK-NEXT:.b8 98 ; CHECK-NEXT:.b8 111 @@ -5940,7 +5948,7 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external ; CHECK-NEXT:.b8 1 // DW_AT_noreturn -; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1aa2:0x14 DW_TAG_subprogram +; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1aa8:0x14 DW_TAG_subprogram ; CHECK-NEXT:.b8 97 // DW_AT_name ; CHECK-NEXT:.b8 98 ; CHECK-NEXT:.b8 115 @@ -5948,13 +5956,13 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 7 // DW_AT_decl_line ; CHECK-NEXT:.b8 3 -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1ab0:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1ab6:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1ab6:0x17 DW_TAG_subprogram +; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1abc:0x17 DW_TAG_subprogram ; CHECK-NEXT:.b8 97 // DW_AT_name ; CHECK-NEXT:.b8 116 ; CHECK-NEXT:.b8 101 @@ -5965,16 +5973,16 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 7 // DW_AT_decl_line ; CHECK-NEXT:.b8 2 -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1ac7:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 6861 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1acd:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 6867 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 12 // Abbrev [12] 0x1acd:0x5 DW_TAG_pointer_type -; CHECK-NEXT:.b32 6866 // DW_AT_type -; CHECK-NEXT:.b8 38 // Abbrev [38] 0x1ad2:0x1 DW_TAG_subroutine_type -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1ad3:0x14 DW_TAG_subprogram +; CHECK-NEXT:.b8 12 // Abbrev [12] 0x1ad3:0x5 DW_TAG_pointer_type +; CHECK-NEXT:.b32 6872 // DW_AT_type +; CHECK-NEXT:.b8 38 // Abbrev [38] 0x1ad8:0x1 DW_TAG_subroutine_type +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1ad9:0x14 DW_TAG_subprogram ; CHECK-NEXT:.b8 97 // DW_AT_name ; CHECK-NEXT:.b8 116 ; CHECK-NEXT:.b8 111 @@ -5982,13 +5990,13 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 9 // DW_AT_decl_file ; CHECK-NEXT:.b8 26 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1ae1:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5631 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1ae7:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5637 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1ae7:0x15 DW_TAG_subprogram +; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1aed:0x15 DW_TAG_subprogram ; CHECK-NEXT:.b8 97 // DW_AT_name ; CHECK-NEXT:.b8 116 ; CHECK-NEXT:.b8 111 @@ -5997,13 +6005,13 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 22 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1af6:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5631 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1afc:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5637 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1afc:0x15 DW_TAG_subprogram +; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1b02:0x15 DW_TAG_subprogram ; CHECK-NEXT:.b8 97 // DW_AT_name ; CHECK-NEXT:.b8 116 ; CHECK-NEXT:.b8 111 @@ -6012,13 +6020,13 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 27 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 5164 // DW_AT_type +; CHECK-NEXT:.b32 5170 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1b0b:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5631 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1b11:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5637 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1b11:0x2b DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1b17:0x2b DW_TAG_subprogram ; CHECK-NEXT:.b8 98 // DW_AT_name ; CHECK-NEXT:.b8 115 ; CHECK-NEXT:.b8 101 @@ -6029,26 +6037,26 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 10 // DW_AT_decl_file ; CHECK-NEXT:.b8 20 // DW_AT_decl_line -; CHECK-NEXT:.b32 6972 // DW_AT_type +; CHECK-NEXT:.b32 6978 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1b22:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 6973 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1b27:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 6973 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1b2c:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1b28:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 6979 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1b31:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1b2d:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 6979 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1b36:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 7014 // DW_AT_type -; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 39 // Abbrev [39] 0x1b3c:0x1 DW_TAG_pointer_type -; CHECK-NEXT:.b8 12 // Abbrev [12] 0x1b3d:0x5 DW_TAG_pointer_type -; CHECK-NEXT:.b32 6978 // DW_AT_type -; CHECK-NEXT:.b8 40 // Abbrev [40] 0x1b42:0x1 DW_TAG_const_type -; CHECK-NEXT:.b8 33 // Abbrev [33] 0x1b43:0xe DW_TAG_typedef -; CHECK-NEXT:.b32 6993 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1b32:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 6985 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1b37:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 6985 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1b3c:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 7020 // DW_AT_type +; CHECK-NEXT:.b8 0 // End Of Children Mark +; CHECK-NEXT:.b8 39 // Abbrev [39] 0x1b42:0x1 DW_TAG_pointer_type +; CHECK-NEXT:.b8 12 // Abbrev [12] 0x1b43:0x5 DW_TAG_pointer_type +; CHECK-NEXT:.b32 6984 // DW_AT_type +; CHECK-NEXT:.b8 40 // Abbrev [40] 0x1b48:0x1 DW_TAG_const_type +; CHECK-NEXT:.b8 33 // Abbrev [33] 0x1b49:0xe DW_TAG_typedef +; CHECK-NEXT:.b32 6999 // DW_AT_type ; CHECK-NEXT:.b8 115 // DW_AT_name ; CHECK-NEXT:.b8 105 ; CHECK-NEXT:.b8 122 @@ -6058,7 +6066,7 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 11 // DW_AT_decl_file ; CHECK-NEXT:.b8 62 // DW_AT_decl_line -; CHECK-NEXT:.b8 10 // Abbrev [10] 0x1b51:0x15 DW_TAG_base_type +; CHECK-NEXT:.b8 10 // Abbrev [10] 0x1b57:0x15 DW_TAG_base_type ; CHECK-NEXT:.b8 108 // DW_AT_name ; CHECK-NEXT:.b8 111 ; CHECK-NEXT:.b8 110 @@ -6079,8 +6087,8 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 7 // DW_AT_encoding ; CHECK-NEXT:.b8 8 // DW_AT_byte_size -; CHECK-NEXT:.b8 20 // Abbrev [20] 0x1b66:0x16 DW_TAG_typedef -; CHECK-NEXT:.b32 7036 // DW_AT_type +; CHECK-NEXT:.b8 20 // Abbrev [20] 0x1b6c:0x16 DW_TAG_typedef +; CHECK-NEXT:.b32 7042 // DW_AT_type ; CHECK-NEXT:.b8 95 // DW_AT_name ; CHECK-NEXT:.b8 95 ; CHECK-NEXT:.b8 99 @@ -6098,16 +6106,16 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 230 // DW_AT_decl_line ; CHECK-NEXT:.b8 2 -; CHECK-NEXT:.b8 12 // Abbrev [12] 0x1b7c:0x5 DW_TAG_pointer_type -; CHECK-NEXT:.b32 7041 // DW_AT_type -; CHECK-NEXT:.b8 41 // Abbrev [41] 0x1b81:0x10 DW_TAG_subroutine_type -; CHECK-NEXT:.b32 4579 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1b86:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 6973 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1b8b:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 6973 // DW_AT_type -; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1b91:0x1c DW_TAG_subprogram +; CHECK-NEXT:.b8 12 // Abbrev [12] 0x1b82:0x5 DW_TAG_pointer_type +; CHECK-NEXT:.b32 7047 // DW_AT_type +; CHECK-NEXT:.b8 41 // Abbrev [41] 0x1b87:0x10 DW_TAG_subroutine_type +; CHECK-NEXT:.b32 4585 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1b8c:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 6979 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1b91:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 6979 // DW_AT_type +; CHECK-NEXT:.b8 0 // End Of Children Mark +; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1b97:0x1c DW_TAG_subprogram ; CHECK-NEXT:.b8 99 // DW_AT_name ; CHECK-NEXT:.b8 97 ; CHECK-NEXT:.b8 108 @@ -6118,15 +6126,15 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 212 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6972 // DW_AT_type +; CHECK-NEXT:.b32 6978 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1ba2:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 6979 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1ba7:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 6979 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1ba8:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 6985 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1bad:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 6985 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1bad:0x19 DW_TAG_subprogram +; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1bb3:0x19 DW_TAG_subprogram ; CHECK-NEXT:.b8 100 // DW_AT_name ; CHECK-NEXT:.b8 105 ; CHECK-NEXT:.b8 118 @@ -6134,15 +6142,15 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 21 // DW_AT_decl_line ; CHECK-NEXT:.b8 3 -; CHECK-NEXT:.b32 6742 // DW_AT_type +; CHECK-NEXT:.b32 6748 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1bbb:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 4579 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1bc0:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1bc1:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 4585 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1bc6:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 42 // Abbrev [42] 0x1bc6:0x12 DW_TAG_subprogram +; CHECK-NEXT:.b8 42 // Abbrev [42] 0x1bcc:0x12 DW_TAG_subprogram ; CHECK-NEXT:.b8 101 // DW_AT_name ; CHECK-NEXT:.b8 120 ; CHECK-NEXT:.b8 105 @@ -6154,10 +6162,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external ; CHECK-NEXT:.b8 1 // DW_AT_noreturn -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1bd2:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1bd8:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 18 // Abbrev [18] 0x1bd8:0x11 DW_TAG_subprogram +; CHECK-NEXT:.b8 18 // Abbrev [18] 0x1bde:0x11 DW_TAG_subprogram ; CHECK-NEXT:.b8 102 // DW_AT_name ; CHECK-NEXT:.b8 114 ; CHECK-NEXT:.b8 101 @@ -6168,10 +6176,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 1 ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1be3:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 6972 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1be9:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 6978 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1be9:0x17 DW_TAG_subprogram +; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1bef:0x17 DW_TAG_subprogram ; CHECK-NEXT:.b8 103 // DW_AT_name ; CHECK-NEXT:.b8 101 ; CHECK-NEXT:.b8 116 @@ -6182,15 +6190,15 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 52 // DW_AT_decl_line ; CHECK-NEXT:.b8 2 -; CHECK-NEXT:.b32 7168 // DW_AT_type +; CHECK-NEXT:.b32 7174 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1bfa:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5631 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1c00:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5637 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 12 // Abbrev [12] 0x1c00:0x5 DW_TAG_pointer_type -; CHECK-NEXT:.b32 5641 // DW_AT_type -; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1c05:0x15 DW_TAG_subprogram +; CHECK-NEXT:.b8 12 // Abbrev [12] 0x1c06:0x5 DW_TAG_pointer_type +; CHECK-NEXT:.b32 5647 // DW_AT_type +; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1c0b:0x15 DW_TAG_subprogram ; CHECK-NEXT:.b8 108 // DW_AT_name ; CHECK-NEXT:.b8 97 ; CHECK-NEXT:.b8 98 @@ -6199,13 +6207,13 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 8 // DW_AT_decl_line ; CHECK-NEXT:.b8 3 -; CHECK-NEXT:.b32 5164 // DW_AT_type +; CHECK-NEXT:.b32 5170 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1c14:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5164 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1c1a:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5170 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1c1a:0x1a DW_TAG_subprogram +; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1c20:0x1a DW_TAG_subprogram ; CHECK-NEXT:.b8 108 // DW_AT_name ; CHECK-NEXT:.b8 100 ; CHECK-NEXT:.b8 105 @@ -6214,15 +6222,15 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 23 // DW_AT_decl_line ; CHECK-NEXT:.b8 3 -; CHECK-NEXT:.b32 6757 // DW_AT_type +; CHECK-NEXT:.b32 6763 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1c29:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5164 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1c2e:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5164 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1c2f:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5170 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1c34:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5170 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1c34:0x17 DW_TAG_subprogram +; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1c3a:0x17 DW_TAG_subprogram ; CHECK-NEXT:.b8 109 // DW_AT_name ; CHECK-NEXT:.b8 97 ; CHECK-NEXT:.b8 108 @@ -6233,13 +6241,13 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 210 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6972 // DW_AT_type +; CHECK-NEXT:.b32 6978 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1c45:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 6979 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1c4b:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 6985 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1c4b:0x1b DW_TAG_subprogram +; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1c51:0x1b DW_TAG_subprogram ; CHECK-NEXT:.b8 109 // DW_AT_name ; CHECK-NEXT:.b8 98 ; CHECK-NEXT:.b8 108 @@ -6249,15 +6257,15 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 95 // DW_AT_decl_line ; CHECK-NEXT:.b8 3 -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1c5b:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5631 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1c60:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 6979 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1c61:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5637 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1c66:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 6985 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1c66:0x23 DW_TAG_subprogram +; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1c6c:0x23 DW_TAG_subprogram ; CHECK-NEXT:.b8 109 // DW_AT_name ; CHECK-NEXT:.b8 98 ; CHECK-NEXT:.b8 115 @@ -6270,19 +6278,19 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 106 // DW_AT_decl_line ; CHECK-NEXT:.b8 3 -; CHECK-NEXT:.b32 6979 // DW_AT_type +; CHECK-NEXT:.b32 6985 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1c79:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 7305 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1c7e:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5631 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1c83:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 6979 // DW_AT_type -; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 12 // Abbrev [12] 0x1c89:0x5 DW_TAG_pointer_type -; CHECK-NEXT:.b32 7310 // DW_AT_type -; CHECK-NEXT:.b8 10 // Abbrev [10] 0x1c8e:0xb DW_TAG_base_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1c7f:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 7311 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1c84:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5637 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1c89:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 6985 // DW_AT_type +; CHECK-NEXT:.b8 0 // End Of Children Mark +; CHECK-NEXT:.b8 12 // Abbrev [12] 0x1c8f:0x5 DW_TAG_pointer_type +; CHECK-NEXT:.b32 7316 // DW_AT_type +; CHECK-NEXT:.b8 10 // Abbrev [10] 0x1c94:0xb DW_TAG_base_type ; CHECK-NEXT:.b8 119 // DW_AT_name ; CHECK-NEXT:.b8 99 ; CHECK-NEXT:.b8 104 @@ -6293,7 +6301,7 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 5 // DW_AT_encoding ; CHECK-NEXT:.b8 4 // DW_AT_byte_size -; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1c99:0x21 DW_TAG_subprogram +; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1c9f:0x21 DW_TAG_subprogram ; CHECK-NEXT:.b8 109 // DW_AT_name ; CHECK-NEXT:.b8 98 ; CHECK-NEXT:.b8 116 @@ -6304,17 +6312,17 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 98 // DW_AT_decl_line ; CHECK-NEXT:.b8 3 -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1caa:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 7305 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1caf:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5631 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1cb4:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 6979 // DW_AT_type -; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 18 // Abbrev [18] 0x1cba:0x21 DW_TAG_subprogram +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1cb0:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 7311 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1cb5:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5637 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1cba:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 6985 // DW_AT_type +; CHECK-NEXT:.b8 0 // End Of Children Mark +; CHECK-NEXT:.b8 18 // Abbrev [18] 0x1cc0:0x21 DW_TAG_subprogram ; CHECK-NEXT:.b8 113 // DW_AT_name ; CHECK-NEXT:.b8 115 ; CHECK-NEXT:.b8 111 @@ -6326,16 +6334,16 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 2 ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1cc6:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 6972 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1ccb:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 6979 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1cd0:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 6979 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1cd5:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 7014 // DW_AT_type -; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 43 // Abbrev [43] 0x1cdb:0xf DW_TAG_subprogram +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1ccc:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 6978 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1cd1:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 6985 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1cd6:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 6985 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1cdb:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 7020 // DW_AT_type +; CHECK-NEXT:.b8 0 // End Of Children Mark +; CHECK-NEXT:.b8 43 // Abbrev [43] 0x1ce1:0xf DW_TAG_subprogram ; CHECK-NEXT:.b8 114 // DW_AT_name ; CHECK-NEXT:.b8 97 ; CHECK-NEXT:.b8 110 @@ -6344,10 +6352,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 118 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1cea:0x1d DW_TAG_subprogram +; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1cf0:0x1d DW_TAG_subprogram ; CHECK-NEXT:.b8 114 // DW_AT_name ; CHECK-NEXT:.b8 101 ; CHECK-NEXT:.b8 97 @@ -6359,15 +6367,15 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 224 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 6972 // DW_AT_type +; CHECK-NEXT:.b32 6978 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1cfc:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 6972 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d01:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 6979 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d02:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 6978 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d07:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 6985 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 18 // Abbrev [18] 0x1d07:0x12 DW_TAG_subprogram +; CHECK-NEXT:.b8 18 // Abbrev [18] 0x1d0d:0x12 DW_TAG_subprogram ; CHECK-NEXT:.b8 115 // DW_AT_name ; CHECK-NEXT:.b8 114 ; CHECK-NEXT:.b8 97 @@ -6379,10 +6387,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 1 ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d13:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d19:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 619 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1d19:0x1b DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1d1f:0x1b DW_TAG_subprogram ; CHECK-NEXT:.b8 115 // DW_AT_name ; CHECK-NEXT:.b8 116 ; CHECK-NEXT:.b8 114 @@ -6392,17 +6400,17 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 164 // DW_AT_decl_line -; CHECK-NEXT:.b32 5621 // DW_AT_type +; CHECK-NEXT:.b32 5627 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d29:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5631 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d2e:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 7476 // DW_AT_type -; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 12 // Abbrev [12] 0x1d34:0x5 DW_TAG_pointer_type -; CHECK-NEXT:.b32 7168 // DW_AT_type -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1d39:0x20 DW_TAG_subprogram +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d2f:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5637 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d34:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 7482 // DW_AT_type +; CHECK-NEXT:.b8 0 // End Of Children Mark +; CHECK-NEXT:.b8 12 // Abbrev [12] 0x1d3a:0x5 DW_TAG_pointer_type +; CHECK-NEXT:.b32 7174 // DW_AT_type +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1d3f:0x20 DW_TAG_subprogram ; CHECK-NEXT:.b8 115 // DW_AT_name ; CHECK-NEXT:.b8 116 ; CHECK-NEXT:.b8 114 @@ -6412,17 +6420,17 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 183 // DW_AT_decl_line -; CHECK-NEXT:.b32 5164 // DW_AT_type +; CHECK-NEXT:.b32 5170 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d49:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5631 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d4e:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 7476 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d53:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 4579 // DW_AT_type -; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1d59:0x21 DW_TAG_subprogram +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d4f:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5637 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d54:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 7482 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d59:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 4585 // DW_AT_type +; CHECK-NEXT:.b8 0 // End Of Children Mark +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1d5f:0x21 DW_TAG_subprogram ; CHECK-NEXT:.b8 115 // DW_AT_name ; CHECK-NEXT:.b8 116 ; CHECK-NEXT:.b8 114 @@ -6433,17 +6441,17 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 187 // DW_AT_decl_line -; CHECK-NEXT:.b32 6993 // DW_AT_type +; CHECK-NEXT:.b32 6999 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d6a:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5631 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d6f:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 7476 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d74:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 4579 // DW_AT_type -; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1d7a:0x17 DW_TAG_subprogram +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d70:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5637 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d75:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 7482 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d7a:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 4585 // DW_AT_type +; CHECK-NEXT:.b8 0 // End Of Children Mark +; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1d80:0x17 DW_TAG_subprogram ; CHECK-NEXT:.b8 115 // DW_AT_name ; CHECK-NEXT:.b8 121 ; CHECK-NEXT:.b8 115 @@ -6454,13 +6462,13 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 205 // DW_AT_decl_line ; CHECK-NEXT:.b8 2 -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d8b:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5631 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1d91:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5637 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1d91:0x23 DW_TAG_subprogram +; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1d97:0x23 DW_TAG_subprogram ; CHECK-NEXT:.b8 119 // DW_AT_name ; CHECK-NEXT:.b8 99 ; CHECK-NEXT:.b8 115 @@ -6473,21 +6481,21 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 109 // DW_AT_decl_line ; CHECK-NEXT:.b8 3 -; CHECK-NEXT:.b32 6979 // DW_AT_type +; CHECK-NEXT:.b32 6985 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1da4:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 7168 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1da9:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 7604 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1dae:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 6979 // DW_AT_type -; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 12 // Abbrev [12] 0x1db4:0x5 DW_TAG_pointer_type -; CHECK-NEXT:.b32 7609 // DW_AT_type -; CHECK-NEXT:.b8 13 // Abbrev [13] 0x1db9:0x5 DW_TAG_const_type -; CHECK-NEXT:.b32 7310 // DW_AT_type -; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1dbe:0x1c DW_TAG_subprogram +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1daa:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 7174 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1daf:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 7610 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1db4:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 6985 // DW_AT_type +; CHECK-NEXT:.b8 0 // End Of Children Mark +; CHECK-NEXT:.b8 12 // Abbrev [12] 0x1dba:0x5 DW_TAG_pointer_type +; CHECK-NEXT:.b32 7615 // DW_AT_type +; CHECK-NEXT:.b8 13 // Abbrev [13] 0x1dbf:0x5 DW_TAG_const_type +; CHECK-NEXT:.b32 7316 // DW_AT_type +; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1dc4:0x1c DW_TAG_subprogram ; CHECK-NEXT:.b8 119 // DW_AT_name ; CHECK-NEXT:.b8 99 ; CHECK-NEXT:.b8 116 @@ -6498,15 +6506,15 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 102 // DW_AT_decl_line ; CHECK-NEXT:.b8 3 -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1dcf:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 7168 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1dd4:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 7310 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1dd5:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 7174 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1dda:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 7316 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 28 // Abbrev [28] 0x1dda:0x78 DW_TAG_namespace +; CHECK-NEXT:.b8 28 // Abbrev [28] 0x1de0:0x78 DW_TAG_namespace ; CHECK-NEXT:.b8 95 // DW_AT_name ; CHECK-NEXT:.b8 95 ; CHECK-NEXT:.b8 103 @@ -6517,43 +6525,43 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 120 ; CHECK-NEXT:.b8 120 ; CHECK-NEXT:.b8 0 -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x1de5:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x1deb:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 201 // DW_AT_decl_line -; CHECK-NEXT:.b32 7762 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x1dec:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7768 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x1df2:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 207 // DW_AT_decl_line -; CHECK-NEXT:.b32 7811 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x1df3:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7817 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x1df9:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 211 // DW_AT_decl_line -; CHECK-NEXT:.b32 7830 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x1dfa:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7836 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x1e00:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 217 // DW_AT_decl_line -; CHECK-NEXT:.b32 7852 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x1e01:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7858 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x1e07:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 228 // DW_AT_decl_line -; CHECK-NEXT:.b32 7879 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x1e08:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7885 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x1e0e:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 229 // DW_AT_decl_line -; CHECK-NEXT:.b32 7901 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x1e0f:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7907 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x1e15:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 230 // DW_AT_decl_line -; CHECK-NEXT:.b32 7934 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x1e16:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 7940 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x1e1c:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 232 // DW_AT_decl_line -; CHECK-NEXT:.b32 7994 // DW_AT_import -; CHECK-NEXT:.b8 29 // Abbrev [29] 0x1e1d:0x7 DW_TAG_imported_declaration +; CHECK-NEXT:.b32 8000 // DW_AT_import +; CHECK-NEXT:.b8 29 // Abbrev [29] 0x1e23:0x7 DW_TAG_imported_declaration ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 233 // DW_AT_decl_line -; CHECK-NEXT:.b32 8021 // DW_AT_import -; CHECK-NEXT:.b8 4 // Abbrev [4] 0x1e24:0x2d DW_TAG_subprogram +; CHECK-NEXT:.b32 8027 // DW_AT_import +; CHECK-NEXT:.b8 4 // Abbrev [4] 0x1e2a:0x2d DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 78 @@ -6581,17 +6589,17 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 8 // DW_AT_decl_file ; CHECK-NEXT:.b8 214 // DW_AT_decl_line -; CHECK-NEXT:.b32 7762 // DW_AT_type +; CHECK-NEXT:.b32 7768 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1e46:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 3764 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1e4b:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 3764 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1e4c:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 3770 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1e51:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 3770 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 33 // Abbrev [33] 0x1e52:0xf DW_TAG_typedef -; CHECK-NEXT:.b32 7777 // DW_AT_type +; CHECK-NEXT:.b8 33 // Abbrev [33] 0x1e58:0xf DW_TAG_typedef +; CHECK-NEXT:.b32 7783 // DW_AT_type ; CHECK-NEXT:.b8 108 // DW_AT_name ; CHECK-NEXT:.b8 108 ; CHECK-NEXT:.b8 100 @@ -6602,35 +6610,35 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 121 // DW_AT_decl_line -; CHECK-NEXT:.b8 35 // Abbrev [35] 0x1e61:0x22 DW_TAG_structure_type +; CHECK-NEXT:.b8 35 // Abbrev [35] 0x1e67:0x22 DW_TAG_structure_type ; CHECK-NEXT:.b8 16 // DW_AT_byte_size ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 117 // DW_AT_decl_line -; CHECK-NEXT:.b8 11 // Abbrev [11] 0x1e65:0xf DW_TAG_member +; CHECK-NEXT:.b8 11 // Abbrev [11] 0x1e6b:0xf DW_TAG_member ; CHECK-NEXT:.b8 113 // DW_AT_name ; CHECK-NEXT:.b8 117 ; CHECK-NEXT:.b8 111 ; CHECK-NEXT:.b8 116 ; CHECK-NEXT:.b8 0 -; CHECK-NEXT:.b32 3764 // DW_AT_type +; CHECK-NEXT:.b32 3770 // DW_AT_type ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 119 // DW_AT_decl_line ; CHECK-NEXT:.b8 2 // DW_AT_data_member_location ; CHECK-NEXT:.b8 35 ; CHECK-NEXT:.b8 0 -; CHECK-NEXT:.b8 11 // Abbrev [11] 0x1e74:0xe DW_TAG_member +; CHECK-NEXT:.b8 11 // Abbrev [11] 0x1e7a:0xe DW_TAG_member ; CHECK-NEXT:.b8 114 // DW_AT_name ; CHECK-NEXT:.b8 101 ; CHECK-NEXT:.b8 109 ; CHECK-NEXT:.b8 0 -; CHECK-NEXT:.b32 3764 // DW_AT_type +; CHECK-NEXT:.b32 3770 // DW_AT_type ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 120 // DW_AT_decl_line ; CHECK-NEXT:.b8 2 // DW_AT_data_member_location ; CHECK-NEXT:.b8 35 ; CHECK-NEXT:.b8 8 ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 42 // Abbrev [42] 0x1e83:0x13 DW_TAG_subprogram +; CHECK-NEXT:.b8 42 // Abbrev [42] 0x1e89:0x13 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_name ; CHECK-NEXT:.b8 69 ; CHECK-NEXT:.b8 120 @@ -6643,10 +6651,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external ; CHECK-NEXT:.b8 1 // DW_AT_noreturn -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1e90:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1e96:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1e96:0x16 DW_TAG_subprogram +; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1e9c:0x16 DW_TAG_subprogram ; CHECK-NEXT:.b8 108 // DW_AT_name ; CHECK-NEXT:.b8 108 ; CHECK-NEXT:.b8 97 @@ -6656,13 +6664,13 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 12 // DW_AT_decl_line ; CHECK-NEXT:.b8 3 -; CHECK-NEXT:.b32 3764 // DW_AT_type +; CHECK-NEXT:.b32 3770 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1ea6:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 3764 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1eac:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 3770 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1eac:0x1b DW_TAG_subprogram +; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1eb2:0x1b DW_TAG_subprogram ; CHECK-NEXT:.b8 108 // DW_AT_name ; CHECK-NEXT:.b8 108 ; CHECK-NEXT:.b8 100 @@ -6672,15 +6680,15 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 29 // DW_AT_decl_line ; CHECK-NEXT:.b8 3 -; CHECK-NEXT:.b32 7762 // DW_AT_type +; CHECK-NEXT:.b32 7768 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1ebc:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 3764 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1ec1:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 3764 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1ec2:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 3770 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1ec7:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 3770 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1ec7:0x16 DW_TAG_subprogram +; CHECK-NEXT:.b8 37 // Abbrev [37] 0x1ecd:0x16 DW_TAG_subprogram ; CHECK-NEXT:.b8 97 // DW_AT_name ; CHECK-NEXT:.b8 116 ; CHECK-NEXT:.b8 111 @@ -6690,13 +6698,13 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 36 // DW_AT_decl_line ; CHECK-NEXT:.b8 1 -; CHECK-NEXT:.b32 3764 // DW_AT_type +; CHECK-NEXT:.b32 3770 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1ed7:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5631 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1edd:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5637 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1edd:0x21 DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1ee3:0x21 DW_TAG_subprogram ; CHECK-NEXT:.b8 115 // DW_AT_name ; CHECK-NEXT:.b8 116 ; CHECK-NEXT:.b8 114 @@ -6707,17 +6715,17 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 209 // DW_AT_decl_line -; CHECK-NEXT:.b32 3764 // DW_AT_type +; CHECK-NEXT:.b32 3770 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1eee:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5631 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1ef3:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 7476 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1ef8:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 4579 // DW_AT_type -; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1efe:0x22 DW_TAG_subprogram +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1ef4:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5637 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1ef9:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 7482 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1efe:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 4585 // DW_AT_type +; CHECK-NEXT:.b8 0 // End Of Children Mark +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1f04:0x22 DW_TAG_subprogram ; CHECK-NEXT:.b8 115 // DW_AT_name ; CHECK-NEXT:.b8 116 ; CHECK-NEXT:.b8 114 @@ -6729,17 +6737,17 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 214 // DW_AT_decl_line -; CHECK-NEXT:.b32 7968 // DW_AT_type +; CHECK-NEXT:.b32 7974 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1f10:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5631 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1f15:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 7476 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1f1a:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 4579 // DW_AT_type -; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 10 // Abbrev [10] 0x1f20:0x1a DW_TAG_base_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1f16:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5637 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1f1b:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 7482 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1f20:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 4585 // DW_AT_type +; CHECK-NEXT:.b8 0 // End Of Children Mark +; CHECK-NEXT:.b8 10 // Abbrev [10] 0x1f26:0x1a DW_TAG_base_type ; CHECK-NEXT:.b8 108 // DW_AT_name ; CHECK-NEXT:.b8 111 ; CHECK-NEXT:.b8 110 @@ -6765,7 +6773,7 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 7 // DW_AT_encoding ; CHECK-NEXT:.b8 8 // DW_AT_byte_size -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1f3a:0x1b DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1f40:0x1b DW_TAG_subprogram ; CHECK-NEXT:.b8 115 // DW_AT_name ; CHECK-NEXT:.b8 116 ; CHECK-NEXT:.b8 114 @@ -6778,12 +6786,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1f4a:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5631 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1f4f:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 7476 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1f50:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5637 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1f55:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 7482 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1f55:0x1c DW_TAG_subprogram +; CHECK-NEXT:.b8 32 // Abbrev [32] 0x1f5b:0x1c DW_TAG_subprogram ; CHECK-NEXT:.b8 115 // DW_AT_name ; CHECK-NEXT:.b8 116 ; CHECK-NEXT:.b8 114 @@ -6794,15 +6802,15 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 7 // DW_AT_decl_file ; CHECK-NEXT:.b8 175 // DW_AT_decl_line -; CHECK-NEXT:.b32 8049 // DW_AT_type +; CHECK-NEXT:.b32 8055 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration ; CHECK-NEXT:.b8 1 // DW_AT_external -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1f66:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5631 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1f6b:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 7476 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1f6c:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5637 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1f71:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 7482 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 10 // Abbrev [10] 0x1f71:0xf DW_TAG_base_type +; CHECK-NEXT:.b8 10 // Abbrev [10] 0x1f77:0xf DW_TAG_base_type ; CHECK-NEXT:.b8 108 // DW_AT_name ; CHECK-NEXT:.b8 111 ; CHECK-NEXT:.b8 110 @@ -6817,7 +6825,7 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b8 4 // DW_AT_encoding ; CHECK-NEXT:.b8 8 // DW_AT_byte_size -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x1f80:0x20 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x1f86:0x20 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -6840,10 +6848,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1f9a:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1fa0:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x1fa0:0x22 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x1fa6:0x22 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -6868,10 +6876,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1fbc:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1fc2:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x1fc2:0x20 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x1fc8:0x20 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -6894,10 +6902,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1fdc:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1fe2:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x1fe2:0x22 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x1fe8:0x22 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -6922,10 +6930,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x1ffe:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2004:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2004:0x28 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x200a:0x28 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -6951,12 +6959,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2021:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2027:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2026:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x202c:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x202c:0x20 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2032:0x20 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -6979,10 +6987,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2046:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x204c:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x204c:0x22 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2052:0x22 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7007,10 +7015,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2068:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x206e:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x206e:0x20 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2074:0x20 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7033,10 +7041,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2088:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x208e:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x208e:0x20 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2094:0x20 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7059,10 +7067,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 2 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x20a8:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x20ae:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x20ae:0x2e DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x20b4:0x2e DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7094,12 +7102,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 4 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x20d1:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x20d7:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x20d6:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x20dc:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x20dc:0x1e DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x20e2:0x1e DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7120,10 +7128,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 4 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x20f4:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x20fa:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x20fa:0x20 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2100:0x20 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7146,10 +7154,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2114:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x211a:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x211a:0x20 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2120:0x20 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7172,10 +7180,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2134:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x213a:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x213a:0x1e DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2140:0x1e DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7196,10 +7204,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2152:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2158:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2158:0x20 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x215e:0x20 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7222,10 +7230,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 2 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2172:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2178:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2178:0x1e DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x217e:0x1e DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7246,10 +7254,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2190:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2196:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2196:0x22 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x219c:0x22 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7274,10 +7282,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x21b2:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x21b8:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x21b8:0x20 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x21be:0x20 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7300,10 +7308,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 2 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x21d2:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x21d8:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x21d8:0x26 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x21de:0x26 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7327,12 +7335,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 6 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x21f3:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x21f9:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x21f8:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x21fe:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x21fe:0x22 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2204:0x22 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7357,10 +7365,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 2 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x221a:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2220:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2220:0x2a DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2226:0x2a DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7383,14 +7391,14 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 6 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x223a:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2240:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x223f:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2245:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2244:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x224a:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x224a:0x26 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2250:0x26 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7414,12 +7422,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 2 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2265:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x226b:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x226a:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2270:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2270:0x26 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2276:0x26 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7443,12 +7451,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 2 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x228b:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2291:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2290:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2296:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2296:0x26 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x229c:0x26 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7472,12 +7480,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 6 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x22b1:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x22b7:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x22b6:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x22bc:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x22bc:0x29 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x22c2:0x29 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7504,12 +7512,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 6 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x22da:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x22e0:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x22df:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 4624 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x22e5:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 4630 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x22e5:0x28 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x22eb:0x28 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7535,12 +7543,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2302:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2308:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2307:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x230d:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x230d:0x22 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2313:0x22 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7563,12 +7571,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 12 // DW_AT_decl_file ; CHECK-NEXT:.b8 85 // DW_AT_decl_line ; CHECK-NEXT:.b8 6 -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2329:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x232f:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x232f:0x28 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2335:0x28 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7594,12 +7602,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x234c:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2352:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2351:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2357:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2357:0x24 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x235d:0x24 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7626,10 +7634,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2375:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x237b:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x237b:0x24 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2381:0x24 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7654,12 +7662,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 12 // DW_AT_decl_file ; CHECK-NEXT:.b8 125 // DW_AT_decl_line ; CHECK-NEXT:.b8 4 -; CHECK-NEXT:.b32 3764 // DW_AT_type +; CHECK-NEXT:.b32 3770 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2399:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x239f:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x239f:0x26 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x23a5:0x26 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7686,12 +7694,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 12 // DW_AT_decl_file ; CHECK-NEXT:.b8 66 // DW_AT_decl_line ; CHECK-NEXT:.b8 6 -; CHECK-NEXT:.b32 3764 // DW_AT_type +; CHECK-NEXT:.b32 3770 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x23bf:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x23c5:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x23c5:0x22 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x23cb:0x22 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7716,10 +7724,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x23e1:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x23e7:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x23e7:0x22 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x23ed:0x22 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7744,10 +7752,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2403:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2409:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2409:0x20 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x240f:0x20 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7770,10 +7778,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2423:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2429:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2429:0x20 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x242f:0x20 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7796,10 +7804,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 6 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2443:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2449:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2449:0x1e DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x244f:0x1e DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7820,10 +7828,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2461:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2467:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2467:0x22 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x246d:0x22 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7846,12 +7854,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 12 // DW_AT_decl_file ; CHECK-NEXT:.b8 116 // DW_AT_decl_line ; CHECK-NEXT:.b8 4 -; CHECK-NEXT:.b32 5164 // DW_AT_type +; CHECK-NEXT:.b32 5170 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2483:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2489:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2489:0x24 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x248f:0x24 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7876,12 +7884,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 12 // DW_AT_decl_file ; CHECK-NEXT:.b8 71 // DW_AT_decl_line ; CHECK-NEXT:.b8 6 -; CHECK-NEXT:.b32 5164 // DW_AT_type +; CHECK-NEXT:.b32 5170 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x24a7:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x24ad:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x24ad:0x27 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x24b3:0x27 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7906,12 +7914,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 6 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x24c9:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x24cf:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x24ce:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x24d4:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2125 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x24d4:0x2b DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x24da:0x2b DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7945,10 +7953,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 4 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x24f9:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x24ff:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x24ff:0x31 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2505:0x31 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -7983,12 +7991,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 4 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2525:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x252b:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x252a:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2530:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2530:0x24 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2536:0x24 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -8010,12 +8018,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 6 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2549:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x254f:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x254e:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2554:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2554:0x31 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x255a:0x31 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -8050,12 +8058,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 6 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x257a:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2580:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x257f:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2585:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2585:0x31 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x258b:0x31 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -8085,14 +8093,14 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 6 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x25a6:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x25ac:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x25ab:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x25b1:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x25b0:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 4624 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x25b6:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 4630 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x25b6:0x20 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x25bc:0x20 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -8115,10 +8123,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 4 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x25d0:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x25d6:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x25d6:0x22 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x25dc:0x22 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -8143,10 +8151,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 6 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x25f2:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x25f8:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x25f8:0x2c DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x25fe:0x2c DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -8176,12 +8184,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2619:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x261f:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x261e:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 5164 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2624:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 5170 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2624:0x2a DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x262a:0x2a DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -8209,12 +8217,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2643:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2649:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2648:0x5 DW_TAG_formal_parameter -; CHECK-NEXT:.b32 4579 // DW_AT_type +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x264e:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 4585 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x264e:0x1e DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2654:0x1e DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -8235,10 +8243,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 4 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2666:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x266c:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x266c:0x20 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2672:0x20 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -8261,10 +8269,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2686:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x268c:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x268c:0x20 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2692:0x20 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -8287,10 +8295,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 3 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x26a6:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x26ac:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x26ac:0x1e DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x26b2:0x1e DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -8311,10 +8319,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 4 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x26c4:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x26ca:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x26ca:0x20 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x26d0:0x20 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -8337,10 +8345,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x26e4:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x26ea:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x26ea:0x24 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x26f0:0x24 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -8367,10 +8375,10 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 6 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2708:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x270e:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 44 // Abbrev [44] 0x270e:0x22 DW_TAG_subprogram +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2714:0x22 DW_TAG_subprogram ; CHECK-NEXT:.b8 95 // DW_AT_MIPS_linkage_name ; CHECK-NEXT:.b8 90 ; CHECK-NEXT:.b8 76 @@ -8395,7 +8403,7 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 2 ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 1 // DW_AT_declaration -; CHECK-NEXT:.b8 7 // Abbrev [7] 0x272a:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b8 7 // Abbrev [7] 0x2730:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 2116 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark ; CHECK-NEXT:.b8 0 // End Of Children Mark From e8d2057ca48646a0d354051977298a76724cfaf3 Mon Sep 17 00:00:00 2001 From: Joseph Huber Date: Thu, 26 Sep 2024 11:33:52 -0700 Subject: [PATCH 05/13] [OpenMP] Add critical region lock for NVPTX targets (#110148) Summary: We define this on AMDGCN but not NVPTX, which leads to some failures dependong on the target. --- offload/DeviceRTL/src/Synchronization.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/offload/DeviceRTL/src/Synchronization.cpp b/offload/DeviceRTL/src/Synchronization.cpp index d6452a5d589c5..9ea8d171cc830 100644 --- a/offload/DeviceRTL/src/Synchronization.cpp +++ b/offload/DeviceRTL/src/Synchronization.cpp @@ -398,6 +398,10 @@ void setLock(omp_lock_t *Lock) { } // wait for 0 to be the read value } +void unsetCriticalLock(omp_lock_t *Lock) { unsetLock(Lock); } + +void setCriticalLock(omp_lock_t *Lock) { setLock(Lock); } + #pragma omp end declare variant ///} From c5b417c4f60476479c434d716d8659fa39f6f306 Mon Sep 17 00:00:00 2001 From: vporpo Date: Thu, 26 Sep 2024 11:44:52 -0700 Subject: [PATCH 06/13] [SandboxIR][NFC] Move Value class into a separate file (#110059) --- llvm/include/llvm/SandboxIR/SandboxIR.h | 246 +-------------------- llvm/include/llvm/SandboxIR/Value.h | 271 ++++++++++++++++++++++++ llvm/lib/SandboxIR/CMakeLists.txt | 1 + llvm/lib/SandboxIR/SandboxIR.cpp | 104 --------- llvm/lib/SandboxIR/Value.cpp | 122 +++++++++++ 5 files changed, 395 insertions(+), 349 deletions(-) create mode 100644 llvm/include/llvm/SandboxIR/Value.h create mode 100644 llvm/lib/SandboxIR/Value.cpp diff --git a/llvm/include/llvm/SandboxIR/SandboxIR.h b/llvm/include/llvm/SandboxIR/SandboxIR.h index eb4f7209798bd..b32333263c03b 100644 --- a/llvm/include/llvm/SandboxIR/SandboxIR.h +++ b/llvm/include/llvm/SandboxIR/SandboxIR.h @@ -114,6 +114,7 @@ #include "llvm/SandboxIR/Tracker.h" #include "llvm/SandboxIR/Type.h" #include "llvm/SandboxIR/Use.h" +#include "llvm/SandboxIR/Value.h" #include "llvm/Support/raw_ostream.h" #include @@ -223,251 +224,6 @@ class OperandUseIterator { int operator-(const OperandUseIterator &Other) const; }; -/// Iterator for the `Use` edges of a Value's users. -/// \Returns a `Use` when dereferenced. -class UserUseIterator { - sandboxir::Use Use; - /// Don't let the user create a non-empty UserUseIterator. - UserUseIterator(const class Use &Use) : Use(Use) {} - friend class Value; // For constructor - -public: - using difference_type = std::ptrdiff_t; - using value_type = sandboxir::Use; - using pointer = value_type *; - using reference = value_type &; - using iterator_category = std::input_iterator_tag; - - UserUseIterator() = default; - value_type operator*() const { return Use; } - UserUseIterator &operator++(); - bool operator==(const UserUseIterator &Other) const { - return Use == Other.Use; - } - bool operator!=(const UserUseIterator &Other) const { - return !(*this == Other); - } - const sandboxir::Use &getUse() const { return Use; } -}; - -/// A SandboxIR Value has users. This is the base class. -class Value { -public: - enum class ClassID : unsigned { -#define DEF_VALUE(ID, CLASS) ID, -#define DEF_USER(ID, CLASS) ID, -#define DEF_CONST(ID, CLASS) ID, -#define DEF_INSTR(ID, OPC, CLASS) ID, -#include "llvm/SandboxIR/SandboxIRValues.def" - }; - -protected: - static const char *getSubclassIDStr(ClassID ID) { - switch (ID) { -#define DEF_VALUE(ID, CLASS) \ - case ClassID::ID: \ - return #ID; -#define DEF_USER(ID, CLASS) \ - case ClassID::ID: \ - return #ID; -#define DEF_CONST(ID, CLASS) \ - case ClassID::ID: \ - return #ID; -#define DEF_INSTR(ID, OPC, CLASS) \ - case ClassID::ID: \ - return #ID; -#include "llvm/SandboxIR/SandboxIRValues.def" - } - llvm_unreachable("Unimplemented ID"); - } - - /// For isa/dyn_cast. - ClassID SubclassID; -#ifndef NDEBUG - /// A unique ID used for forming the name (used for debugging). - unsigned UID; -#endif - /// The LLVM Value that corresponds to this SandboxIR Value. - /// NOTE: Some sandboxir Instructions, like Packs, may include more than one - /// value and in these cases `Val` points to the last instruction in program - /// order. - llvm::Value *Val = nullptr; - - friend class Context; // For getting `Val`. - friend class User; // For getting `Val`. - friend class Use; // For getting `Val`. - friend class VAArgInst; // For getting `Val`. - friend class FreezeInst; // For getting `Val`. - friend class FenceInst; // For getting `Val`. - friend class SelectInst; // For getting `Val`. - friend class ExtractElementInst; // For getting `Val`. - friend class InsertElementInst; // For getting `Val`. - friend class ShuffleVectorInst; // For getting `Val`. - friend class ExtractValueInst; // For getting `Val`. - friend class InsertValueInst; // For getting `Val`. - friend class BranchInst; // For getting `Val`. - friend class LoadInst; // For getting `Val`. - friend class StoreInst; // For getting `Val`. - friend class ReturnInst; // For getting `Val`. - friend class CallBase; // For getting `Val`. - friend class CallInst; // For getting `Val`. - friend class InvokeInst; // For getting `Val`. - friend class CallBrInst; // For getting `Val`. - friend class LandingPadInst; // For getting `Val`. - friend class FuncletPadInst; // For getting `Val`. - friend class CatchPadInst; // For getting `Val`. - friend class CleanupPadInst; // For getting `Val`. - friend class CatchReturnInst; // For getting `Val`. - friend class GetElementPtrInst; // For getting `Val`. - friend class ResumeInst; // For getting `Val`. - friend class CatchSwitchInst; // For getting `Val`. - friend class CleanupReturnInst; // For getting `Val`. - friend class SwitchInst; // For getting `Val`. - friend class UnaryOperator; // For getting `Val`. - friend class BinaryOperator; // For getting `Val`. - friend class AtomicRMWInst; // For getting `Val`. - friend class AtomicCmpXchgInst; // For getting `Val`. - friend class AllocaInst; // For getting `Val`. - friend class CastInst; // For getting `Val`. - friend class PHINode; // For getting `Val`. - friend class UnreachableInst; // For getting `Val`. - friend class CatchSwitchAddHandler; // For `Val`. - friend class CmpInst; // For getting `Val`. - friend class ConstantArray; // For `Val`. - friend class ConstantStruct; // For `Val`. - friend class ConstantAggregateZero; // For `Val`. - friend class ConstantPointerNull; // For `Val`. - friend class UndefValue; // For `Val`. - friend class PoisonValue; // For `Val`. - friend class BlockAddress; // For `Val`. - friend class GlobalValue; // For `Val`. - friend class DSOLocalEquivalent; // For `Val`. - friend class GlobalObject; // For `Val`. - friend class GlobalIFunc; // For `Val`. - friend class GlobalVariable; // For `Val`. - friend class GlobalAlias; // For `Val`. - friend class NoCFIValue; // For `Val`. - friend class ConstantPtrAuth; // For `Val`. - friend class ConstantExpr; // For `Val`. - friend class Utils; // For `Val`. - friend class Module; // For `Val`. - // Region needs to manipulate metadata in the underlying LLVM Value, we don't - // expose metadata in sandboxir. - friend class Region; - - /// All values point to the context. - Context &Ctx; - // This is used by eraseFromParent(). - void clearValue() { Val = nullptr; } - template friend class LLVMOpUserItToSBTy; - - Value(ClassID SubclassID, llvm::Value *Val, Context &Ctx); - /// Disable copies. - Value(const Value &) = delete; - Value &operator=(const Value &) = delete; - -public: - virtual ~Value() = default; - ClassID getSubclassID() const { return SubclassID; } - - using use_iterator = UserUseIterator; - using const_use_iterator = UserUseIterator; - - use_iterator use_begin(); - const_use_iterator use_begin() const { - return const_cast(this)->use_begin(); - } - use_iterator use_end() { return use_iterator(Use(nullptr, nullptr, Ctx)); } - const_use_iterator use_end() const { - return const_cast(this)->use_end(); - } - - iterator_range uses() { - return make_range(use_begin(), use_end()); - } - iterator_range uses() const { - return make_range(use_begin(), use_end()); - } - - /// Helper for mapped_iterator. - struct UseToUser { - User *operator()(const Use &Use) const { return &*Use.getUser(); } - }; - - using user_iterator = mapped_iterator; - using const_user_iterator = user_iterator; - - user_iterator user_begin(); - user_iterator user_end() { - return user_iterator(Use(nullptr, nullptr, Ctx), UseToUser()); - } - const_user_iterator user_begin() const { - return const_cast(this)->user_begin(); - } - const_user_iterator user_end() const { - return const_cast(this)->user_end(); - } - - iterator_range users() { - return make_range(user_begin(), user_end()); - } - iterator_range users() const { - return make_range(user_begin(), user_end()); - } - /// \Returns the number of user edges (not necessarily to unique users). - /// WARNING: This is a linear-time operation. - unsigned getNumUses() const; - /// Return true if this value has N uses or more. - /// This is logically equivalent to getNumUses() >= N. - /// WARNING: This can be expensive, as it is linear to the number of users. - bool hasNUsesOrMore(unsigned Num) const { - unsigned Cnt = 0; - for (auto It = use_begin(), ItE = use_end(); It != ItE; ++It) { - if (++Cnt >= Num) - return true; - } - return false; - } - /// Return true if this Value has exactly N uses. - bool hasNUses(unsigned Num) const { - unsigned Cnt = 0; - for (auto It = use_begin(), ItE = use_end(); It != ItE; ++It) { - if (++Cnt > Num) - return false; - } - return Cnt == Num; - } - - Type *getType() const; - - Context &getContext() const { return Ctx; } - - void replaceUsesWithIf(Value *OtherV, - llvm::function_ref ShouldReplace); - void replaceAllUsesWith(Value *Other); - - /// \Returns the LLVM IR name of the bottom-most LLVM value. - StringRef getName() const { return Val->getName(); } - -#ifndef NDEBUG - /// Should crash if there is something wrong with the instruction. - virtual void verify() const = 0; - /// Returns the unique id in the form 'SB.' like 'SB1.' - std::string getUid() const; - virtual void dumpCommonHeader(raw_ostream &OS) const; - void dumpCommonFooter(raw_ostream &OS) const; - void dumpCommonPrefix(raw_ostream &OS) const; - void dumpCommonSuffix(raw_ostream &OS) const; - void printAsOperandCommon(raw_ostream &OS) const; - friend raw_ostream &operator<<(raw_ostream &OS, const sandboxir::Value &V) { - V.dumpOS(OS); - return OS; - } - virtual void dumpOS(raw_ostream &OS) const = 0; - LLVM_DUMP_METHOD void dump() const; -#endif -}; - /// Argument of a sandboxir::Function. class Argument : public sandboxir::Value { Argument(llvm::Argument *Arg, sandboxir::Context &Ctx) diff --git a/llvm/include/llvm/SandboxIR/Value.h b/llvm/include/llvm/SandboxIR/Value.h new file mode 100644 index 0000000000000..5dc06c5fc39bf --- /dev/null +++ b/llvm/include/llvm/SandboxIR/Value.h @@ -0,0 +1,271 @@ +//===- Value.h --------------------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_SANDBOXIR_VALUE_H +#define LLVM_SANDBOXIR_VALUE_H + +#include "llvm/IR/Value.h" +#include "llvm/SandboxIR/Use.h" + +namespace llvm::sandboxir { + +// Forward declare all classes to avoid some MSVC build errors. +#define DEF_INSTR(ID, OPC, CLASS) class CLASS; +#include "llvm/SandboxIR/SandboxIRValues.def" +class Context; +class FuncletPadInst; +class Type; + +/// Iterator for the `Use` edges of a Value's users. +/// \Returns a `Use` when dereferenced. +class UserUseIterator { + sandboxir::Use Use; + /// Don't let the user create a non-empty UserUseIterator. + UserUseIterator(const class Use &Use) : Use(Use) {} + friend class Value; // For constructor + +public: + using difference_type = std::ptrdiff_t; + using value_type = sandboxir::Use; + using pointer = value_type *; + using reference = value_type &; + using iterator_category = std::input_iterator_tag; + + UserUseIterator() = default; + value_type operator*() const { return Use; } + UserUseIterator &operator++(); + bool operator==(const UserUseIterator &Other) const { + return Use == Other.Use; + } + bool operator!=(const UserUseIterator &Other) const { + return !(*this == Other); + } + const sandboxir::Use &getUse() const { return Use; } +}; + +/// A SandboxIR Value has users. This is the base class. +class Value { +public: + enum class ClassID : unsigned { +#define DEF_VALUE(ID, CLASS) ID, +#define DEF_USER(ID, CLASS) ID, +#define DEF_CONST(ID, CLASS) ID, +#define DEF_INSTR(ID, OPC, CLASS) ID, +#include "llvm/SandboxIR/SandboxIRValues.def" + }; + +protected: + static const char *getSubclassIDStr(ClassID ID) { + switch (ID) { +#define DEF_VALUE(ID, CLASS) \ + case ClassID::ID: \ + return #ID; +#define DEF_USER(ID, CLASS) \ + case ClassID::ID: \ + return #ID; +#define DEF_CONST(ID, CLASS) \ + case ClassID::ID: \ + return #ID; +#define DEF_INSTR(ID, OPC, CLASS) \ + case ClassID::ID: \ + return #ID; +#include "llvm/SandboxIR/SandboxIRValues.def" + } + llvm_unreachable("Unimplemented ID"); + } + + /// For isa/dyn_cast. + ClassID SubclassID; +#ifndef NDEBUG + /// A unique ID used for forming the name (used for debugging). + unsigned UID; +#endif + /// The LLVM Value that corresponds to this SandboxIR Value. + /// NOTE: Some sandboxir Instructions, like Packs, may include more than one + /// value and in these cases `Val` points to the last instruction in program + /// order. + llvm::Value *Val = nullptr; + + friend class Context; // For getting `Val`. + friend class User; // For getting `Val`. + friend class Use; // For getting `Val`. + friend class VAArgInst; // For getting `Val`. + friend class FreezeInst; // For getting `Val`. + friend class FenceInst; // For getting `Val`. + friend class SelectInst; // For getting `Val`. + friend class ExtractElementInst; // For getting `Val`. + friend class InsertElementInst; // For getting `Val`. + friend class ShuffleVectorInst; // For getting `Val`. + friend class ExtractValueInst; // For getting `Val`. + friend class InsertValueInst; // For getting `Val`. + friend class BranchInst; // For getting `Val`. + friend class LoadInst; // For getting `Val`. + friend class StoreInst; // For getting `Val`. + friend class ReturnInst; // For getting `Val`. + friend class CallBase; // For getting `Val`. + friend class CallInst; // For getting `Val`. + friend class InvokeInst; // For getting `Val`. + friend class CallBrInst; // For getting `Val`. + friend class LandingPadInst; // For getting `Val`. + friend class FuncletPadInst; // For getting `Val`. + friend class CatchPadInst; // For getting `Val`. + friend class CleanupPadInst; // For getting `Val`. + friend class CatchReturnInst; // For getting `Val`. + friend class GetElementPtrInst; // For getting `Val`. + friend class ResumeInst; // For getting `Val`. + friend class CatchSwitchInst; // For getting `Val`. + friend class CleanupReturnInst; // For getting `Val`. + friend class SwitchInst; // For getting `Val`. + friend class UnaryOperator; // For getting `Val`. + friend class BinaryOperator; // For getting `Val`. + friend class AtomicRMWInst; // For getting `Val`. + friend class AtomicCmpXchgInst; // For getting `Val`. + friend class AllocaInst; // For getting `Val`. + friend class CastInst; // For getting `Val`. + friend class PHINode; // For getting `Val`. + friend class UnreachableInst; // For getting `Val`. + friend class CatchSwitchAddHandler; // For `Val`. + friend class CmpInst; // For getting `Val`. + friend class ConstantArray; // For `Val`. + friend class ConstantStruct; // For `Val`. + friend class ConstantAggregateZero; // For `Val`. + friend class ConstantPointerNull; // For `Val`. + friend class UndefValue; // For `Val`. + friend class PoisonValue; // For `Val`. + friend class BlockAddress; // For `Val`. + friend class GlobalValue; // For `Val`. + friend class DSOLocalEquivalent; // For `Val`. + friend class GlobalObject; // For `Val`. + friend class GlobalIFunc; // For `Val`. + friend class GlobalVariable; // For `Val`. + friend class GlobalAlias; // For `Val`. + friend class NoCFIValue; // For `Val`. + friend class ConstantPtrAuth; // For `Val`. + friend class ConstantExpr; // For `Val`. + friend class Utils; // For `Val`. + friend class Module; // For `Val`. + // Region needs to manipulate metadata in the underlying LLVM Value, we don't + // expose metadata in sandboxir. + friend class Region; + + /// All values point to the context. + Context &Ctx; + // This is used by eraseFromParent(). + void clearValue() { Val = nullptr; } + template friend class LLVMOpUserItToSBTy; + + Value(ClassID SubclassID, llvm::Value *Val, Context &Ctx); + /// Disable copies. + Value(const Value &) = delete; + Value &operator=(const Value &) = delete; + +public: + virtual ~Value() = default; + ClassID getSubclassID() const { return SubclassID; } + + using use_iterator = UserUseIterator; + using const_use_iterator = UserUseIterator; + + use_iterator use_begin(); + const_use_iterator use_begin() const { + return const_cast(this)->use_begin(); + } + use_iterator use_end() { return use_iterator(Use(nullptr, nullptr, Ctx)); } + const_use_iterator use_end() const { + return const_cast(this)->use_end(); + } + + iterator_range uses() { + return make_range(use_begin(), use_end()); + } + iterator_range uses() const { + return make_range(use_begin(), use_end()); + } + + /// Helper for mapped_iterator. + struct UseToUser { + User *operator()(const Use &Use) const { return &*Use.getUser(); } + }; + + using user_iterator = mapped_iterator; + using const_user_iterator = user_iterator; + + user_iterator user_begin(); + user_iterator user_end() { + return user_iterator(Use(nullptr, nullptr, Ctx), UseToUser()); + } + const_user_iterator user_begin() const { + return const_cast(this)->user_begin(); + } + const_user_iterator user_end() const { + return const_cast(this)->user_end(); + } + + iterator_range users() { + return make_range(user_begin(), user_end()); + } + iterator_range users() const { + return make_range(user_begin(), user_end()); + } + /// \Returns the number of user edges (not necessarily to unique users). + /// WARNING: This is a linear-time operation. + unsigned getNumUses() const; + /// Return true if this value has N uses or more. + /// This is logically equivalent to getNumUses() >= N. + /// WARNING: This can be expensive, as it is linear to the number of users. + bool hasNUsesOrMore(unsigned Num) const { + unsigned Cnt = 0; + for (auto It = use_begin(), ItE = use_end(); It != ItE; ++It) { + if (++Cnt >= Num) + return true; + } + return false; + } + /// Return true if this Value has exactly N uses. + bool hasNUses(unsigned Num) const { + unsigned Cnt = 0; + for (auto It = use_begin(), ItE = use_end(); It != ItE; ++It) { + if (++Cnt > Num) + return false; + } + return Cnt == Num; + } + + Type *getType() const; + + Context &getContext() const { return Ctx; } + + void replaceUsesWithIf(Value *OtherV, + llvm::function_ref ShouldReplace); + void replaceAllUsesWith(Value *Other); + + /// \Returns the LLVM IR name of the bottom-most LLVM value. + StringRef getName() const { return Val->getName(); } + +#ifndef NDEBUG + /// Should crash if there is something wrong with the instruction. + virtual void verify() const = 0; + /// Returns the unique id in the form 'SB.' like 'SB1.' + std::string getUid() const; + virtual void dumpCommonHeader(raw_ostream &OS) const; + void dumpCommonFooter(raw_ostream &OS) const; + void dumpCommonPrefix(raw_ostream &OS) const; + void dumpCommonSuffix(raw_ostream &OS) const; + void printAsOperandCommon(raw_ostream &OS) const; + friend raw_ostream &operator<<(raw_ostream &OS, const sandboxir::Value &V) { + V.dumpOS(OS); + return OS; + } + virtual void dumpOS(raw_ostream &OS) const = 0; + LLVM_DUMP_METHOD void dump() const; +#endif +}; + +} // namespace llvm::sandboxir + +#endif // LLVM_SANDBOXIR_VALUE_H diff --git a/llvm/lib/SandboxIR/CMakeLists.txt b/llvm/lib/SandboxIR/CMakeLists.txt index 1bbbb8c1ac9e8..bd91e8dff8a8e 100644 --- a/llvm/lib/SandboxIR/CMakeLists.txt +++ b/llvm/lib/SandboxIR/CMakeLists.txt @@ -6,6 +6,7 @@ add_llvm_component_library(LLVMSandboxIR SandboxIR.cpp Tracker.cpp Type.cpp + Value.cpp ADDITIONAL_HEADER_DIRS ${LLVM_MAIN_INCLUDE_DIR}/llvm/Transforms/SandboxIR diff --git a/llvm/lib/SandboxIR/SandboxIR.cpp b/llvm/lib/SandboxIR/SandboxIR.cpp index 5f005bd1f5d08..17c77f470549e 100644 --- a/llvm/lib/SandboxIR/SandboxIR.cpp +++ b/llvm/lib/SandboxIR/SandboxIR.cpp @@ -105,111 +105,7 @@ int OperandUseIterator::operator-(const OperandUseIterator &Other) const { return ThisOpNo - OtherOpNo; } -Value::Value(ClassID SubclassID, llvm::Value *Val, Context &Ctx) - : SubclassID(SubclassID), Val(Val), Ctx(Ctx) { #ifndef NDEBUG - UID = Ctx.getNumValues(); -#endif -} - -Value::use_iterator Value::use_begin() { - llvm::Use *LLVMUse = nullptr; - if (Val->use_begin() != Val->use_end()) - LLVMUse = &*Val->use_begin(); - User *User = LLVMUse != nullptr ? cast_or_null(Ctx.getValue( - Val->use_begin()->getUser())) - : nullptr; - return use_iterator(Use(LLVMUse, User, Ctx)); -} - -Value::user_iterator Value::user_begin() { - auto UseBegin = Val->use_begin(); - auto UseEnd = Val->use_end(); - bool AtEnd = UseBegin == UseEnd; - llvm::Use *LLVMUse = AtEnd ? nullptr : &*UseBegin; - User *User = - AtEnd ? nullptr - : cast_or_null(Ctx.getValue(&*LLVMUse->getUser())); - return user_iterator(Use(LLVMUse, User, Ctx), UseToUser()); -} - -unsigned Value::getNumUses() const { return range_size(Val->users()); } - -Type *Value::getType() const { return Ctx.getType(Val->getType()); } - -void Value::replaceUsesWithIf( - Value *OtherV, llvm::function_ref ShouldReplace) { - assert(getType() == OtherV->getType() && "Can't replace with different type"); - llvm::Value *OtherVal = OtherV->Val; - // We are delegating RUWIf to LLVM IR's RUWIf. - Val->replaceUsesWithIf( - OtherVal, [&ShouldReplace, this](llvm::Use &LLVMUse) -> bool { - User *DstU = cast_or_null(Ctx.getValue(LLVMUse.getUser())); - if (DstU == nullptr) - return false; - Use UseToReplace(&LLVMUse, DstU, Ctx); - if (!ShouldReplace(UseToReplace)) - return false; - Ctx.getTracker().emplaceIfTracking(UseToReplace); - return true; - }); -} - -void Value::replaceAllUsesWith(Value *Other) { - assert(getType() == Other->getType() && - "Replacing with Value of different type!"); - auto &Tracker = Ctx.getTracker(); - if (Tracker.isTracking()) { - for (auto Use : uses()) - Tracker.track(std::make_unique(Use)); - } - // We are delegating RAUW to LLVM IR's RAUW. - Val->replaceAllUsesWith(Other->Val); -} - -#ifndef NDEBUG -std::string Value::getUid() const { - std::stringstream SS; - SS << "SB" << UID << "."; - return SS.str(); -} - -void Value::dumpCommonHeader(raw_ostream &OS) const { - OS << getUid() << " " << getSubclassIDStr(SubclassID) << " "; -} - -void Value::dumpCommonFooter(raw_ostream &OS) const { - OS.indent(2) << "Val: "; - if (Val) - OS << *Val; - else - OS << "NULL"; - OS << "\n"; -} - -void Value::dumpCommonPrefix(raw_ostream &OS) const { - if (Val) - OS << *Val; - else - OS << "NULL "; -} - -void Value::dumpCommonSuffix(raw_ostream &OS) const { - OS << " ; " << getUid() << " (" << getSubclassIDStr(SubclassID) << ")"; -} - -void Value::printAsOperandCommon(raw_ostream &OS) const { - if (Val) - Val->printAsOperand(OS); - else - OS << "NULL "; -} - -void Value::dump() const { - dumpOS(dbgs()); - dbgs() << "\n"; -} - void Argument::printAsOperand(raw_ostream &OS) const { printAsOperandCommon(OS); } diff --git a/llvm/lib/SandboxIR/Value.cpp b/llvm/lib/SandboxIR/Value.cpp new file mode 100644 index 0000000000000..40cf14c7e9b6f --- /dev/null +++ b/llvm/lib/SandboxIR/Value.cpp @@ -0,0 +1,122 @@ +//===- Value.cpp - The Value class of Sandbox IR --------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "llvm/SandboxIR/Value.h" +#include "llvm/SandboxIR/Context.h" +#include "llvm/SandboxIR/SandboxIR.h" +#include + +namespace llvm::sandboxir { + +Value::Value(ClassID SubclassID, llvm::Value *Val, Context &Ctx) + : SubclassID(SubclassID), Val(Val), Ctx(Ctx) { +#ifndef NDEBUG + UID = Ctx.getNumValues(); +#endif +} + +Value::use_iterator Value::use_begin() { + llvm::Use *LLVMUse = nullptr; + if (Val->use_begin() != Val->use_end()) + LLVMUse = &*Val->use_begin(); + User *User = LLVMUse != nullptr ? cast_or_null(Ctx.getValue( + Val->use_begin()->getUser())) + : nullptr; + return use_iterator(Use(LLVMUse, User, Ctx)); +} + +Value::user_iterator Value::user_begin() { + auto UseBegin = Val->use_begin(); + auto UseEnd = Val->use_end(); + bool AtEnd = UseBegin == UseEnd; + llvm::Use *LLVMUse = AtEnd ? nullptr : &*UseBegin; + User *User = + AtEnd ? nullptr + : cast_or_null(Ctx.getValue(&*LLVMUse->getUser())); + return user_iterator(Use(LLVMUse, User, Ctx), UseToUser()); +} + +unsigned Value::getNumUses() const { return range_size(Val->users()); } + +Type *Value::getType() const { return Ctx.getType(Val->getType()); } + +void Value::replaceUsesWithIf( + Value *OtherV, llvm::function_ref ShouldReplace) { + assert(getType() == OtherV->getType() && "Can't replace with different type"); + llvm::Value *OtherVal = OtherV->Val; + // We are delegating RUWIf to LLVM IR's RUWIf. + Val->replaceUsesWithIf( + OtherVal, [&ShouldReplace, this](llvm::Use &LLVMUse) -> bool { + User *DstU = cast_or_null(Ctx.getValue(LLVMUse.getUser())); + if (DstU == nullptr) + return false; + Use UseToReplace(&LLVMUse, DstU, Ctx); + if (!ShouldReplace(UseToReplace)) + return false; + Ctx.getTracker().emplaceIfTracking(UseToReplace); + return true; + }); +} + +void Value::replaceAllUsesWith(Value *Other) { + assert(getType() == Other->getType() && + "Replacing with Value of different type!"); + auto &Tracker = Ctx.getTracker(); + if (Tracker.isTracking()) { + for (auto Use : uses()) + Tracker.track(std::make_unique(Use)); + } + // We are delegating RAUW to LLVM IR's RAUW. + Val->replaceAllUsesWith(Other->Val); +} + +#ifndef NDEBUG +std::string Value::getUid() const { + std::stringstream SS; + SS << "SB" << UID << "."; + return SS.str(); +} + +void Value::dumpCommonHeader(raw_ostream &OS) const { + OS << getUid() << " " << getSubclassIDStr(SubclassID) << " "; +} + +void Value::dumpCommonFooter(raw_ostream &OS) const { + OS.indent(2) << "Val: "; + if (Val) + OS << *Val; + else + OS << "NULL"; + OS << "\n"; +} + +void Value::dumpCommonPrefix(raw_ostream &OS) const { + if (Val) + OS << *Val; + else + OS << "NULL "; +} + +void Value::dumpCommonSuffix(raw_ostream &OS) const { + OS << " ; " << getUid() << " (" << getSubclassIDStr(SubclassID) << ")"; +} + +void Value::printAsOperandCommon(raw_ostream &OS) const { + if (Val) + Val->printAsOperand(OS); + else + OS << "NULL "; +} + +void Value::dump() const { + dumpOS(dbgs()); + dbgs() << "\n"; +} +#endif // NDEBUG + +} // namespace llvm::sandboxir From d4d38bcc3931d28d8b97d055258e27772119d0fe Mon Sep 17 00:00:00 2001 From: LLVM GN Syncbot Date: Thu, 26 Sep 2024 18:47:20 +0000 Subject: [PATCH 07/13] [gn build] Port c5b417c4f604 --- llvm/utils/gn/secondary/llvm/lib/SandboxIR/BUILD.gn | 1 + 1 file changed, 1 insertion(+) diff --git a/llvm/utils/gn/secondary/llvm/lib/SandboxIR/BUILD.gn b/llvm/utils/gn/secondary/llvm/lib/SandboxIR/BUILD.gn index aa3e6f08ab6d3..5f15e9ff1d9e5 100644 --- a/llvm/utils/gn/secondary/llvm/lib/SandboxIR/BUILD.gn +++ b/llvm/utils/gn/secondary/llvm/lib/SandboxIR/BUILD.gn @@ -13,5 +13,6 @@ static_library("SandboxIR") { "SandboxIR.cpp", "Tracker.cpp", "Type.cpp", + "Value.cpp", ] } From 8ea2b417419344182053c0726cfff184d7917498 Mon Sep 17 00:00:00 2001 From: Tarun Prabhu Date: Thu, 26 Sep 2024 12:59:02 -0600 Subject: [PATCH 08/13] [flang][Driver] Support -fdiagnostics-color Add support for -fdiagnostics-color and -fdiagnostics-color=. Add documentation for -fdiagnostics-color= which should also be visible in clang. Partially addresses requests in #89888 --- clang/include/clang/Driver/Options.td | 11 ++++-- clang/lib/Driver/ToolChains/Clang.cpp | 16 +-------- clang/lib/Driver/ToolChains/CommonArgs.cpp | 19 ++++++++++ clang/lib/Driver/ToolChains/CommonArgs.h | 4 +++ clang/lib/Driver/ToolChains/Flang.cpp | 8 +---- .../Driver/color-diagnostics-forwarding.f90 | 36 +++++++++++++++++-- flang/test/Driver/color-diagnostics-parse.f90 | 14 ++++++-- flang/test/Driver/color-diagnostics-scan.f | 15 ++++++-- flang/test/Driver/color-diagnostics-sema.f90 | 15 ++++++-- flang/test/Driver/color-diagnostics.f90 | 28 +++++++++++++-- 10 files changed, 130 insertions(+), 36 deletions(-) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 3f4d1a328b4c2..932cf13edab53 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -1975,10 +1975,15 @@ def fno_color_diagnostics : Flag<["-"], "fno-color-diagnostics">, Group Visibility<[ClangOption, CLOption, DXCOption, FlangOption]>, HelpText<"Disable colors in diagnostics">; def : Flag<["-"], "fdiagnostics-color">, Group, - Visibility<[ClangOption, CLOption, DXCOption]>, Alias; + Visibility<[ClangOption, CLOption, DXCOption, FlangOption]>, + Alias; def : Flag<["-"], "fno-diagnostics-color">, Group, - Visibility<[ClangOption, CLOption, DXCOption]>, Alias; -def fdiagnostics_color_EQ : Joined<["-"], "fdiagnostics-color=">, Group; + Visibility<[ClangOption, CLOption, DXCOption, FlangOption]>, + Alias; +def fdiagnostics_color_EQ : Joined<["-"], "fdiagnostics-color=">, Group, + Visibility<[ClangOption, CLOption, DXCOption, FlangOption]>, + Values<"auto,always,never">, + HelpText<"When to use colors in diagnostics">; def fansi_escape_codes : Flag<["-"], "fansi-escape-codes">, Group, Visibility<[ClangOption, CLOption, DXCOption, CC1Option]>, HelpText<"Use ANSI escape codes for diagnostics">, diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index cbcc3b86d71b0..b9987288d82d1 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -4424,21 +4424,7 @@ static void RenderDiagnosticsOptions(const Driver &D, const ArgList &Args, CmdArgs.push_back("-fno-diagnostics-show-note-include-stack"); } - // Color diagnostics are parsed by the driver directly from argv and later - // re-parsed to construct this job; claim any possible color diagnostic here - // to avoid warn_drv_unused_argument and diagnose bad - // OPT_fdiagnostics_color_EQ values. - Args.getLastArg(options::OPT_fcolor_diagnostics, - options::OPT_fno_color_diagnostics); - if (const Arg *A = Args.getLastArg(options::OPT_fdiagnostics_color_EQ)) { - StringRef Value(A->getValue()); - if (Value != "always" && Value != "never" && Value != "auto") - D.Diag(diag::err_drv_invalid_argument_to_option) - << Value << A->getOption().getName(); - } - - if (D.getDiags().getDiagnosticOptions().ShowColors) - CmdArgs.push_back("-fcolor-diagnostics"); + handleColorDiagnosticsArgs(D, Args, CmdArgs); if (Args.hasArg(options::OPT_fansi_escape_codes)) CmdArgs.push_back("-fansi-escape-codes"); diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 043d9e4876443..0c6a585c3acff 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -2960,3 +2960,22 @@ void tools::addMCModel(const Driver &D, const llvm::opt::ArgList &Args, } } } + +void tools::handleColorDiagnosticsArgs(const Driver &D, const ArgList &Args, + ArgStringList &CmdArgs) { + // Color diagnostics are parsed by the driver directly from argv and later + // re-parsed to construct this job; claim any possible color diagnostic here + // to avoid warn_drv_unused_argument and diagnose bad + // OPT_fdiagnostics_color_EQ values. + Args.getLastArg(options::OPT_fcolor_diagnostics, + options::OPT_fno_color_diagnostics); + if (const Arg *A = Args.getLastArg(options::OPT_fdiagnostics_color_EQ)) { + StringRef Value(A->getValue()); + if (Value != "always" && Value != "never" && Value != "auto") + D.Diag(diag::err_drv_invalid_argument_to_option) + << Value << A->getOption().getName(); + } + + if (D.getDiags().getDiagnosticOptions().ShowColors) + CmdArgs.push_back("-fcolor-diagnostics"); +} diff --git a/clang/lib/Driver/ToolChains/CommonArgs.h b/clang/lib/Driver/ToolChains/CommonArgs.h index 8695d3fe5b55b..eff21b210b424 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.h +++ b/clang/lib/Driver/ToolChains/CommonArgs.h @@ -233,6 +233,10 @@ void addMCModel(const Driver &D, const llvm::opt::ArgList &Args, const llvm::Reloc::Model &RelocationModel, llvm::opt::ArgStringList &CmdArgs); +/// Handle the -f{no}-color-diagnostics and -f{no}-diagnostics-colors options. +void handleColorDiagnosticsArgs(const Driver &D, const llvm::opt::ArgList &Args, + llvm::opt::ArgStringList &CmdArgs); + } // end namespace tools } // end namespace driver } // end namespace clang diff --git a/clang/lib/Driver/ToolChains/Flang.cpp b/clang/lib/Driver/ToolChains/Flang.cpp index 6ce79d27e98c4..98350690f8d20 100644 --- a/clang/lib/Driver/ToolChains/Flang.cpp +++ b/clang/lib/Driver/ToolChains/Flang.cpp @@ -727,13 +727,7 @@ void Flang::ConstructJob(Compilation &C, const JobAction &JA, addFortranDialectOptions(Args, CmdArgs); - // Color diagnostics are parsed by the driver directly from argv and later - // re-parsed to construct this job; claim any possible color diagnostic here - // to avoid warn_drv_unused_argument. - Args.getLastArg(options::OPT_fcolor_diagnostics, - options::OPT_fno_color_diagnostics); - if (Diags.getDiagnosticOptions().ShowColors) - CmdArgs.push_back("-fcolor-diagnostics"); + handleColorDiagnosticsArgs(D, Args, CmdArgs); // LTO mode is parsed by the Clang driver library. LTOKind LTOMode = D.getLTOMode(); diff --git a/flang/test/Driver/color-diagnostics-forwarding.f90 b/flang/test/Driver/color-diagnostics-forwarding.f90 index daef17cb75787..368fa8834142a 100644 --- a/flang/test/Driver/color-diagnostics-forwarding.f90 +++ b/flang/test/Driver/color-diagnostics-forwarding.f90 @@ -1,21 +1,53 @@ -! Test that flang-new forwards -f{no-}color-diagnostics options to -! flang-new -fc1 as expected. +! Test that flang-new forwards -f{no-}color-diagnostics and +! -f{no-}diagnostics-color options to flang-new -fc1 as expected. ! RUN: %flang -fsyntax-only -### %s -o %t 2>&1 -fcolor-diagnostics \ ! RUN: | FileCheck %s --check-prefix=CHECK-CD +! RUN: %flang -fsyntax-only -### %s -o %t 2>&1 -fdiagnostics-color \ +! RUN: | FileCheck %s --check-prefix=CHECK-CD +! RUN: %flang -fsyntax-only -### %s -o %t 2>&1 -fdiagnostics-color=always \ +! RUN: | FileCheck %s --check-prefix=CHECK-CD ! CHECK-CD: "-fc1"{{.*}} "-fcolor-diagnostics" ! RUN: %flang -fsyntax-only -### %s -o %t 2>&1 -fno-color-diagnostics \ ! RUN: | FileCheck %s --check-prefix=CHECK-NCD +! RUN: %flang -fsyntax-only -### %s -o %t -fno-diagnostics-color 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK-NCD +! RUN: %flang -fsyntax-only -### %s -o %t 2>&1 -fdiagnostics-color=never \ +! RUN: | FileCheck %s --check-prefix=CHECK-NCD ! CHECK-NCD-NOT: "-fc1"{{.*}} "-fcolor-diagnostics" ! Check that the last flag wins. ! RUN: %flang -fsyntax-only -### %s -o %t 2>&1 \ ! RUN: -fno-color-diagnostics -fcolor-diagnostics \ ! RUN: | FileCheck %s --check-prefix=CHECK-NCD_CD_S +! RUN: %flang -fsyntax-only -### %s -o %t 2>&1 \ +! RUN: -fno-diagnostics-color -fdiagnostics-color \ +! RUN: | FileCheck %s --check-prefix=CHECK-NCD_CD_S +! RUN: %flang -fsyntax-only -### %s -o %t \ +! RUN: -fno-color-diagnostics -fdiagnostics-color=always 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK-NCD_CD_S +! RUN: %flang -fsyntax-only -### %s -o %t \ +! RUN: -fdiagnostics-color=never -fdiagnostics-color=always 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK-NCD_CD_S +! RUN: %flang -fsyntax-only -### %s -o %t \ +! RUN: -fdiagnostics-color=never -fcolor-diagnostics 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK-NCD_CD_S ! CHECK-NCD_CD_S: "-fc1"{{.*}} "-fcolor-diagnostics" ! RUN: %flang -fsyntax-only -### %s -o %t 2>&1 \ ! RUN: -fcolor-diagnostics -fno-color-diagnostics \ ! RUN: | FileCheck %s --check-prefix=CHECK-CD_NCD_S +! RUN: %flang -fsyntax-only -### %s -o %t \ +! RUN: -fdiagnostics-color -fno-diagnostics-color 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK-CD_NCD_S +! RUN: %flang -fsyntax-only -### %s -o %t \ +! RUN: -fdiagnostics-color=always -fno-color-diagnostics 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK-CD_NCD_S +! RUN: %flang -fsyntax-only -### %s -o %t \ +! RUN: -fdiagnostics-color=always -fdiagnostics-color=never 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK-CD_NCD_S +! RUN: %flang -fsyntax-only -### %s -o %t \ +! RUN: -fcolor-diagnostics -fdiagnostics-color=never 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK-CD_NCD_S ! CHECK-CD_NCD_S-NOT: "-fc1"{{.*}} "-fcolor-diagnostics" diff --git a/flang/test/Driver/color-diagnostics-parse.f90 b/flang/test/Driver/color-diagnostics-parse.f90 index 11a1c7b57c9e2..3682224ac9525 100644 --- a/flang/test/Driver/color-diagnostics-parse.f90 +++ b/flang/test/Driver/color-diagnostics-parse.f90 @@ -1,12 +1,22 @@ -! Test the behaviors of -f{no-}color-diagnostics when emitting parsing -! diagnostics. +! Test the behaviors of -f{no-}color-diagnostics and -f{no-}diagnostics-color +! when emitting parsing diagnostics. ! Windows command prompt doesn't support ANSI escape sequences. ! REQUIRES: shell ! RUN: not %flang %s -fcolor-diagnostics 2>&1 \ ! RUN: | FileCheck %s --check-prefix=CHECK_CD +! RUN: not %flang %s -fdiagnostics-color 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK_CD +! RUN: not %flang %s -fdiagnostics-color=always 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK_CD + ! RUN: not %flang %s -fno-color-diagnostics 2>&1 \ ! RUN: | FileCheck %s --check-prefix=CHECK_NCD +! RUN: not %flang %s -fno-diagnostics-color 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK_NCD +! RUN: not %flang %s -fdiagnostics-color=never 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK_NCD + ! RUN: not %flang_fc1 %s -fcolor-diagnostics 2>&1 \ ! RUN: | FileCheck %s --check-prefix=CHECK_CD ! RUN: not %flang_fc1 %s 2>&1 | FileCheck %s --check-prefix=CHECK_NCD diff --git a/flang/test/Driver/color-diagnostics-scan.f b/flang/test/Driver/color-diagnostics-scan.f index d901d77adaf8f..29d4635b4fb03 100644 --- a/flang/test/Driver/color-diagnostics-scan.f +++ b/flang/test/Driver/color-diagnostics-scan.f @@ -1,5 +1,5 @@ -! Test the behaviors of -f{no-}color-diagnostics when emitting scanning -! diagnostics. +! Test the behaviors of -f{no-}color-diagnostics and -f{no}-diagnostic-colors +! when emitting scanning diagnostics. ! Windows command prompt doesn't support ANSI escape sequences. ! REQUIRES: shell @@ -9,6 +9,17 @@ ! RUN: | FileCheck %s --check-prefix=CHECK_NCD ! RUN: not %flang_fc1 -E -Werror %s -fcolor-diagnostics 2>&1 \ ! RUN: | FileCheck %s --check-prefix=CHECK_CD + +! RUN: not %flang %s -E -Werror -fdiagnostics-color 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK_CD +! RUN: not %flang %s -E -Werror -fno-diagnostics-color 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK_NCD + +! RUN: not %flang %s -E -Werror -fdiagnostics-color=always 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK_CD +! RUN: not %flang %s -E -Werror -fdiagnostics-color=never 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK_NCD + ! RUN: not %flang_fc1 -E -Werror %s 2>&1 | FileCheck %s --check-prefix=CHECK_NCD ! CHECK_CD: {{.*}}[0;1;35mwarning: {{.*}}[0mCharacter in fixed-form label field must be a digit diff --git a/flang/test/Driver/color-diagnostics-sema.f90 b/flang/test/Driver/color-diagnostics-sema.f90 index df7a69f297f12..ca87b196a82f0 100644 --- a/flang/test/Driver/color-diagnostics-sema.f90 +++ b/flang/test/Driver/color-diagnostics-sema.f90 @@ -1,5 +1,5 @@ -! Test the behaviors of -f{no-}color-diagnostics when emitting semantic -! diagnostics. +! Test the behaviors of -f{no-}color-diagnostics and -f{no}diagnostics-color +! when emitting semantic diagnostics. ! Windows command prompt doesn't support ANSI escape sequences. ! REQUIRES: shell @@ -9,6 +9,17 @@ ! RUN: | FileCheck %s --check-prefix=CHECK_NCD ! RUN: not %flang_fc1 %s -fcolor-diagnostics 2>&1 \ ! RUN: | FileCheck %s --check-prefix=CHECK_CD + +! RUN: not %flang %s -fdiagnostics-color 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK_CD +! RUN: not %flang %s -fno-diagnostics-color 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK_NCD + +! RUN: not %flang %s -fdiagnostics-color=always 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK_CD +! RUN: not %flang %s -fdiagnostics-color=never 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK_NCD + ! RUN: not %flang_fc1 %s 2>&1 | FileCheck %s --check-prefix=CHECK_NCD ! CHECK_CD: {{.*}}[0;1;31merror: {{.*}}[0mMust be a constant value diff --git a/flang/test/Driver/color-diagnostics.f90 b/flang/test/Driver/color-diagnostics.f90 index 2d18196d0af73..cbb6bf74f97f7 100644 --- a/flang/test/Driver/color-diagnostics.f90 +++ b/flang/test/Driver/color-diagnostics.f90 @@ -1,4 +1,4 @@ -! Test the behaviors of -f{no-}color-diagnostics. +! Test the behaviors of -f{no-}color-diagnostics and -f{no}-diagnostics-color. ! Windows command prompt doesn't support ANSI escape sequences. ! REQUIRES: shell @@ -9,14 +9,36 @@ ! RUN: not %flang_fc1 %s -fcolor-diagnostics 2>&1 \ ! RUN: | FileCheck %s --check-prefix=CHECK_CD ! RUN: not %flang_fc1 %s -fno-color-diagnostics 2>&1 \ -! RUN: | FileCheck %s --check-prefix=UNSUPPORTED_OPTION +! RUN: | FileCheck %s --check-prefix=UNSUPPORTED_COLOR_DIAGS + +! RUN: not %flang %s -fdiagnostics-color 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK_CD +! RUN: not %flang %s -fno-diagnostics-color 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK_NCD +! RUN: not %flang_fc1 %s -fdiagnostics-color 2>&1 \ +! RUN: | FileCheck %s --check-prefix=UNSUPPORTED_DIAGS_COLOR +! RUN: not %flang_fc1 %s -fno-diagnostics-color 2>&1 \ +! RUN: | FileCheck %s --check-prefix=UNSUPPORTED_NO_DIAGS_COLOR + +! RUN: not %flang %s -fdiagnostics-color=always 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK_CD +! RUN: not %flang %s -fdiagnostics-color=never 2>&1 \ +! RUN: | FileCheck %s --check-prefix=CHECK_NCD + ! RUN: not %flang_fc1 %s 2>&1 | FileCheck %s --check-prefix=CHECK_NCD ! CHECK_CD: {{.*}}[0;1;31merror: {{.*}}[0m{{.*}}[1mSemantic errors in {{.*}}color-diagnostics.f90{{.*}}[0m ! CHECK_NCD: Semantic errors in {{.*}}color-diagnostics.f90 -! UNSUPPORTED_OPTION: error: unknown argument: '-fno-color-diagnostics' +! UNSUPPORTED_COLOR_DIAGS: error: unknown argument: '-fno-color-diagnostics' +! UNSUPPORTED_DIAGS_COLOR: error: unknown argument: '-fdiagnostics-color' +! UNSUPPORTED_NO_DIAGS_COLOR: error: unknown argument: '-fno-diagnostics-color' + +! Check that invalid values of -fdiagnostics-color= are disallowed. +! RUN: not %flang %s -fdiagnostics-color=sometimes 2>&1 \ +! RUN: | FileCheck %s --check-prefix=DCEQ_BAD +! DCEQ_BAD: error: invalid argument 'sometimes' to -fdiagnostics-color= program m integer :: i = k From 0cf844759add057f76ca72a611e692eea191c7b7 Mon Sep 17 00:00:00 2001 From: Prashant Kumar Date: Fri, 27 Sep 2024 00:37:08 +0530 Subject: [PATCH 09/13] [MLIR][SCF] Fold dim ops of iter_args to respective init_args (#109973) Fold dim ops of iter_args to dim ops of their respective init args. E.g.: ``` %0 = ... : tensor scf.forall ... shared_outs(%arg0 = %0) -> (tensor) { %1 = tensor.dim %arg0, %c0 : tensor ... } ``` is folded to: ``` %0 = ... : tensor scf.forall ... shared_outs(%arg0 = %0) -> (tensor) { %1 = tensor.dim %0, %c0 : tensor ... } ``` --- .../ResolveShapedTypeResultDims.cpp | 42 ++++++++++++++++++- mlir/test/Dialect/MemRef/resolve-dim-ops.mlir | 28 +++++++++++++ 2 files changed, 68 insertions(+), 2 deletions(-) diff --git a/mlir/lib/Dialect/MemRef/Transforms/ResolveShapedTypeResultDims.cpp b/mlir/lib/Dialect/MemRef/Transforms/ResolveShapedTypeResultDims.cpp index 0cb5931ce6bf9..fb2921fec9f79 100644 --- a/mlir/lib/Dialect/MemRef/Transforms/ResolveShapedTypeResultDims.cpp +++ b/mlir/lib/Dialect/MemRef/Transforms/ResolveShapedTypeResultDims.cpp @@ -103,6 +103,44 @@ struct DimOfReifyRankedShapedTypeOpInterface : public OpRewritePattern { return success(); } }; + +/// Fold dim ops of iter_args to dim ops of their respective init args. E.g.: +/// +/// ``` +/// %0 = ... : tensor +/// scf.forall ... shared_outs(%arg0 = %0) -> (tensor) { +/// %1 = tensor.dim %arg0, %c0 : tensor +/// ... +/// } +/// ``` +/// +/// is folded to: +/// +/// ``` +/// %0 = ... : tensor +/// scf.forall ... shared_outs(%arg0 = %0) -> (tensor) { +/// %1 = tensor.dim %0, %c0 : tensor +/// ... +/// } +/// ``` +struct IterArgsToInitArgs : public OpRewritePattern { + using OpRewritePattern::OpRewritePattern; + + LogicalResult matchAndRewrite(tensor::DimOp dimOp, + PatternRewriter &rewriter) const final { + auto blockArg = dyn_cast(dimOp.getSource()); + if (!blockArg) + return failure(); + auto loopLikeOp = + dyn_cast(blockArg.getParentBlock()->getParentOp()); + if (!loopLikeOp) + return failure(); + Value initArg = loopLikeOp.getTiedLoopInit(blockArg)->get(); + rewriter.modifyOpInPlace( + dimOp, [&]() { dimOp.getSourceMutable().assign(initArg); }); + return success(); + } +}; } // namespace //===----------------------------------------------------------------------===// @@ -127,8 +165,8 @@ struct ResolveShapedTypeResultDimsPass final void memref::populateResolveRankedShapedTypeResultDimsPatterns( RewritePatternSet &patterns) { patterns.add, - DimOfReifyRankedShapedTypeOpInterface>( - patterns.getContext()); + DimOfReifyRankedShapedTypeOpInterface, + IterArgsToInitArgs>(patterns.getContext()); } void memref::populateResolveShapedTypeResultDimsPatterns( diff --git a/mlir/test/Dialect/MemRef/resolve-dim-ops.mlir b/mlir/test/Dialect/MemRef/resolve-dim-ops.mlir index 85a4853972457..ef8b80f6b5c22 100644 --- a/mlir/test/Dialect/MemRef/resolve-dim-ops.mlir +++ b/mlir/test/Dialect/MemRef/resolve-dim-ops.mlir @@ -71,3 +71,31 @@ func.func @dim_of_memref_expand_shape(%arg0: memref) %1 = memref.dim %0, %c1 : memref<1x?x2x4xi32> return %1 : index } + +// ----- + +// CHECK-LABEL: @iter_to_init_arg_loop_like +// CHECK-SAME: (%[[ARG0:.*]]: tensor, %[[ARG1:.*]]: tensor) -> tensor { +// CHECK: %[[RESULT:.*]] = scf.forall +// CHECK-SAME: shared_outs(%[[OUTS:.*]] = %[[ARG1]]) -> (tensor) { +// CHECK-NEXT: %{{.*}} = tensor.dim %[[ARG1]], %{{.*}} : tensor +func.func @iter_to_init_arg_loop_like( + %arg0 : tensor, %arg1: tensor) -> tensor { + %c0 = arith.constant 0 : index + %c1 = arith.constant 1 : index + %dim0 = tensor.dim %arg0, %c0 : tensor + + %result = scf.forall (%i) = (%c0) to (%dim0) + step (%c1) shared_outs(%o = %arg1) -> (tensor) { + + %dim1 = tensor.dim %o, %c1 : tensor + %slice = tensor.extract_slice %arg1[%i, 0] [1, %dim1] [1, 1] + : tensor to tensor<1x?xf32> + + scf.forall.in_parallel { + tensor.parallel_insert_slice %slice into %o[%i, 0] [1, %dim1] [1, 1] + : tensor<1x?xf32> into tensor + } + } + return %result : tensor +} From e08938280ad1d6a79785919bf89c2b670d379055 Mon Sep 17 00:00:00 2001 From: Lenny Truong Date: Thu, 26 Sep 2024 12:09:51 -0700 Subject: [PATCH 10/13] [MLIR] Add MLIRConversionPassIncGen to cmake deps for FrozenRewritePatternSet (#110054) Fixes missing header in downstream circt python wheel build (e.g. https://github.com/llvm/circt/actions/runs/11022589675/job/30612234430). Confirmed by * https://github.com/llvm/circt/actions/runs/11040046220/job/30667073462 * https://github.com/llvm/circt/commit/0646e7e9276ff9bf6e7561c399fbe8c3431b509a --- mlir/lib/Rewrite/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/mlir/lib/Rewrite/CMakeLists.txt b/mlir/lib/Rewrite/CMakeLists.txt index a6c39406aa4b3..15b3739e4c633 100644 --- a/mlir/lib/Rewrite/CMakeLists.txt +++ b/mlir/lib/Rewrite/CMakeLists.txt @@ -9,6 +9,7 @@ add_mlir_library(MLIRRewrite DEPENDS mlir-generic-headers + MLIRConversionPassIncGen LINK_LIBS PUBLIC MLIRIR From 97f0f5b574d36e3252966c455cfb3a687b4f5325 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Thu, 26 Sep 2024 12:10:26 -0700 Subject: [PATCH 11/13] [MC, NVPTX] Fix warnings This patch fixes: llvm/include/llvm/MC/MCRegisterInfo.h:146:7: error: 'llvm::MCRegisterInfo' has virtual functions but non-virtual destructor [-Werror,-Wnon-virtual-dtor] llvm/lib/Target/NVPTX/NVPTXRegisterInfo.cpp:163:21: error: comparison of integers of different signs: 'int' and 'size_type' (aka 'unsigned long') [-Werror,-Wsign-compare] --- llvm/include/llvm/MC/MCRegisterInfo.h | 2 ++ llvm/lib/Target/NVPTX/NVPTXRegisterInfo.cpp | 7 ++----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/llvm/include/llvm/MC/MCRegisterInfo.h b/llvm/include/llvm/MC/MCRegisterInfo.h index 8a6f9fce97e30..6db42878d2e52 100644 --- a/llvm/include/llvm/MC/MCRegisterInfo.h +++ b/llvm/include/llvm/MC/MCRegisterInfo.h @@ -268,6 +268,8 @@ class MCRegisterInfo { friend class MCRegUnitRootIterator; friend class MCRegAliasIterator; + virtual ~MCRegisterInfo() {} + /// Initialize MCRegisterInfo, called by TableGen /// auto-generated routines. *DO NOT USE*. void InitMCRegisterInfo(const MCRegisterDesc *D, unsigned NR, unsigned RA, diff --git a/llvm/lib/Target/NVPTX/NVPTXRegisterInfo.cpp b/llvm/lib/Target/NVPTX/NVPTXRegisterInfo.cpp index 97673f78685f5..c30372fed1832 100644 --- a/llvm/lib/Target/NVPTX/NVPTXRegisterInfo.cpp +++ b/llvm/lib/Target/NVPTX/NVPTXRegisterInfo.cpp @@ -160,11 +160,8 @@ static uint64_t encodeRegisterForDwarf(std::string registerName) { // number, which is stored in ULEB128, but in practice must be no more than 8 // bytes (excluding null terminator, which is not included). uint64_t result = 0; - for (int i = 0; i < registerName.length(); ++i) { - result = result << 8; - unsigned char c = registerName[i]; - result |= c; - } + for (unsigned char c : registerName) + result = (result << 8) | c; return result; } From a285ba7529feaa7c49890e314facb5e9f4d8dc11 Mon Sep 17 00:00:00 2001 From: Han-Chung Wang Date: Thu, 26 Sep 2024 12:44:43 -0700 Subject: [PATCH 12/13] Revert "[mlir][tensor] Refine the semantics of `createPadHighOp`" (#110153) --- mlir/include/mlir/Dialect/Tensor/Utils/Utils.h | 8 ++++---- mlir/lib/Dialect/Tensor/Utils/Utils.cpp | 11 +++-------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/mlir/include/mlir/Dialect/Tensor/Utils/Utils.h b/mlir/include/mlir/Dialect/Tensor/Utils/Utils.h index e63749eb38431..84d06d456bb68 100644 --- a/mlir/include/mlir/Dialect/Tensor/Utils/Utils.h +++ b/mlir/include/mlir/Dialect/Tensor/Utils/Utils.h @@ -14,10 +14,10 @@ namespace mlir { namespace tensor { -// Return a PadOp that pads `source` to `type` size. Output sizes (from `type`) -// are assumed to be static and greater than the potentially dynamic input sizes -// (from `source). The op performs "high" padding (i.e. it adds trailing padding -// values until the desired size is met). +// Return a PadOp that pads `source` to `type` size where the static +// sizes are assumed to be greater than the dynamic sizes. If `type` has dynamic +// dimensions the padding width is set to zero. The op performs "high" padding +// (i.e. it adds trailing padding values until the desired size is met). PadOp createPadHighOp(RankedTensorType type, Value source, Value pad, bool nofold, Location loc, OpBuilder &builder); diff --git a/mlir/lib/Dialect/Tensor/Utils/Utils.cpp b/mlir/lib/Dialect/Tensor/Utils/Utils.cpp index 0cb16c28b829c..a0d8a08fc6ba4 100644 --- a/mlir/lib/Dialect/Tensor/Utils/Utils.cpp +++ b/mlir/lib/Dialect/Tensor/Utils/Utils.cpp @@ -24,17 +24,12 @@ using namespace mlir::tensor; PadOp mlir::tensor::createPadHighOp(RankedTensorType type, Value source, Value pad, bool nofold, Location loc, OpBuilder &b) { - - // TODO: Either relax or turn this into a failure - assert(!ShapedType::isDynamicShape(type.getShape()) && - "The output type is dynamic - that's not supported ATM."); - - // Init "low" and "high" padding values ("low" is kept as is, "high" is - // computed below). SmallVector low(type.getRank(), b.getIndexAttr(0)); SmallVector high(type.getRank(), b.getIndexAttr(0)); - for (const auto &en : enumerate(type.getShape())) { + // Pad only the static dimensions of the result tensor type. + if (ShapedType::isDynamic(en.value())) + continue; // Compute the padding width. AffineExpr d0; bindDims(b.getContext(), d0); From be6aed90c70b7ef718c6c9217158933c8dd57372 Mon Sep 17 00:00:00 2001 From: Alexey Bataev Date: Thu, 26 Sep 2024 13:04:51 -0700 Subject: [PATCH 13/13] [SLP]Use number of scalars as a vector length for minbw cast Need to use the number of scalars, not the vector factor of the node. Otherwise incorrect casting can be estimated, leading to a compiler crash. --- .../Transforms/Vectorize/SLPVectorizer.cpp | 3 +- .../AArch64/minbitwidth-cast-node-length.ll | 274 ++++++++++++++++++ 2 files changed, 275 insertions(+), 2 deletions(-) create mode 100644 llvm/test/Transforms/SLPVectorizer/AArch64/minbitwidth-cast-node-length.ll diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp index 53d7ae606ffee..48a8627ab63e0 100644 --- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp +++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp @@ -10357,8 +10357,7 @@ BoUpSLP::getEntryCost(const TreeEntry *E, ArrayRef VectorizedVals, unsigned BWSz = DL->getTypeSizeInBits(ScalarTy); unsigned SrcBWSz = DL->getTypeSizeInBits(UserScalarTy); unsigned VecOpcode; - auto *UserVecTy = - getWidenedType(UserScalarTy, E->getVectorFactor()); + auto *UserVecTy = getWidenedType(UserScalarTy, E->Scalars.size()); if (BWSz > SrcBWSz) VecOpcode = Instruction::Trunc; else diff --git a/llvm/test/Transforms/SLPVectorizer/AArch64/minbitwidth-cast-node-length.ll b/llvm/test/Transforms/SLPVectorizer/AArch64/minbitwidth-cast-node-length.ll new file mode 100644 index 0000000000000..877c06ab7bcde --- /dev/null +++ b/llvm/test/Transforms/SLPVectorizer/AArch64/minbitwidth-cast-node-length.ll @@ -0,0 +1,274 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5 +; RUN: opt -S --passes=slp-vectorizer -mtriple=arm64-apple-macosx11.0.0 < %s | FileCheck %s + +define void @test(ptr %pDst, i32 %stride, i8 %0, ptr %p1, ptr %p2, ptr %p4, ptr %p3) { +; CHECK-LABEL: define void @test( +; CHECK-SAME: ptr [[PDST:%.*]], i32 [[STRIDE:%.*]], i8 [[TMP0:%.*]], ptr [[P1:%.*]], ptr [[P2:%.*]], ptr [[P4:%.*]], ptr [[P3:%.*]]) { +; CHECK-NEXT: [[ENTRY:.*:]] +; CHECK-NEXT: [[MUL100:%.*]] = mul i32 [[STRIDE]], 9 +; CHECK-NEXT: [[MUL101:%.*]] = mul i32 [[STRIDE]], 7 +; CHECK-NEXT: [[MUL102:%.*]] = mul i32 [[STRIDE]], 5 +; CHECK-NEXT: [[MUL103:%.*]] = mul i32 [[STRIDE]], 3 +; CHECK-NEXT: [[CONV111:%.*]] = zext i8 [[TMP0]] to i32 +; CHECK-NEXT: [[MUL112:%.*]] = mul i32 [[CONV111]], 14 +; CHECK-NEXT: [[CONV117:%.*]] = zext i8 [[TMP0]] to i32 +; CHECK-NEXT: [[MUL118:%.*]] = mul i32 [[CONV117]], 14 +; CHECK-NEXT: [[CONV124:%.*]] = zext i8 [[TMP0]] to i32 +; CHECK-NEXT: [[MUL125:%.*]] = mul i32 [[CONV124]], 14 +; CHECK-NEXT: [[CONV131:%.*]] = zext i8 [[TMP0]] to i32 +; CHECK-NEXT: [[MUL132:%.*]] = mul i32 [[CONV131]], 14 +; CHECK-NEXT: [[CMP139:%.*]] = icmp uge i32 [[MUL112]], [[MUL100]] +; CHECK-NEXT: [[CMP142:%.*]] = icmp uge i32 [[MUL112]], [[MUL101]] +; CHECK-NEXT: [[ADD1441:%.*]] = or i1 [[CMP139]], [[CMP142]] +; CHECK-NEXT: [[CMP145:%.*]] = icmp uge i32 [[MUL112]], [[MUL102]] +; CHECK-NEXT: [[ADD1472:%.*]] = or i1 [[ADD1441]], [[CMP145]] +; CHECK-NEXT: [[CMP148:%.*]] = icmp uge i32 [[MUL112]], [[MUL103]] +; CHECK-NEXT: [[ADD1504:%.*]] = or i1 [[ADD1472]], [[CMP148]] +; CHECK-NEXT: [[ADD151:%.*]] = zext i1 [[ADD1504]] to i64 +; CHECK-NEXT: [[ARRAYIDX156:%.*]] = getelementptr [8 x i32], ptr [[P1]], i64 0, i64 [[ADD151]] +; CHECK-NEXT: [[TMP18:%.*]] = load i32, ptr [[ARRAYIDX156]], align 4 +; CHECK-NEXT: [[CMP165:%.*]] = icmp uge i32 [[MUL118]], [[MUL101]] +; CHECK-NEXT: [[CMP171:%.*]] = icmp uge i32 [[MUL118]], [[MUL103]] +; CHECK-NEXT: [[ADD1734:%.*]] = or i1 [[CMP165]], [[CMP171]] +; CHECK-NEXT: [[ADD173:%.*]] = zext i1 [[ADD1734]] to i64 +; CHECK-NEXT: [[ARRAYIDX178:%.*]] = getelementptr [8 x i32], ptr [[P2]], i64 0, i64 [[ADD173]] +; CHECK-NEXT: [[TMP12:%.*]] = load i32, ptr [[ARRAYIDX178]], align 4 +; CHECK-NEXT: [[CMP185:%.*]] = icmp uge i32 [[MUL125]], [[MUL100]] +; CHECK-NEXT: [[CMP188:%.*]] = icmp uge i32 [[MUL125]], [[MUL101]] +; CHECK-NEXT: [[ADD1905:%.*]] = or i1 [[CMP185]], [[CMP188]] +; CHECK-NEXT: [[CMP191:%.*]] = icmp uge i32 [[MUL125]], [[MUL102]] +; CHECK-NEXT: [[ADD1936:%.*]] = or i1 [[ADD1905]], [[CMP191]] +; CHECK-NEXT: [[ADD193:%.*]] = zext i1 [[ADD1936]] to i64 +; CHECK-NEXT: [[ARRAYIDX201:%.*]] = getelementptr [8 x i32], ptr [[P4]], i64 0, i64 [[ADD193]] +; CHECK-NEXT: [[TMP19:%.*]] = load i32, ptr [[ARRAYIDX201]], align 4 +; CHECK-NEXT: [[CMP208:%.*]] = icmp uge i32 [[MUL132]], [[MUL100]] +; CHECK-NEXT: [[CMP211:%.*]] = icmp uge i32 [[MUL132]], [[MUL101]] +; CHECK-NEXT: [[ADD2137:%.*]] = or i1 [[CMP208]], [[CMP211]] +; CHECK-NEXT: [[CMP214:%.*]] = icmp uge i32 [[MUL132]], [[MUL102]] +; CHECK-NEXT: [[ADD2168:%.*]] = or i1 [[ADD2137]], [[CMP214]] +; CHECK-NEXT: [[CMP217:%.*]] = icmp uge i32 [[MUL132]], [[MUL103]] +; CHECK-NEXT: [[ADD2199:%.*]] = or i1 [[ADD2168]], [[CMP217]] +; CHECK-NEXT: [[ADD219:%.*]] = zext i1 [[ADD2199]] to i64 +; CHECK-NEXT: [[ARRAYIDX224:%.*]] = getelementptr [8 x i32], ptr [[P3]], i64 0, i64 [[ADD219]] +; CHECK-NEXT: [[TMP20:%.*]] = load i32, ptr [[ARRAYIDX224]], align 4 +; CHECK-NEXT: [[CONV230:%.*]] = zext i8 [[TMP0]] to i32 +; CHECK-NEXT: [[MUL231:%.*]] = mul i32 [[CONV230]], 14 +; CHECK-NEXT: [[CONV237:%.*]] = zext i8 [[TMP0]] to i32 +; CHECK-NEXT: [[MUL238:%.*]] = mul i32 [[CONV237]], 14 +; CHECK-NEXT: [[CONV244:%.*]] = zext i8 [[TMP0]] to i32 +; CHECK-NEXT: [[MUL245:%.*]] = mul i32 [[CONV244]], 14 +; CHECK-NEXT: [[CONV484:%.*]] = zext i8 [[TMP0]] to i32 +; CHECK-NEXT: [[MUL485:%.*]] = mul i32 [[CONV484]], 14 +; CHECK-NEXT: [[CMP262:%.*]] = icmp uge i32 [[MUL231]], [[MUL101]] +; CHECK-NEXT: [[CMP268:%.*]] = icmp uge i32 [[MUL231]], [[MUL103]] +; CHECK-NEXT: [[ADD1503:%.*]] = or i1 [[CMP262]], [[CMP268]] +; CHECK-NEXT: [[ADD150:%.*]] = zext i1 [[ADD1503]] to i64 +; CHECK-NEXT: [[ARRAYIDX155:%.*]] = getelementptr [8 x i32], ptr [[P1]], i64 0, i64 [[ADD150]] +; CHECK-NEXT: [[TMP13:%.*]] = load i32, ptr [[ARRAYIDX155]], align 4 +; CHECK-NEXT: [[OR951:%.*]] = or i32 [[TMP13]], [[TMP18]] +; CHECK-NEXT: [[CMP282:%.*]] = icmp uge i32 [[MUL238]], [[MUL100]] +; CHECK-NEXT: [[CMP285:%.*]] = icmp uge i32 [[MUL238]], [[MUL101]] +; CHECK-NEXT: [[ADD28711:%.*]] = or i1 [[CMP282]], [[CMP285]] +; CHECK-NEXT: [[CMP288:%.*]] = icmp uge i32 [[MUL238]], [[MUL102]] +; CHECK-NEXT: [[ADD29012:%.*]] = or i1 [[ADD28711]], [[CMP288]] +; CHECK-NEXT: [[CMP291:%.*]] = icmp uge i32 [[MUL238]], [[MUL103]] +; CHECK-NEXT: [[ADD29313:%.*]] = or i1 [[ADD29012]], [[CMP291]] +; CHECK-NEXT: [[ADD293:%.*]] = zext i1 [[ADD29313]] to i64 +; CHECK-NEXT: [[ARRAYIDX298:%.*]] = getelementptr [8 x i32], ptr [[P2]], i64 0, i64 [[ADD293]] +; CHECK-NEXT: [[TMP21:%.*]] = load i32, ptr [[ARRAYIDX298]], align 4 +; CHECK-NEXT: [[OR301952:%.*]] = or i32 [[TMP21]], [[TMP12]] +; CHECK-NEXT: [[CMP310:%.*]] = icmp uge i32 [[MUL245]], [[MUL101]] +; CHECK-NEXT: [[CMP316:%.*]] = icmp uge i32 [[MUL245]], [[MUL103]] +; CHECK-NEXT: [[ADD31814:%.*]] = or i1 [[CMP310]], [[CMP316]] +; CHECK-NEXT: [[ADD318:%.*]] = zext i1 [[ADD31814]] to i64 +; CHECK-NEXT: [[ARRAYIDX323:%.*]] = getelementptr [8 x i32], ptr [[P4]], i64 0, i64 [[ADD318]] +; CHECK-NEXT: [[TMP14:%.*]] = load i32, ptr [[ARRAYIDX323]], align 4 +; CHECK-NEXT: [[OR326953:%.*]] = or i32 [[TMP14]], [[TMP19]] +; CHECK-NEXT: [[CMP332:%.*]] = icmp uge i32 [[MUL485]], [[MUL100]] +; CHECK-NEXT: [[CMP335:%.*]] = icmp uge i32 [[MUL485]], [[MUL101]] +; CHECK-NEXT: [[ADD33715:%.*]] = or i1 [[CMP332]], [[CMP335]] +; CHECK-NEXT: [[CMP338:%.*]] = icmp uge i32 [[MUL485]], [[MUL102]] +; CHECK-NEXT: [[ADD34016:%.*]] = or i1 [[ADD33715]], [[CMP338]] +; CHECK-NEXT: [[CMP341:%.*]] = icmp uge i32 [[MUL485]], [[MUL103]] +; CHECK-NEXT: [[ADD34317:%.*]] = or i1 [[ADD34016]], [[CMP341]] +; CHECK-NEXT: [[ADD343:%.*]] = zext i1 [[ADD34317]] to i64 +; CHECK-NEXT: [[ARRAYIDX348:%.*]] = getelementptr [8 x i32], ptr [[P3]], i64 0, i64 [[ADD343]] +; CHECK-NEXT: [[TMP22:%.*]] = load i32, ptr [[ARRAYIDX348]], align 4 +; CHECK-NEXT: [[OR351954:%.*]] = or i32 [[TMP22]], [[TMP20]] +; CHECK-NEXT: [[CONV485:%.*]] = zext i8 [[TMP0]] to i32 +; CHECK-NEXT: [[MUL486:%.*]] = mul i32 [[CONV485]], 14 +; CHECK-NEXT: [[CONV491:%.*]] = zext i8 [[TMP0]] to i32 +; CHECK-NEXT: [[MUL492:%.*]] = mul i32 [[CONV491]], 14 +; CHECK-NEXT: [[CONV498:%.*]] = zext i8 [[TMP0]] to i32 +; CHECK-NEXT: [[MUL499:%.*]] = mul i32 [[CONV498]], 14 +; CHECK-NEXT: [[CONV505:%.*]] = zext i8 [[TMP0]] to i32 +; CHECK-NEXT: [[MUL506:%.*]] = mul i32 [[CONV505]], 14 +; CHECK-NEXT: [[CMP519:%.*]] = icmp uge i32 [[MUL486]], [[MUL102]] +; CHECK-NEXT: [[CMP522:%.*]] = icmp uge i32 [[MUL486]], [[MUL103]] +; CHECK-NEXT: [[ADD52418:%.*]] = or i1 [[CMP519]], [[CMP522]] +; CHECK-NEXT: [[ADD524:%.*]] = zext i1 [[ADD52418]] to i64 +; CHECK-NEXT: [[ARRAYIDX529:%.*]] = getelementptr [8 x i32], ptr [[P1]], i64 0, i64 [[ADD524]] +; CHECK-NEXT: [[TMP23:%.*]] = load i32, ptr [[ARRAYIDX529]], align 4 +; CHECK-NEXT: [[CMP541:%.*]] = icmp uge i32 [[MUL492]], [[MUL101]] +; CHECK-NEXT: [[CMP544:%.*]] = icmp uge i32 [[MUL492]], [[MUL102]] +; CHECK-NEXT: [[ADD54619:%.*]] = or i1 [[CMP541]], [[CMP544]] +; CHECK-NEXT: [[CMP547:%.*]] = icmp uge i32 [[MUL492]], [[MUL103]] +; CHECK-NEXT: [[ADD54920:%.*]] = or i1 [[ADD54619]], [[CMP547]] +; CHECK-NEXT: [[ADD549:%.*]] = zext i1 [[ADD54920]] to i64 +; CHECK-NEXT: [[ARRAYIDX554:%.*]] = getelementptr [8 x i32], ptr [[P2]], i64 0, i64 [[ADD549]] +; CHECK-NEXT: [[TMP25:%.*]] = load i32, ptr [[ARRAYIDX554]], align 4 +; CHECK-NEXT: [[CMP572:%.*]] = icmp uge i32 [[MUL499]], [[MUL103]] +; CHECK-NEXT: [[CONV573:%.*]] = zext i1 [[CMP572]] to i64 +; CHECK-NEXT: [[ARRAYIDX579:%.*]] = getelementptr [8 x i32], ptr [[P4]], i64 0, i64 [[CONV573]] +; CHECK-NEXT: [[TMP27:%.*]] = load i32, ptr [[ARRAYIDX579]], align 4 +; CHECK-NEXT: [[CMP594:%.*]] = icmp uge i32 [[MUL506]], [[MUL102]] +; CHECK-NEXT: [[CONV595:%.*]] = zext i1 [[CMP594]] to i64 +; CHECK-NEXT: [[ARRAYIDX604:%.*]] = getelementptr [8 x i32], ptr [[P3]], i64 0, i64 [[CONV595]] +; CHECK-NEXT: [[TMP29:%.*]] = load i32, ptr [[ARRAYIDX604]], align 4 +; CHECK-NEXT: [[OR4791159:%.*]] = or i32 [[OR301952]], [[OR951]] +; CHECK-NEXT: [[OR6071160:%.*]] = or i32 [[OR4791159]], [[OR326953]] +; CHECK-NEXT: [[OR4541161:%.*]] = or i32 [[OR6071160]], [[OR351954]] +; CHECK-NEXT: [[SHL58111621163:%.*]] = or i32 [[TMP27]], [[TMP29]] +; CHECK-NEXT: [[SHL55611641165:%.*]] = or i32 [[TMP25]], [[SHL58111621163]] +; CHECK-NEXT: [[SHL53111661167:%.*]] = or i32 [[TMP23]], [[SHL55611641165]] +; CHECK-NEXT: [[SHL5311166:%.*]] = trunc i32 [[SHL53111661167]] to i8 +; CHECK-NEXT: [[CONV616:%.*]] = trunc i32 [[OR4541161]] to i8 +; CHECK-NEXT: [[ARRAYIDX617:%.*]] = getelementptr i8, ptr [[PDST]], i64 4 +; CHECK-NEXT: store i8 [[CONV616]], ptr [[ARRAYIDX617]], align 1 +; CHECK-NEXT: store i8 [[SHL5311166]], ptr [[PDST]], align 1 +; CHECK-NEXT: ret void +; +entry: + %mul100 = mul i32 %stride, 9 + %mul101 = mul i32 %stride, 7 + %mul102 = mul i32 %stride, 5 + %mul103 = mul i32 %stride, 3 + %conv111 = zext i8 %0 to i32 + %mul112 = mul i32 %conv111, 14 + %conv117 = zext i8 %0 to i32 + %mul118 = mul i32 %conv117, 14 + %conv124 = zext i8 %0 to i32 + %mul125 = mul i32 %conv124, 14 + %conv131 = zext i8 %0 to i32 + %mul132 = mul i32 %conv131, 14 + %cmp139 = icmp uge i32 %mul112, %mul100 + %cmp142 = icmp uge i32 %mul112, %mul101 + %add1441 = or i1 %cmp139, %cmp142 + %cmp145 = icmp uge i32 %mul112, %mul102 + %add1472 = or i1 %add1441, %cmp145 + %cmp148 = icmp uge i32 %mul112, %mul103 + %add1503 = or i1 %add1472, %cmp148 + %add150 = zext i1 %add1503 to i64 + %arrayidx155 = getelementptr [8 x i32], ptr %p1, i64 0, i64 %add150 + %1 = load i32, ptr %arrayidx155, align 4 + %cmp165 = icmp uge i32 %mul118, %mul101 + %cmp171 = icmp uge i32 %mul118, %mul103 + %add1734 = or i1 %cmp165, %cmp171 + %add173 = zext i1 %add1734 to i64 + %arrayidx178 = getelementptr [8 x i32], ptr %p2, i64 0, i64 %add173 + %2 = load i32, ptr %arrayidx178, align 4 + %cmp185 = icmp uge i32 %mul125, %mul100 + %cmp188 = icmp uge i32 %mul125, %mul101 + %add1905 = or i1 %cmp185, %cmp188 + %cmp191 = icmp uge i32 %mul125, %mul102 + %add1936 = or i1 %add1905, %cmp191 + %add193 = zext i1 %add1936 to i64 + %arrayidx201 = getelementptr [8 x i32], ptr %p4, i64 0, i64 %add193 + %3 = load i32, ptr %arrayidx201, align 4 + %cmp208 = icmp uge i32 %mul132, %mul100 + %cmp211 = icmp uge i32 %mul132, %mul101 + %add2137 = or i1 %cmp208, %cmp211 + %cmp214 = icmp uge i32 %mul132, %mul102 + %add2168 = or i1 %add2137, %cmp214 + %cmp217 = icmp uge i32 %mul132, %mul103 + %add2199 = or i1 %add2168, %cmp217 + %add219 = zext i1 %add2199 to i64 + %arrayidx224 = getelementptr [8 x i32], ptr %p3, i64 0, i64 %add219 + %4 = load i32, ptr %arrayidx224, align 4 + %conv230 = zext i8 %0 to i32 + %mul231 = mul i32 %conv230, 14 + %conv237 = zext i8 %0 to i32 + %mul238 = mul i32 %conv237, 14 + %conv244 = zext i8 %0 to i32 + %mul245 = mul i32 %conv244, 14 + %conv251 = zext i8 %0 to i32 + %mul252 = mul i32 %conv251, 14 + %cmp262 = icmp uge i32 %mul231, %mul101 + %cmp268 = icmp uge i32 %mul231, %mul103 + %add27010 = or i1 %cmp262, %cmp268 + %add270 = zext i1 %add27010 to i64 + %arrayidx275 = getelementptr [8 x i32], ptr %p1, i64 0, i64 %add270 + %5 = load i32, ptr %arrayidx275, align 4 + %or951 = or i32 %5, %1 + %cmp282 = icmp uge i32 %mul238, %mul100 + %cmp285 = icmp uge i32 %mul238, %mul101 + %add28711 = or i1 %cmp282, %cmp285 + %cmp288 = icmp uge i32 %mul238, %mul102 + %add29012 = or i1 %add28711, %cmp288 + %cmp291 = icmp uge i32 %mul238, %mul103 + %add29313 = or i1 %add29012, %cmp291 + %add293 = zext i1 %add29313 to i64 + %arrayidx298 = getelementptr [8 x i32], ptr %p2, i64 0, i64 %add293 + %6 = load i32, ptr %arrayidx298, align 4 + %or301952 = or i32 %6, %2 + %cmp310 = icmp uge i32 %mul245, %mul101 + %cmp316 = icmp uge i32 %mul245, %mul103 + %add31814 = or i1 %cmp310, %cmp316 + %add318 = zext i1 %add31814 to i64 + %arrayidx323 = getelementptr [8 x i32], ptr %p4, i64 0, i64 %add318 + %7 = load i32, ptr %arrayidx323, align 4 + %or326953 = or i32 %7, %3 + %cmp332 = icmp uge i32 %mul252, %mul100 + %cmp335 = icmp uge i32 %mul252, %mul101 + %add33715 = or i1 %cmp332, %cmp335 + %cmp338 = icmp uge i32 %mul252, %mul102 + %add34016 = or i1 %add33715, %cmp338 + %cmp341 = icmp uge i32 %mul252, %mul103 + %add34317 = or i1 %add34016, %cmp341 + %add343 = zext i1 %add34317 to i64 + %arrayidx348 = getelementptr [8 x i32], ptr %p3, i64 0, i64 %add343 + %8 = load i32, ptr %arrayidx348, align 4 + %or351954 = or i32 %8, %4 + %conv484 = zext i8 %0 to i32 + %mul485 = mul i32 %conv484, 14 + %conv491 = zext i8 %0 to i32 + %mul492 = mul i32 %conv491, 14 + %conv498 = zext i8 %0 to i32 + %mul499 = mul i32 %conv498, 14 + %conv505 = zext i8 %0 to i32 + %mul506 = mul i32 %conv505, 14 + %cmp519 = icmp uge i32 %mul485, %mul102 + %cmp522 = icmp uge i32 %mul485, %mul103 + %add52418 = or i1 %cmp519, %cmp522 + %add524 = zext i1 %add52418 to i64 + %arrayidx529 = getelementptr [8 x i32], ptr %p1, i64 0, i64 %add524 + %9 = load i32, ptr %arrayidx529, align 4 + %cmp541 = icmp uge i32 %mul492, %mul101 + %cmp544 = icmp uge i32 %mul492, %mul102 + %add54619 = or i1 %cmp541, %cmp544 + %cmp547 = icmp uge i32 %mul492, %mul103 + %add54920 = or i1 %add54619, %cmp547 + %add549 = zext i1 %add54920 to i64 + %arrayidx554 = getelementptr [8 x i32], ptr %p2, i64 0, i64 %add549 + %10 = load i32, ptr %arrayidx554, align 4 + %cmp572 = icmp uge i32 %mul499, %mul103 + %conv573 = zext i1 %cmp572 to i64 + %arrayidx579 = getelementptr [8 x i32], ptr %p4, i64 0, i64 %conv573 + %11 = load i32, ptr %arrayidx579, align 4 + %cmp594 = icmp uge i32 %mul506, %mul102 + %conv595 = zext i1 %cmp594 to i64 + %arrayidx604 = getelementptr [8 x i32], ptr %p3, i64 0, i64 %conv595 + %12 = load i32, ptr %arrayidx604, align 4 + %or4791159 = or i32 %or301952, %or951 + %or6071160 = or i32 %or4791159, %or326953 + %or4541161 = or i32 %or6071160, %or351954 + %shl58111621163 = or i32 %11, %12 + %shl55611641165 = or i32 %10, %shl58111621163 + %shl53111661167 = or i32 %9, %shl55611641165 + %shl5311166 = trunc i32 %shl53111661167 to i8 + %conv616 = trunc i32 %or4541161 to i8 + %arrayidx617 = getelementptr i8, ptr %pDst, i64 4 + store i8 %conv616, ptr %arrayidx617, align 1 + store i8 %shl5311166, ptr %pDst, align 1 + ret void +}