[llvm] r325438 - [DebugInfo][FastISel] Fix dropping dbg.value()

Mikael Holmén via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 21 03:53:39 PST 2018


Hi Sander,

I stumbled upon a case that hits an assert with this patch:

llc -O0 -mtriple x86_64-unknown-linux-gnu -mcpu=x86-64 -o - reduced.ll

gives

llc: ../lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:1600: void 
llvm::SelectionDAGBuilder::CopyToExportRegsIfNeeded(const llvm::Value 
*): Assertion `!V->use_empty() && "Unused value assigned virtual 
registers!"' failed.
#0 0x0000000001e85f04 PrintStackTraceSignalHandler(void*) 
(build-all/bin/llc+0x1e85f04)
#1 0x0000000001e86676 SignalHandler(int) (build-all/bin/llc+0x1e86676)
#2 0x00007f3824026330 __restore_rt 
(/lib/x86_64-linux-gnu/libpthread.so.0+0x10330)
#3 0x00007f3822c15c37 gsignal 
/build/eglibc-ripdx6/eglibc-2.19/signal/../nptl/sysdeps/unix/sysv/linux/raise.c:56:0
#4 0x00007f3822c19028 abort 
/build/eglibc-ripdx6/eglibc-2.19/stdlib/abort.c:91:0
#5 0x00007f3822c0ebf6 __assert_fail_base 
/build/eglibc-ripdx6/eglibc-2.19/assert/assert.c:92:0
#6 0x00007f3822c0eca2 (/lib/x86_64-linux-gnu/libc.so.6+0x2fca2)
#7 0x0000000001cb1492 
llvm::SelectionDAGBuilder::CopyToExportRegsIfNeeded(llvm::Value const*) 
(build-all/bin/llc+0x1cb1492)
#8 0x0000000001cb06e8 llvm::SelectionDAGBuilder::visit(llvm::Instruction 
const&) (build-all/bin/llc+0x1cb06e8)
#9 0x0000000001d4ba0e 
llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, 
true, false, void>, false, true>, 
llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, 
true, false, void>, false, true>, bool&) (build-all/bin/llc+0x1d4ba0e)
#10 0x0000000001d4a501 
llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) 
(build-all/bin/llc+0x1d4a501)
#11 0x0000000001d467e7 
llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) 
(build-all/bin/llc+0x1d467e7)
#12 0x000000000112c011 (anonymous 
namespace)::X86DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) 
(build-all/bin/llc+0x112c011)
#13 0x00000000015f3659 
llvm::MachineFunctionPass::runOnFunction(llvm::Function&) 
(build-all/bin/llc+0x15f3659)
#14 0x00000000018fa2b8 
llvm::FPPassManager::runOnFunction(llvm::Function&) 
(build-all/bin/llc+0x18fa2b8)
#15 0x00000000018fa4f8 llvm::FPPassManager::runOnModule(llvm::Module&) 
(build-all/bin/llc+0x18fa4f8)
#16 0x00000000018fa9d5 llvm::legacy::PassManagerImpl::run(llvm::Module&) 
(build-all/bin/llc+0x18fa9d5)
#17 0x00000000006d9305 compileModule(char**, llvm::LLVMContext&) 
(build-all/bin/llc+0x6d9305)
#18 0x00000000006d6a7b main (build-all/bin/llc+0x6d6a7b)
#19 0x00007f3822c00f45 __libc_start_main 
/build/eglibc-ripdx6/eglibc-2.19/csu/libc-start.c:321:0
#20 0x00000000006d427d _start (build-all/bin/llc+0x6d427d)
Stack dump:
0.      Program arguments: build-all/bin/llc -O0 -mtriple 
x86_64-unknown-linux-gnu -mcpu=x86-64 -o - reduced.ll
1.      Running pass 'Function Pass Manager' on module 'reduced.ll'.
2.      Running pass 'X86 DAG->DAG Instruction Selection' on function 
'@func_11'

Regards,
Mikael

On 02/17/2018 05:42 PM, Sander de Smalen via llvm-commits wrote:
> Author: s.desmalen
> Date: Sat Feb 17 08:42:54 2018
> New Revision: 325438
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=325438&view=rev
> Log:
> [DebugInfo][FastISel] Fix dropping dbg.value()
> 
> Summary:
> https://llvm.org/PR36263 shows that when compiling at -O0 a dbg.value()
> instruction (that remains from an original dbg.declare()) is dropped
> by FastISel. Since FastISel selects instructions by iterating a basic
> block backwards, it drops the dbg.value if one of its operands is not
> yet instantiated by a previously selected instruction.
> 
> Instead of calling 'lookUpRegForValue()' we can call 'getRegForValue()'
> instead that will insert a placeholder for the operand to be filled in
> when continuing the instruction selection.
> 
> Reviewers: aprantl, dblaikie, probinson
> 
> Reviewed By: aprantl
> 
> Subscribers: llvm-commits, dstenb, JDevlieghere
> 
> Differential Revision: https://reviews.llvm.org/D43386
> 
> Added:
>      llvm/trunk/test/CodeGen/Generic/dbg_value_fastisel.ll
> Modified:
>      llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp
>      llvm/trunk/test/DebugInfo/X86/fission-ranges.ll
> 
> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp?rev=325438&r1=325437&r2=325438&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp (original)
> +++ llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp Sat Feb 17 08:42:54 2018
> @@ -1235,7 +1235,7 @@ bool FastISel::selectIntrinsicCall(const
>             .addImm(0U)
>             .addMetadata(DI->getVariable())
>             .addMetadata(DI->getExpression());
> -    } else if (unsigned Reg = lookUpRegForValue(V)) {
> +    } else if (unsigned Reg = getRegForValue(V)) {
>         // FIXME: This does not handle register-indirect values at offset 0.
>         bool IsIndirect = false;
>         BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, II, IsIndirect, Reg,
> 
> Added: llvm/trunk/test/CodeGen/Generic/dbg_value_fastisel.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Generic/dbg_value_fastisel.ll?rev=325438&view=auto
> ==============================================================================
> --- llvm/trunk/test/CodeGen/Generic/dbg_value_fastisel.ll (added)
> +++ llvm/trunk/test/CodeGen/Generic/dbg_value_fastisel.ll Sat Feb 17 08:42:54 2018
> @@ -0,0 +1,54 @@
> +; RUN: llc -O0 -stop-after=livedebugvalues -fast-isel=true < %s | FileCheck %s
> +
> +; CHECK: ![[LOCAL:[0-9]+]] = !DILocalVariable(name: "__vla_expr",
> +; CHECK: DBG_VALUE {{.*}} ![[LOCAL]]
> +
> +; ModuleID = '<stdin>'
> +source_filename = "foo.c"
> +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
> +target triple = "x86_64-unknown-linux-gnu"
> +
> +; Function Attrs: noinline nounwind optnone uwtable
> +define void @foo(i32 %n) local_unnamed_addr #0 !dbg !7 {
> +entry:
> +  %0 = zext i32 %n to i64, !dbg !11
> +  %1 = call i8* @llvm.stacksave(), !dbg !12
> +  call void @llvm.dbg.value(metadata i64 %0, metadata !13, metadata !DIExpression()), !dbg !12
> +  %vla.i = alloca i32, i64 %0, align 16, !dbg !12
> +  call void @llvm.stackrestore(i8* %1), !dbg !12
> +  ret void, !dbg !12
> +}
> +
> +; Function Attrs: nounwind
> +declare i8* @llvm.stacksave() #1
> +
> +; Function Attrs: nounwind
> +declare void @llvm.stackrestore(i8*) #1
> +
> +; Function Attrs: nounwind readnone speculatable
> +declare void @llvm.dbg.value(metadata, metadata, metadata) #2
> +
> +attributes #0 = { noinline nounwind optnone uwtable }
> +attributes #1 = { nounwind }
> +attributes #2 = { nounwind readnone speculatable }
> +
> +!llvm.dbg.cu = !{!0}
> +!llvm.module.flags = !{!3, !4, !5}
> +!llvm.ident = !{!6}
> +
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 7.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
> +!1 = !DIFile(filename: "foo.c", directory: "/path/to/build")
> +!2 = !{}
> +!3 = !{i32 2, !"Dwarf Version", i32 4}
> +!4 = !{i32 2, !"Debug Info Version", i32 3}
> +!5 = !{i32 1, !"wchar_size", i32 4}
> +!6 = !{!"clang version 7.0.0"}
> +!7 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 39, isOptimized: false, unit: !0, variables: !2)
> +!8 = !DISubroutineType(types: !9)
> +!9 = !{!10}
> +!10 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
> +!11 = !DILocation(line: 2, column: 5, scope: !7)
> +!12 = !DILocation(line: 4, column: 5, scope: !7)
> +!13 = !DILocalVariable(name: "__vla_expr", scope: !14, type: !15, flags: DIFlagArtificial)
> +!14 = distinct !DILexicalBlock(scope: !7, file: !1, line: 32, column: 31)
> +!15 = !DIBasicType(name: "long unsigned int", size: 64, encoding: DW_ATE_unsigned)
> 
> Modified: llvm/trunk/test/DebugInfo/X86/fission-ranges.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/fission-ranges.ll?rev=325438&r1=325437&r2=325438&view=diff
> ==============================================================================
> --- llvm/trunk/test/DebugInfo/X86/fission-ranges.ll (original)
> +++ llvm/trunk/test/DebugInfo/X86/fission-ranges.ll Sat Feb 17 08:42:54 2018
> @@ -17,6 +17,7 @@
>   ; CHECK: DW_AT_location [DW_FORM_sec_offset]   ([[B:0x[0-9a-z]*]]
>   ; CHECK: DW_AT_location [DW_FORM_sec_offset]   ([[D:0x[0-9a-z]*]]
>   ; CHECK: DW_AT_ranges [DW_FORM_sec_offset]   (0x00000000
> +; CHECK: DW_AT_location [DW_FORM_sec_offset]   ([[W:0x[0-9a-z]*]]
>   ; CHECK-NOT: .debug_loc contents:
>   ; CHECK-NOT: Beginning address offset
>   ; CHECK: .debug_loc.dwo contents:
> @@ -25,24 +26,27 @@
>   ; if they've changed due to a bugfix, change in register allocation, etc.
>   
>   ; CHECK:      [[A]]:
> -; CHECK-NEXT:   Addr idx 2 (w/ length 169): DW_OP_consts +0, DW_OP_stack_value
> +; CHECK-NEXT:   Addr idx 2 (w/ length 188): DW_OP_consts +0, DW_OP_stack_value
>   ; CHECK-NEXT:   Addr idx 3 (w/ length 25): DW_OP_reg0 RAX
> +; CHECK:      [[W]]:
> +; CHECK-NEXT:   Addr idx 4 (w/ length 20): DW_OP_reg1 RDX
> +; CHECK-NEXT:   Addr idx 5 (w/ length 102): DW_OP_breg7 RSP-56
>   ; CHECK:      [[E]]:
> -; CHECK-NEXT:   Addr idx 4 (w/ length 19): DW_OP_reg0 RAX
> +; CHECK-NEXT:   Addr idx 6 (w/ length 24): DW_OP_reg0 RAX
>   ; CHECK:      [[B]]:
> -; CHECK-NEXT:   Addr idx 5 (w/ length 17): DW_OP_reg0 RAX
> +; CHECK-NEXT:   Addr idx 7 (w/ length 17): DW_OP_reg0 RAX
>   ; CHECK:      [[D]]:
> -; CHECK-NEXT:   Addr idx 6 (w/ length 17): DW_OP_reg0 RAX
> +; CHECK-NEXT:   Addr idx 8 (w/ length 21): DW_OP_reg0 RAX
>   
>   
>   ; Make sure we don't produce any relocations in any .dwo section (though in particular, debug_info.dwo)
>   ; HDR-NOT: .rela.{{.*}}.dwo
>   
>   ; Make sure we have enough stuff in the debug_addr to cover the address indexes
> -; (6 is the last index in debug_loc.dwo, making 7 entries of 8 bytes each, 7 * 8
> -; == 56 base 10 == 38 base 16)
> +; (8 is the last index in debug_loc.dwo, making 9 entries of 8 bytes each, 9 * 8
> +; == 72 base 10 == 48 base 16)
>   
> -; HDR: .debug_addr 00000038
> +; HDR: .debug_addr 00000048
>   ; HDR-NOT: .rela.{{.*}}.dwo
>   
>   ; From the code:
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
> 
-------------- next part --------------
; ModuleID = 'bugpoint-reduced-simplified.bc'
source_filename = "bugpoint-output-a185951.bc"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@g_553 = external dso_local global i8, align 1

define void @func_11()  {
entry:
  %l_910.sroa.1.0.copyload152 = extractelement <2 x i32> undef, i32 1, !dbg !249
  call void @llvm.dbg.value(metadata i32 %l_910.sroa.1.0.copyload152, metadata !250, metadata !DIExpression(DW_OP_LLVM_fragment, 32, 32)), !dbg !249
  ret void
}

; Function Attrs: nounwind readnone speculatable
declare void @llvm.dbg.value(metadata, metadata, metadata) #1

attributes #1 = { nounwind readnone speculatable }

!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!244, !245}

!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 7.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !3, globals: !7)
!1 = !DIFile(filename: "csmith-3012205470.c", directory: "/data/repo/llvm-patch")
!2 = !{}
!3 = !{!4, !5, !6}
!4 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64)
!5 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned)
!6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
!7 = !{!8, !16, !24, !30, !32, !36, !38, !40, !42, !47, !62, !68, !71, !79, !84, !87, !91, !94, !100, !104, !109, !111, !113, !115, !120, !122, !127, !129, !134, !136, !140, !142, !144, !147, !152, !156, !158, !160, !165, !167, !169, !171, !174, !178, !181, !183, !185, !187, !190, !192, !194, !196, !198, !200, !202, !204, !206, !208, !210, !216, !219, !221, !223, !225, !227, !231, !233, !235, !237, !239, !242}
!8 = !DIGlobalVariableExpression(var: !9, expr: !DIExpression())
!9 = distinct !DIGlobalVariable(name: "crc32_tab", scope: !0, file: !10, line: 47, type: !11, isLocal: true, isDefinition: true)
!10 = !DIFile(filename: "/proj/flexasic/app/csmith/latest/include/csmith-2.3.0/csmith.h", directory: "/data/repo/llvm-patch")
!11 = !DICompositeType(tag: DW_TAG_array_type, baseType: !12, size: 8192, elements: !14)
!12 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint32_t", file: !13, line: 51, baseType: !5)
!13 = !DIFile(filename: "/usr/include/stdint.h", directory: "/data/repo/llvm-patch")
!14 = !{!15}
!15 = !DISubrange(count: 256)
!16 = !DIGlobalVariableExpression(var: !17, expr: !DIExpression())
!17 = distinct !DIGlobalVariable(name: "g_1538", scope: !0, file: !1, line: 111, type: !18, isLocal: true, isDefinition: true)
!18 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !19)
!19 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !20, size: 64)
!20 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S0", file: !1, line: 18, size: 64, elements: !21)
!21 = !{!22, !23}
!22 = !DIDerivedType(tag: DW_TAG_member, name: "f0", scope: !20, file: !1, line: 19, baseType: !5, size: 29, flags: DIFlagBitField, extraData: i64 0)
!23 = !DIDerivedType(tag: DW_TAG_member, name: "f1", scope: !20, file: !1, line: 20, baseType: !6, size: 30, offset: 29, flags: DIFlagBitField, extraData: i64 0)
!24 = !DIGlobalVariableExpression(var: !25, expr: !DIExpression())
!25 = distinct !DIGlobalVariable(name: "g_1400", scope: !0, file: !1, line: 102, type: !26, isLocal: true, isDefinition: true)
!26 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !27, size: 64)
!27 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !28, size: 64)
!28 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !29)
!29 = !DIDerivedType(tag: DW_TAG_typedef, name: "int32_t", file: !13, line: 38, baseType: !6)
!30 = !DIGlobalVariableExpression(var: !31, expr: !DIExpression())
!31 = distinct !DIGlobalVariable(name: "g_1401", scope: !0, file: !1, line: 101, type: !27, isLocal: true, isDefinition: true)
!32 = !DIGlobalVariableExpression(var: !33, expr: !DIExpression())
!33 = distinct !DIGlobalVariable(name: "g_320", scope: !0, file: !1, line: 55, type: !34, isLocal: true, isDefinition: true)
!34 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !35, size: 64)
!35 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !29, size: 64)
!36 = !DIGlobalVariableExpression(var: !37, expr: !DIExpression())
!37 = distinct !DIGlobalVariable(name: "g_117", scope: !0, file: !1, line: 42, type: !18, isLocal: true, isDefinition: true)
!38 = !DIGlobalVariableExpression(var: !39, expr: !DIExpression())
!39 = distinct !DIGlobalVariable(name: "g_206", scope: !0, file: !1, line: 51, type: !19, isLocal: true, isDefinition: true)
!40 = !DIGlobalVariableExpression(var: !41, expr: !DIExpression())
!41 = distinct !DIGlobalVariable(name: "g_205", scope: !0, file: !1, line: 50, type: !19, isLocal: true, isDefinition: true)
!42 = !DIGlobalVariableExpression(var: !43, expr: !DIExpression())
!43 = distinct !DIGlobalVariable(name: "g_428", scope: !0, file: !1, line: 62, type: !44, isLocal: true, isDefinition: true)
!44 = !DICompositeType(tag: DW_TAG_array_type, baseType: !35, size: 256, elements: !45)
!45 = !{!46}
!46 = !DISubrange(count: 4)
!47 = !DIGlobalVariableExpression(var: !48, expr: !DIExpression())
!48 = distinct !DIGlobalVariable(name: "g_425", scope: !0, file: !1, line: 60, type: !49, isLocal: true, isDefinition: true)
!49 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !50, size: 64)
!50 = distinct !DICompositeType(tag: DW_TAG_union_type, name: "U1", file: !1, line: 24, size: 64, elements: !51)
!51 = !{!52, !56}
!52 = !DIDerivedType(tag: DW_TAG_member, name: "f0", scope: !50, file: !1, line: 25, baseType: !53, size: 16)
!53 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !54)
!54 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint16_t", file: !13, line: 49, baseType: !55)
!55 = !DIBasicType(name: "unsigned short", size: 16, encoding: DW_ATE_unsigned)
!56 = !DIDerivedType(tag: DW_TAG_member, name: "f1", scope: !50, file: !1, line: 26, baseType: !57, size: 64)
!57 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !58)
!58 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !59)
!59 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !60, size: 64)
!60 = !DIDerivedType(tag: DW_TAG_typedef, name: "int8_t", file: !13, line: 36, baseType: !61)
!61 = !DIBasicType(name: "signed char", size: 8, encoding: DW_ATE_signed_char)
!62 = !DIGlobalVariableExpression(var: !63, expr: !DIExpression())
!63 = distinct !DIGlobalVariable(name: "g_896", scope: !0, file: !1, line: 82, type: !64, isLocal: true, isDefinition: true)
!64 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !65, size: 64)
!65 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !66)
!66 = !DIDerivedType(tag: DW_TAG_typedef, name: "int64_t", file: !13, line: 40, baseType: !67)
!67 = !DIBasicType(name: "long int", size: 64, encoding: DW_ATE_signed)
!68 = !DIGlobalVariableExpression(var: !69, expr: !DIExpression())
!69 = distinct !DIGlobalVariable(name: "g_1178", scope: !0, file: !1, line: 91, type: !70, isLocal: true, isDefinition: true)
!70 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !49, size: 64)
!71 = !DIGlobalVariableExpression(var: !72, expr: !DIExpression())
!72 = distinct !DIGlobalVariable(name: "g_1148", scope: !0, file: !1, line: 89, type: !73, isLocal: true, isDefinition: true)
!73 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !74, size: 64)
!74 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !75)
!75 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !76, size: 64)
!76 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !77)
!77 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint64_t", file: !13, line: 55, baseType: !78)
!78 = !DIBasicType(name: "long unsigned int", size: 64, encoding: DW_ATE_unsigned)
!79 = !DIGlobalVariableExpression(var: !80, expr: !DIExpression())
!80 = distinct !DIGlobalVariable(name: "g_1283", scope: !0, file: !1, line: 98, type: !81, isLocal: true, isDefinition: true)
!81 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !82)
!82 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !83)
!83 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !19, size: 64)
!84 = !DIGlobalVariableExpression(var: !85, expr: !DIExpression())
!85 = distinct !DIGlobalVariable(name: "g_1305", scope: !0, file: !1, line: 99, type: !86, isLocal: true, isDefinition: true)
!86 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !35)
!87 = !DIGlobalVariableExpression(var: !88, expr: !DIExpression())
!88 = distinct !DIGlobalVariable(name: "g_319", scope: !0, file: !1, line: 56, type: !89, isLocal: true, isDefinition: true)
!89 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !90)
!90 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !34, size: 64)
!91 = !DIGlobalVariableExpression(var: !92, expr: !DIExpression())
!92 = distinct !DIGlobalVariable(name: "g_127", scope: !0, file: !1, line: 46, type: !93, isLocal: true, isDefinition: true)
!93 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !34)
!94 = !DIGlobalVariableExpression(var: !95, expr: !DIExpression())
!95 = distinct !DIGlobalVariable(name: "l_794", scope: !96, file: !1, line: 684, type: !99, isLocal: true, isDefinition: true)
!96 = distinct !DISubprogram(name: "func_32", scope: !1, file: !1, line: 604, type: !97, isLocal: true, isDefinition: true, scopeLine: 605, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
!97 = !DISubroutineType(types: !98)
!98 = !{!99, !29}
!99 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !20)
!100 = !DIGlobalVariableExpression(var: !101, expr: !DIExpression())
!101 = distinct !DIGlobalVariable(name: "g_307", scope: !0, file: !1, line: 53, type: !102, isLocal: true, isDefinition: true)
!102 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !103, size: 64)
!103 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !12)
!104 = !DIGlobalVariableExpression(var: !105, expr: !DIExpression())
!105 = distinct !DIGlobalVariable(name: "g_811", scope: !0, file: !1, line: 78, type: !106, isLocal: true, isDefinition: true)
!106 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !107, size: 64)
!107 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint8_t", file: !13, line: 48, baseType: !108)
!108 = !DIBasicType(name: "unsigned char", size: 8, encoding: DW_ATE_unsigned_char)
!109 = !DIGlobalVariableExpression(var: !110, expr: !DIExpression())
!110 = distinct !DIGlobalVariable(name: "g_615", scope: !0, file: !1, line: 72, type: !27, isLocal: true, isDefinition: true)
!111 = !DIGlobalVariableExpression(var: !112, expr: !DIExpression())
!112 = distinct !DIGlobalVariable(name: "g_128", scope: !0, file: !1, line: 45, type: !35, isLocal: true, isDefinition: true)
!113 = !DIGlobalVariableExpression(var: !114, expr: !DIExpression())
!114 = distinct !DIGlobalVariable(name: "g_24", scope: !0, file: !1, line: 30, type: !29, isLocal: true, isDefinition: true)
!115 = !DIGlobalVariableExpression(var: !116, expr: !DIExpression())
!116 = distinct !DIGlobalVariable(name: "g_34", scope: !0, file: !1, line: 31, type: !117, isLocal: true, isDefinition: true)
!117 = !DICompositeType(tag: DW_TAG_array_type, baseType: !29, size: 96, elements: !118)
!118 = !{!119}
!119 = !DISubrange(count: 3)
!120 = !DIGlobalVariableExpression(var: !121, expr: !DIExpression())
!121 = distinct !DIGlobalVariable(name: "g_35", scope: !0, file: !1, line: 32, type: !29, isLocal: true, isDefinition: true)
!122 = !DIGlobalVariableExpression(var: !123, expr: !DIExpression())
!123 = distinct !DIGlobalVariable(name: "g_75", scope: !0, file: !1, line: 33, type: !124, isLocal: true, isDefinition: true)
!124 = !DICompositeType(tag: DW_TAG_array_type, baseType: !12, size: 64, elements: !125)
!125 = !{!126}
!126 = !DISubrange(count: 2)
!127 = !DIGlobalVariableExpression(var: !128, expr: !DIExpression())
!128 = distinct !DIGlobalVariable(name: "g_83", scope: !0, file: !1, line: 34, type: !60, isLocal: true, isDefinition: true)
!129 = !DIGlobalVariableExpression(var: !130, expr: !DIExpression())
!130 = distinct !DIGlobalVariable(name: "g_89", scope: !0, file: !1, line: 35, type: !131, isLocal: true, isDefinition: true)
!131 = !DICompositeType(tag: DW_TAG_array_type, baseType: !29, size: 32, elements: !132)
!132 = !{!133}
!133 = !DISubrange(count: 1)
!134 = !DIGlobalVariableExpression(var: !135, expr: !DIExpression())
!135 = distinct !DIGlobalVariable(name: "g_91", scope: !0, file: !1, line: 36, type: !117, isLocal: true, isDefinition: true)
!136 = !DIGlobalVariableExpression(var: !137, expr: !DIExpression())
!137 = distinct !DIGlobalVariable(name: "g_93", scope: !0, file: !1, line: 37, type: !138, isLocal: true, isDefinition: true)
!138 = !DICompositeType(tag: DW_TAG_array_type, baseType: !29, size: 192, elements: !139)
!139 = !{!126, !119}
!140 = !DIGlobalVariableExpression(var: !141, expr: !DIExpression())
!141 = distinct !DIGlobalVariable(name: "g_100", scope: !0, file: !1, line: 38, type: !29, isLocal: true, isDefinition: true)
!142 = !DIGlobalVariableExpression(var: !143, expr: !DIExpression())
!143 = distinct !DIGlobalVariable(name: "g_107", scope: !0, file: !1, line: 39, type: !131, isLocal: true, isDefinition: true)
!144 = !DIGlobalVariableExpression(var: !145, expr: !DIExpression())
!145 = distinct !DIGlobalVariable(name: "g_118", scope: !0, file: !1, line: 41, type: !146, isLocal: true, isDefinition: true)
!146 = !DICompositeType(tag: DW_TAG_array_type, baseType: !20, size: 128, elements: !125)
!147 = !DIGlobalVariableExpression(var: !148, expr: !DIExpression())
!148 = distinct !DIGlobalVariable(name: "g_125", scope: !0, file: !1, line: 43, type: !149, isLocal: true, isDefinition: true)
!149 = !DICompositeType(tag: DW_TAG_array_type, baseType: !54, size: 96, elements: !150)
!150 = !{!151}
!151 = !DISubrange(count: 6)
!152 = !DIGlobalVariableExpression(var: !153, expr: !DIExpression())
!153 = distinct !DIGlobalVariable(name: "g_126", scope: !0, file: !1, line: 44, type: !154, isLocal: true, isDefinition: true)
!154 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !155)
!155 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !50)
!156 = !DIGlobalVariableExpression(var: !157, expr: !DIExpression())
!157 = distinct !DIGlobalVariable(name: "g_156", scope: !0, file: !1, line: 47, type: !77, isLocal: true, isDefinition: true)
!158 = !DIGlobalVariableExpression(var: !159, expr: !DIExpression())
!159 = distinct !DIGlobalVariable(name: "g_171", scope: !0, file: !1, line: 48, type: !107, isLocal: true, isDefinition: true)
!160 = !DIGlobalVariableExpression(var: !161, expr: !DIExpression())
!161 = distinct !DIGlobalVariable(name: "g_199", scope: !0, file: !1, line: 49, type: !162, isLocal: true, isDefinition: true)
!162 = !DICompositeType(tag: DW_TAG_array_type, baseType: !163, size: 16, elements: !132)
!163 = !DIDerivedType(tag: DW_TAG_typedef, name: "int16_t", file: !13, line: 37, baseType: !164)
!164 = !DIBasicType(name: "short", size: 16, encoding: DW_ATE_signed)
!165 = !DIGlobalVariableExpression(var: !166, expr: !DIExpression())
!166 = distinct !DIGlobalVariable(name: "g_245", scope: !0, file: !1, line: 52, type: !155, isLocal: true, isDefinition: true)
!167 = !DIGlobalVariableExpression(var: !168, expr: !DIExpression())
!168 = distinct !DIGlobalVariable(name: "g_331", scope: !0, file: !1, line: 57, type: !50, isLocal: true, isDefinition: true)
!169 = !DIGlobalVariableExpression(var: !170, expr: !DIExpression())
!170 = distinct !DIGlobalVariable(name: "g_360", scope: !0, file: !1, line: 58, type: !77, isLocal: true, isDefinition: true)
!171 = !DIGlobalVariableExpression(var: !172, expr: !DIExpression())
!172 = distinct !DIGlobalVariable(name: "g_419", scope: !0, file: !1, line: 59, type: !173, isLocal: true, isDefinition: true)
!173 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !163)
!174 = !DIGlobalVariableExpression(var: !175, expr: !DIExpression())
!175 = distinct !DIGlobalVariable(name: "g_459", scope: !0, file: !1, line: 64, type: !176, isLocal: true, isDefinition: true)
!176 = !DICompositeType(tag: DW_TAG_array_type, baseType: !155, size: 1152, elements: !177)
!177 = !{!151, !119}
!178 = !DIGlobalVariableExpression(var: !179, expr: !DIExpression())
!179 = distinct !DIGlobalVariable(name: "g_548", scope: !0, file: !1, line: 66, type: !180, isLocal: true, isDefinition: true)
!180 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !107)
!181 = !DIGlobalVariableExpression(var: !182, expr: !DIExpression())
!182 = distinct !DIGlobalVariable(name: "g_553", scope: !0, file: !1, line: 67, type: !60, isLocal: true, isDefinition: true)
!183 = !DIGlobalVariableExpression(var: !184, expr: !DIExpression())
!184 = distinct !DIGlobalVariable(name: "g_557", scope: !0, file: !1, line: 68, type: !76, isLocal: true, isDefinition: true)
!185 = !DIGlobalVariableExpression(var: !186, expr: !DIExpression())
!186 = distinct !DIGlobalVariable(name: "g_587", scope: !0, file: !1, line: 69, type: !180, isLocal: true, isDefinition: true)
!187 = !DIGlobalVariableExpression(var: !188, expr: !DIExpression())
!188 = distinct !DIGlobalVariable(name: "g_614", scope: !0, file: !1, line: 70, type: !189, isLocal: true, isDefinition: true)
!189 = !DICompositeType(tag: DW_TAG_array_type, baseType: !28, size: 128, elements: !45)
!190 = !DIGlobalVariableExpression(var: !191, expr: !DIExpression())
!191 = distinct !DIGlobalVariable(name: "g_616", scope: !0, file: !1, line: 71, type: !189, isLocal: true, isDefinition: true)
!192 = !DIGlobalVariableExpression(var: !193, expr: !DIExpression())
!193 = distinct !DIGlobalVariable(name: "g_780", scope: !0, file: !1, line: 77, type: !60, isLocal: true, isDefinition: true)
!194 = !DIGlobalVariableExpression(var: !195, expr: !DIExpression())
!195 = distinct !DIGlobalVariable(name: "g_862", scope: !0, file: !1, line: 79, type: !76, isLocal: true, isDefinition: true)
!196 = !DIGlobalVariableExpression(var: !197, expr: !DIExpression())
!197 = distinct !DIGlobalVariable(name: "g_871", scope: !0, file: !1, line: 80, type: !163, isLocal: true, isDefinition: true)
!198 = !DIGlobalVariableExpression(var: !199, expr: !DIExpression())
!199 = distinct !DIGlobalVariable(name: "g_892", scope: !0, file: !1, line: 81, type: !155, isLocal: true, isDefinition: true)
!200 = !DIGlobalVariableExpression(var: !201, expr: !DIExpression())
!201 = distinct !DIGlobalVariable(name: "g_921", scope: !0, file: !1, line: 83, type: !50, isLocal: true, isDefinition: true)
!202 = !DIGlobalVariableExpression(var: !203, expr: !DIExpression())
!203 = distinct !DIGlobalVariable(name: "g_1043", scope: !0, file: !1, line: 84, type: !155, isLocal: true, isDefinition: true)
!204 = !DIGlobalVariableExpression(var: !205, expr: !DIExpression())
!205 = distinct !DIGlobalVariable(name: "g_1047", scope: !0, file: !1, line: 85, type: !66, isLocal: true, isDefinition: true)
!206 = !DIGlobalVariableExpression(var: !207, expr: !DIExpression())
!207 = distinct !DIGlobalVariable(name: "g_1095", scope: !0, file: !1, line: 86, type: !29, isLocal: true, isDefinition: true)
!208 = !DIGlobalVariableExpression(var: !209, expr: !DIExpression())
!209 = distinct !DIGlobalVariable(name: "g_1125", scope: !0, file: !1, line: 87, type: !12, isLocal: true, isDefinition: true)
!210 = !DIGlobalVariableExpression(var: !211, expr: !DIExpression())
!211 = distinct !DIGlobalVariable(name: "g_1132", scope: !0, file: !1, line: 88, type: !212, isLocal: true, isDefinition: true)
!212 = !DICompositeType(tag: DW_TAG_array_type, baseType: !213, size: 2560, elements: !214)
!213 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !50)
!214 = !{!215, !46, !126}
!215 = !DISubrange(count: 5)
!216 = !DIGlobalVariableExpression(var: !217, expr: !DIExpression())
!217 = distinct !DIGlobalVariable(name: "g_1172", scope: !0, file: !1, line: 90, type: !218, isLocal: true, isDefinition: true)
!218 = !DIDerivedType(tag: DW_TAG_volatile_type, baseType: !29)
!219 = !DIGlobalVariableExpression(var: !220, expr: !DIExpression())
!220 = distinct !DIGlobalVariable(name: "g_1184", scope: !0, file: !1, line: 94, type: !29, isLocal: true, isDefinition: true)
!221 = !DIGlobalVariableExpression(var: !222, expr: !DIExpression())
!222 = distinct !DIGlobalVariable(name: "g_1225", scope: !0, file: !1, line: 95, type: !29, isLocal: true, isDefinition: true)
!223 = !DIGlobalVariableExpression(var: !224, expr: !DIExpression())
!224 = distinct !DIGlobalVariable(name: "g_1227", scope: !0, file: !1, line: 96, type: !50, isLocal: true, isDefinition: true)
!225 = !DIGlobalVariableExpression(var: !226, expr: !DIExpression())
!226 = distinct !DIGlobalVariable(name: "g_1275", scope: !0, file: !1, line: 97, type: !29, isLocal: true, isDefinition: true)
!227 = !DIGlobalVariableExpression(var: !228, expr: !DIExpression())
!228 = distinct !DIGlobalVariable(name: "g_1334", scope: !0, file: !1, line: 100, type: !229, isLocal: true, isDefinition: true)
!229 = !DICompositeType(tag: DW_TAG_array_type, baseType: !163, size: 64, elements: !230)
!230 = !{!126, !126}
!231 = !DIGlobalVariableExpression(var: !232, expr: !DIExpression())
!232 = distinct !DIGlobalVariable(name: "g_1421", scope: !0, file: !1, line: 104, type: !107, isLocal: true, isDefinition: true)
!233 = !DIGlobalVariableExpression(var: !234, expr: !DIExpression())
!234 = distinct !DIGlobalVariable(name: "g_1438", scope: !0, file: !1, line: 105, type: !99, isLocal: true, isDefinition: true)
!235 = !DIGlobalVariableExpression(var: !236, expr: !DIExpression())
!236 = distinct !DIGlobalVariable(name: "g_1446", scope: !0, file: !1, line: 107, type: !29, isLocal: true, isDefinition: true)
!237 = !DIGlobalVariableExpression(var: !238, expr: !DIExpression())
!238 = distinct !DIGlobalVariable(name: "g_1471", scope: !0, file: !1, line: 108, type: !155, isLocal: true, isDefinition: true)
!239 = !DIGlobalVariableExpression(var: !240, expr: !DIExpression())
!240 = distinct !DIGlobalVariable(name: "g_1521", scope: !0, file: !1, line: 110, type: !241, isLocal: true, isDefinition: true)
!241 = !DICompositeType(tag: DW_TAG_array_type, baseType: !50, size: 64, elements: !132)
!242 = !DIGlobalVariableExpression(var: !243, expr: !DIExpression())
!243 = distinct !DIGlobalVariable(name: "crc32_context", scope: !0, file: !10, line: 48, type: !12, isLocal: true, isDefinition: true)
!244 = !{i32 2, !"Debug Info Version", i32 3}
!245 = !{i32 1, !"wchar_size", i32 4}
!246 = distinct !DISubprogram(name: "func_11", scope: !1, file: !1, line: 294, type: !247, isLocal: true, isDefinition: true, scopeLine: 295, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
!247 = !DISubroutineType(types: !248)
!248 = !{!59, !59, !59, !59, !12, !54}
!249 = !DILocation(line: 297, column: 13, scope: !246)
!250 = !DILocalVariable(name: "l_910", scope: !246, file: !1, line: 297, type: !251)
!251 = !DICompositeType(tag: DW_TAG_array_type, baseType: !29, size: 192, elements: !150)


More information about the llvm-commits mailing list