-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[BOLT][DWARF][NFC] Add split-dwarf4 test with multiple CUs #93741
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@llvm/pr-subscribers-bolt Author: Sayhaan Siddiqui (sayhaan) ChangesAdds a split-dwarf test for DWARF4 with multiple CUs. Patch is 36.35 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/93741.diff 2 Files Affected:
diff --git a/bolt/test/X86/Inputs/dwarf4-df-input-lowpc-ranges-other.s b/bolt/test/X86/Inputs/dwarf4-df-input-lowpc-ranges-other.s
new file mode 100644
index 0000000000000..a561bd7d2f74f
--- /dev/null
+++ b/bolt/test/X86/Inputs/dwarf4-df-input-lowpc-ranges-other.s
@@ -0,0 +1,705 @@
+# clang++ -fbasic-block-sections=all -ffunction-sections -g2 -gdwarf-4 -gsplit-dwarf
+# __attribute__((always_inline))
+# int doStuffOther(int val) {
+# if (val)
+# ++val;
+# return val;
+# }
+# __attribute__((always_inline))
+# int doStuffOther2(int val) {
+# int foo = 3;
+# return val + foo;
+# }
+#
+#
+# int mainOther(int argc, const char** argv) {
+# return doStuffOther(argc) + doStuffOther2(argc);;
+# }
+
+ .text
+ .file "mainOther.cpp"
+ .section .text._Z7doStuffOtheri,"ax",@progbits
+ .globl _Z7doStuffOtheri # -- Begin function _Z7doStuffOtheri
+ .p2align 4, 0x90
+ .type _Z7doStuffOtheri,@function
+_Z7doStuffOtheri: # @_Z7doStuffOtheri
+.Lfunc_begin0:
+ .file 1 "." "mainOther.cpp"
+ .loc 1 2 0 # mainOther.cpp:2:0
+ .cfi_startproc
+# %bb.0: # %entry
+ pushq %rbp
+ .cfi_def_cfa_offset 16
+ .cfi_offset %rbp, -16
+ movq %rsp, %rbp
+ .cfi_def_cfa_register %rbp
+ movl %edi, -4(%rbp)
+.Ltmp0:
+ .loc 1 3 7 prologue_end # mainOther.cpp:3:7
+ cmpl $0, -4(%rbp)
+.Ltmp1:
+ .loc 1 3 7 is_stmt 0 # mainOther.cpp:3:7
+ je _Z7doStuffOtheri.__part.2
+ jmp _Z7doStuffOtheri.__part.1
+.LBB_END0_0:
+ .cfi_endproc
+ .section .text._Z7doStuffOtheri,"ax",@progbits,unique,1
+_Z7doStuffOtheri.__part.1: # %if.then
+ .cfi_startproc
+ .cfi_def_cfa %rbp, 16
+ .cfi_offset %rbp, -16
+ .loc 1 4 5 is_stmt 1 # mainOther.cpp:4:5
+ movl -4(%rbp), %eax
+ addl $1, %eax
+ movl %eax, -4(%rbp)
+ jmp _Z7doStuffOtheri.__part.2
+.LBB_END0_1:
+ .size _Z7doStuffOtheri.__part.1, .LBB_END0_1-_Z7doStuffOtheri.__part.1
+ .cfi_endproc
+ .section .text._Z7doStuffOtheri,"ax",@progbits,unique,2
+_Z7doStuffOtheri.__part.2: # %if.end
+ .cfi_startproc
+ .cfi_def_cfa %rbp, 16
+ .cfi_offset %rbp, -16
+ .loc 1 5 10 # mainOther.cpp:5:10
+ movl -4(%rbp), %eax
+ .loc 1 5 3 epilogue_begin is_stmt 0 # mainOther.cpp:5:3
+ popq %rbp
+ .cfi_def_cfa %rsp, 8
+ retq
+.LBB_END0_2:
+ .size _Z7doStuffOtheri.__part.2, .LBB_END0_2-_Z7doStuffOtheri.__part.2
+ .cfi_endproc
+ .section .text._Z7doStuffOtheri,"ax",@progbits
+.Lfunc_end0:
+ .size _Z7doStuffOtheri, .Lfunc_end0-_Z7doStuffOtheri
+ # -- End function
+ .section .text._Z8doStuffOther2i,"ax",@progbits
+ .globl _Z8doStuffOther2i # -- Begin function _Z8doStuffOther2i
+ .p2align 4, 0x90
+ .type _Z8doStuffOther2i,@function
+_Z8doStuffOther2i: # @_Z8doStuffOther2i
+.Lfunc_begin1:
+ .loc 1 8 0 is_stmt 1 # mainOther.cpp:8:0
+ .cfi_startproc
+# %bb.0: # %entry
+ pushq %rbp
+ .cfi_def_cfa_offset 16
+ .cfi_offset %rbp, -16
+ movq %rsp, %rbp
+ .cfi_def_cfa_register %rbp
+ movl %edi, -4(%rbp)
+.Ltmp2:
+ .loc 1 9 7 prologue_end # mainOther.cpp:9:7
+ movl $3, -8(%rbp)
+ .loc 1 10 10 # mainOther.cpp:10:10
+ movl -4(%rbp), %eax
+ .loc 1 10 14 is_stmt 0 # mainOther.cpp:10:14
+ addl -8(%rbp), %eax
+ .loc 1 10 3 epilogue_begin # mainOther.cpp:10:3
+ popq %rbp
+ .cfi_def_cfa %rsp, 8
+ retq
+.LBB_END1_0:
+ .cfi_endproc
+.Lfunc_end1:
+ .size _Z8doStuffOther2i, .Lfunc_end1-_Z8doStuffOther2i
+ # -- End function
+ .section .text.mainOther,"ax",@progbits
+ .globl mainOther # -- Begin function mainOther
+ .p2align 4, 0x90
+ .type mainOther,@function
+mainOther: # @mainOther
+.Lfunc_begin2:
+ .loc 1 14 0 is_stmt 1 # mainOther.cpp:14:0
+ .cfi_startproc
+# %bb.0: # %entry
+ pushq %rbp
+ .cfi_def_cfa_offset 16
+ .cfi_offset %rbp, -16
+ movq %rsp, %rbp
+ .cfi_def_cfa_register %rbp
+ movl $0, -16(%rbp)
+ movl %edi, -20(%rbp)
+ movq %rsi, -32(%rbp)
+.Ltmp3:
+ .loc 1 15 21 prologue_end # mainOther.cpp:15:21
+ movl -20(%rbp), %eax
+ movl %eax, -12(%rbp)
+.Ltmp4:
+ .loc 1 3 7 # mainOther.cpp:3:7
+ cmpl $0, -12(%rbp)
+.Ltmp5:
+ .loc 1 3 7 is_stmt 0 # mainOther.cpp:3:7
+ je mainOther.__part.2
+ jmp mainOther.__part.1
+.LBB_END2_0:
+ .cfi_endproc
+ .section .text.mainOther,"ax",@progbits,unique,3
+mainOther.__part.1: # %if.then.i
+ .cfi_startproc
+ .cfi_def_cfa %rbp, 16
+ .cfi_offset %rbp, -16
+ .loc 1 4 5 is_stmt 1 # mainOther.cpp:4:5
+ movl -12(%rbp), %eax
+ addl $1, %eax
+ movl %eax, -12(%rbp)
+ jmp mainOther.__part.2
+.LBB_END2_1:
+ .size mainOther.__part.1, .LBB_END2_1-mainOther.__part.1
+ .cfi_endproc
+ .section .text.mainOther,"ax",@progbits,unique,4
+mainOther.__part.2: # %_Z7doStuffOtheri.exit
+ .cfi_startproc
+ .cfi_def_cfa %rbp, 16
+ .cfi_offset %rbp, -16
+ .loc 1 5 10 # mainOther.cpp:5:10
+ movl -12(%rbp), %eax
+.Ltmp6:
+ .loc 1 15 38 # mainOther.cpp:15:38
+ movl -20(%rbp), %ecx
+ movl %ecx, -4(%rbp)
+.Ltmp7:
+ .loc 1 9 7 # mainOther.cpp:9:7
+ movl $3, -8(%rbp)
+ .loc 1 10 10 # mainOther.cpp:10:10
+ movl -4(%rbp), %ecx
+ .loc 1 10 14 is_stmt 0 # mainOther.cpp:10:14
+ addl -8(%rbp), %ecx
+.Ltmp8:
+ .loc 1 15 27 is_stmt 1 # mainOther.cpp:15:27
+ addl %ecx, %eax
+ .loc 1 15 5 epilogue_begin is_stmt 0 # mainOther.cpp:15:5
+ popq %rbp
+ .cfi_def_cfa %rsp, 8
+ retq
+.LBB_END2_2:
+ .size mainOther.__part.2, .LBB_END2_2-mainOther.__part.2
+ .cfi_endproc
+ .section .text.mainOther,"ax",@progbits
+.Lfunc_end2:
+ .size mainOther, .Lfunc_end2-mainOther
+ # -- End function
+ .section .debug_abbrev,"",@progbits
+ .byte 1 # Abbreviation Code
+ .byte 17 # DW_TAG_compile_unit
+ .byte 0 # DW_CHILDREN_no
+ .byte 16 # DW_AT_stmt_list
+ .byte 23 # DW_FORM_sec_offset
+ .byte 27 # DW_AT_comp_dir
+ .byte 14 # DW_FORM_strp
+ .ascii "\264B" # DW_AT_GNU_pubnames
+ .byte 25 # DW_FORM_flag_present
+ .ascii "\260B" # DW_AT_GNU_dwo_name
+ .byte 14 # DW_FORM_strp
+ .ascii "\261B" # DW_AT_GNU_dwo_id
+ .byte 7 # DW_FORM_data8
+ .ascii "\262B" # DW_AT_GNU_ranges_base
+ .byte 23 # DW_FORM_sec_offset
+ .byte 17 # DW_AT_low_pc
+ .byte 1 # DW_FORM_addr
+ .byte 85 # DW_AT_ranges
+ .byte 23 # DW_FORM_sec_offset
+ .ascii "\263B" # DW_AT_GNU_addr_base
+ .byte 23 # DW_FORM_sec_offset
+ .byte 0 # EOM(1)
+ .byte 0 # EOM(2)
+ .byte 0 # EOM(3)
+ .section .debug_info,"",@progbits
+.Lcu_begin0:
+ .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
+.Ldebug_info_start0:
+ .short 4 # DWARF version number
+ .long .debug_abbrev # Offset Into Abbrev. Section
+ .byte 8 # Address Size (in bytes)
+ .byte 1 # Abbrev [1] 0xb:0x29 DW_TAG_compile_unit
+ .long .Lline_table_start0 # DW_AT_stmt_list
+ .long .Lskel_string0 # DW_AT_comp_dir
+ # DW_AT_GNU_pubnames
+ .long .Lskel_string1 # DW_AT_GNU_dwo_name
+ .quad 1354107878901449185 # DW_AT_GNU_dwo_id
+ .long .debug_ranges # DW_AT_GNU_ranges_base
+ .quad 0 # DW_AT_low_pc
+ .long .Ldebug_ranges3 # DW_AT_ranges
+ .long .Laddr_table_base0 # DW_AT_GNU_addr_base
+.Ldebug_info_end0:
+ .section .debug_ranges,"",@progbits
+.Ldebug_ranges0:
+ .quad _Z7doStuffOtheri.__part.1
+ .quad .LBB_END0_1
+ .quad _Z7doStuffOtheri.__part.2
+ .quad .LBB_END0_2
+ .quad .Lfunc_begin0
+ .quad .Lfunc_end0
+ .quad 0
+ .quad 0
+.Ldebug_ranges1:
+ .quad mainOther.__part.1
+ .quad .LBB_END2_1
+ .quad mainOther.__part.2
+ .quad .LBB_END2_2
+ .quad .Lfunc_begin2
+ .quad .Lfunc_end2
+ .quad 0
+ .quad 0
+.Ldebug_ranges2:
+ .quad .Ltmp4
+ .quad .Lfunc_end2
+ .quad mainOther.__part.1
+ .quad .LBB_END2_1
+ .quad mainOther.__part.2
+ .quad .Ltmp6
+ .quad 0
+ .quad 0
+.Ldebug_ranges3:
+ .quad _Z7doStuffOtheri.__part.1
+ .quad .LBB_END0_1
+ .quad _Z7doStuffOtheri.__part.2
+ .quad .LBB_END0_2
+ .quad .Lfunc_begin0
+ .quad .Lfunc_end0
+ .quad .Lfunc_begin1
+ .quad .Lfunc_end1
+ .quad mainOther.__part.1
+ .quad .LBB_END2_1
+ .quad mainOther.__part.2
+ .quad .LBB_END2_2
+ .quad .Lfunc_begin2
+ .quad .Lfunc_end2
+ .quad 0
+ .quad 0
+ .section .debug_str,"MS",@progbits,1
+.Lskel_string0:
+ .asciz "." # string offset=0
+.Lskel_string1:
+ .asciz "mainOther.dwo" # string offset=38
+ .section .debug_str.dwo,"eMS",@progbits,1
+.Linfo_string0:
+ .asciz "_Z7doStuffOtheri" # string offset=0
+.Linfo_string1:
+ .asciz "doStuffOther" # string offset=12
+.Linfo_string2:
+ .asciz "int" # string offset=20
+.Linfo_string3:
+ .asciz "val" # string offset=24
+.Linfo_string4:
+ .asciz "_Z8doStuffOther2i" # string offset=28
+.Linfo_string5:
+ .asciz "doStuffOther2" # string offset=41
+.Linfo_string6:
+ .asciz "foo" # string offset=50
+.Linfo_string7:
+ .asciz "mainOther" # string offset=54
+.Linfo_string8:
+ .asciz "argc" # string offset=59
+.Linfo_string9:
+ .asciz "argv" # string offset=64
+.Linfo_string10:
+ .asciz "char" # string offset=69
+.Linfo_string11:
+ .asciz "clang version 18.0.0 ([email protected]:llvm/llvm-project.git 3a8db0f4bfb57348f49d9603119fa157114bbf8e)" # string offset=74
+.Linfo_string12:
+ .asciz "mainOther.cpp" # string offset=175
+.Linfo_string13:
+ .asciz "mainOther.dwo" # string offset=184
+ .section .debug_str_offsets.dwo,"e",@progbits
+ .long 0
+ .long 12
+ .long 20
+ .long 24
+ .long 28
+ .long 41
+ .long 50
+ .long 54
+ .long 59
+ .long 64
+ .long 69
+ .long 74
+ .long 175
+ .long 184
+ .section .debug_info.dwo,"e",@progbits
+ .long .Ldebug_info_dwo_end0-.Ldebug_info_dwo_start0 # Length of Unit
+.Ldebug_info_dwo_start0:
+ .short 4 # DWARF version number
+ .long 0 # Offset Into Abbrev. Section
+ .byte 8 # Address Size (in bytes)
+ .byte 1 # Abbrev [1] 0xb:0xdd DW_TAG_compile_unit
+ .byte 11 # DW_AT_producer
+ .short 33 # DW_AT_language
+ .byte 12 # DW_AT_name
+ .byte 13 # DW_AT_GNU_dwo_name
+ .quad 1354107878901449185 # DW_AT_GNU_dwo_id
+ .byte 2 # Abbrev [2] 0x19:0x14 DW_TAG_subprogram
+ .long .Ldebug_ranges0-.debug_ranges # DW_AT_ranges
+ .byte 1 # DW_AT_frame_base
+ .byte 86
+ .long 74 # DW_AT_abstract_origin
+ .byte 3 # Abbrev [3] 0x24:0x8 DW_TAG_formal_parameter
+ .byte 2 # DW_AT_location
+ .byte 145
+ .byte 124
+ .long 84 # DW_AT_abstract_origin
+ .byte 0 # End Of Children Mark
+ .byte 4 # Abbrev [4] 0x2d:0x1d DW_TAG_subprogram
+ .byte 3 # DW_AT_low_pc
+ .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc
+ .byte 1 # DW_AT_frame_base
+ .byte 86
+ .long 97 # DW_AT_abstract_origin
+ .byte 3 # Abbrev [3] 0x39:0x8 DW_TAG_formal_parameter
+ .byte 2 # DW_AT_location
+ .byte 145
+ .byte 124
+ .long 107 # DW_AT_abstract_origin
+ .byte 5 # Abbrev [5] 0x41:0x8 DW_TAG_variable
+ .byte 2 # DW_AT_location
+ .byte 145
+ .byte 120
+ .long 115 # DW_AT_abstract_origin
+ .byte 0 # End Of Children Mark
+ .byte 6 # Abbrev [6] 0x4a:0x13 DW_TAG_subprogram
+ .byte 0 # DW_AT_linkage_name
+ .byte 1 # DW_AT_name
+ .byte 1 # DW_AT_decl_file
+ .byte 2 # DW_AT_decl_line
+ .long 93 # DW_AT_type
+ # DW_AT_external
+ .byte 1 # DW_AT_inline
+ .byte 7 # Abbrev [7] 0x54:0x8 DW_TAG_formal_parameter
+ .byte 3 # DW_AT_name
+ .byte 1 # DW_AT_decl_file
+ .byte 2 # DW_AT_decl_line
+ .long 93 # DW_AT_type
+ .byte 0 # End Of Children Mark
+ .byte 8 # Abbrev [8] 0x5d:0x4 DW_TAG_base_type
+ .byte 2 # DW_AT_name
+ .byte 5 # DW_AT_encoding
+ .byte 4 # DW_AT_byte_size
+ .byte 6 # Abbrev [6] 0x61:0x1b DW_TAG_subprogram
+ .byte 4 # DW_AT_linkage_name
+ .byte 5 # DW_AT_name
+ .byte 1 # DW_AT_decl_file
+ .byte 8 # DW_AT_decl_line
+ .long 93 # DW_AT_type
+ # DW_AT_external
+ .byte 1 # DW_AT_inline
+ .byte 7 # Abbrev [7] 0x6b:0x8 DW_TAG_formal_parameter
+ .byte 3 # DW_AT_name
+ .byte 1 # DW_AT_decl_file
+ .byte 8 # DW_AT_decl_line
+ .long 93 # DW_AT_type
+ .byte 9 # Abbrev [9] 0x73:0x8 DW_TAG_variable
+ .byte 6 # DW_AT_name
+ .byte 1 # DW_AT_decl_file
+ .byte 9 # DW_AT_decl_line
+ .long 93 # DW_AT_type
+ .byte 0 # End Of Children Mark
+ .byte 10 # Abbrev [10] 0x7c:0x58 DW_TAG_subprogram
+ .long .Ldebug_ranges1-.debug_ranges # DW_AT_ranges
+ .byte 1 # DW_AT_frame_base
+ .byte 86
+ .byte 7 # DW_AT_name
+ .byte 1 # DW_AT_decl_file
+ .byte 14 # DW_AT_decl_line
+ .long 93 # DW_AT_type
+ # DW_AT_external
+ .byte 11 # Abbrev [11] 0x8a:0xb DW_TAG_formal_parameter
+ .byte 2 # DW_AT_location
+ .byte 145
+ .byte 108
+ .byte 8 # DW_AT_name
+ .byte 1 # DW_AT_decl_file
+ .byte 14 # DW_AT_decl_line
+ .long 93 # DW_AT_type
+ .byte 11 # Abbrev [11] 0x95:0xb DW_TAG_formal_parameter
+ .byte 2 # DW_AT_location
+ .byte 145
+ .byte 96
+ .byte 9 # DW_AT_name
+ .byte 1 # DW_AT_decl_file
+ .byte 14 # DW_AT_decl_line
+ .long 212 # DW_AT_type
+ .byte 12 # Abbrev [12] 0xa0:0x15 DW_TAG_inlined_subroutine
+ .long 74 # DW_AT_abstract_origin
+ .long .Ldebug_ranges2-.debug_ranges # DW_AT_ranges
+ .byte 1 # DW_AT_call_file
+ .byte 15 # DW_AT_call_line
+ .byte 13 # DW_AT_call_column
+ .byte 3 # Abbrev [3] 0xac:0x8 DW_TAG_formal_parameter
+ .byte 2 # DW_AT_location
+ .byte 145
+ .byte 116
+ .long 84 # DW_AT_abstract_origin
+ .byte 0 # End Of Children Mark
+ .byte 13 # Abbrev [13] 0xb5:0x1e DW_TAG_inlined_subroutine
+ .long 97 # DW_AT_abstract_origin
+ .byte 7 # DW_AT_low_pc
+ .long .Ltmp8-.Ltmp7 # DW_AT_high_pc
+ .byte 1 # DW_AT_call_file
+ .byte 15 # DW_AT_call_line
+ .byte 29 # DW_AT_call_column
+ .byte 3 # Abbrev [3] 0xc2:0x8 DW_TAG_formal_parameter
+ .byte 2 # DW_AT_location
+ .byte 145
+ .byte 124
+ .long 107 # DW_AT_abstract_origin
+ .byte 5 # Abbrev [5] 0xca:0x8 DW_TAG_variable
+ .byte 2 # DW_AT_location
+ .byte 145
+ .byte 120
+ .long 115 # DW_AT_abstract_origin
+ .byte 0 # End Of Children Mark
+ .byte 0 # End Of Children Mark
+ .byte 14 # Abbrev [14] 0xd4:0x5 DW_TAG_pointer_type
+ .long 217 # DW_AT_type
+ .byte 14 # Abbrev [14] 0xd9:0x5 DW_TAG_pointer_type
+ .long 222 # DW_AT_type
+ .byte 15 # Abbrev [15] 0xde:0x5 DW_TAG_const_type
+ .long 227 # DW_AT_type
+ .byte 8 # Abbrev [8] 0xe3:0x4 DW_TAG_base_type
+ .byte 10 # DW_AT_name
+ .byte 6 # DW_AT_encoding
+ .byte 1 # DW_AT_byte_size
+ .byte 0 # End Of Children Mark
+.Ldebug_info_dwo_end0:
+ .section .debug_abbrev.dwo,"e",@progbits
+ .byte 1 # Abbreviation Code
+ .byte 17 # DW_TAG_compile_unit
+ .byte 1 # DW_CHILDREN_yes
+ .byte 37 # DW_AT_producer
+ .ascii "\202>" # DW_FORM_GNU_str_index
+ .byte 19 # DW_AT_language
+ .byte 5 # DW_FORM_data2
+ .byte 3 # DW_AT_name
+ .ascii "\202>" # DW_FORM_GNU_str_index
+ .ascii "\260B" # DW_AT_GNU_dwo_name
+ .ascii "\202>" # DW_FORM_GNU_str_index
+ .ascii "\261B" # DW_AT_GNU_dwo_id
+ .byte 7 # DW_FORM_data8
+ .byte 0 # EOM(1)
+ .byte 0 # EOM(2)
+ .byte 2 # Abbreviation Code
+ .byte 46 # DW_TAG_subprogram
+ .byte 1 # DW_CHILDREN_yes
+ .byte 85 # DW_AT_ranges
+ .byte 23 # DW_FORM_sec_offset
+ .byte 64 # DW_AT_frame_base
+ .byte 24 # DW_FORM_exprloc
+ .byte 49 # DW_AT_abstract_origin
+ .byte 19 # DW_FOR...
[truncated]
|
ayermolo
reviewed
May 29, 2024
e1bb069
to
2ac2cdf
Compare
ayermolo
reviewed
May 30, 2024
2ac2cdf
to
235d8a1
Compare
de409af
to
752397d
Compare
ayermolo
approved these changes
May 31, 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Small nit, otherwise LGTM
752397d
to
59cc711
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adds a split-dwarf test for DWARF4 with multiple CUs.