Skip to content

Commit 30f24ba

Browse files
Merge pull request #6718 from rastogishubham/LineTableFix
Fix cas-friendly line table emission in llvm
2 parents a29011f + fc66da1 commit 30f24ba

File tree

8 files changed

+126
-91
lines changed

8 files changed

+126
-91
lines changed

llvm/include/llvm/MC/MCDwarf.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ class MCLineSection {
230230

231231
// Add an end entry by cloning the last entry, if exists, for the section
232232
// the given EndLabel belongs to. The label is replaced by the given EndLabel.
233-
void addEndEntry(MCSymbol *EndLabel);
233+
void addEndEntry(MCSymbol *EndLabel, bool CasFriendlyDebugInfo = false);
234234

235235
using MCDwarfLineEntryCollection = std::vector<MCDwarfLineEntry>;
236236
using iterator = MCDwarfLineEntryCollection::iterator;

llvm/include/llvm/MC/MCStreamer.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,9 @@ class MCStreamer {
254254
/// discussion for future inclusion.
255255
bool AllowAutoPadding = false;
256256

257+
/// Generate debug info that is Cas Friendly
258+
bool GenerateCasFriendlyDebugInfo = false;
259+
257260
protected:
258261
MCStreamer(MCContext &Ctx);
259262

@@ -308,6 +311,13 @@ class MCStreamer {
308311
void setAllowAutoPadding(bool v) { AllowAutoPadding = v; }
309312
bool getAllowAutoPadding() const { return AllowAutoPadding; }
310313

314+
void setGenerateCasFriendlyDebugInfo(bool v) {
315+
GenerateCasFriendlyDebugInfo = v;
316+
}
317+
bool getGenerateCasFriendlyDebugInfo() const {
318+
return GenerateCasFriendlyDebugInfo;
319+
}
320+
311321
/// When emitting an object file, create and emit a real label. When emitting
312322
/// textual assembly, this should do nothing to avoid polluting our output.
313323
virtual MCSymbol *emitCFILabel();

llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,7 @@ DwarfDebug::DwarfDebug(AsmPrinter *A)
464464
Asm->OutStreamer->getContext().setDwarfFormat(Dwarf64 ? dwarf::DWARF64
465465
: dwarf::DWARF32);
466466

467-
GenerateCasFriendlyDebugInfo = CasFriendlyDebugInfo;
467+
Asm->OutStreamer->setGenerateCasFriendlyDebugInfo(CasFriendlyDebugInfo);
468468
}
469469

470470
// Define out of line so we don't have to include DwarfUnit.h in DwarfDebug.h.
@@ -2233,7 +2233,8 @@ void DwarfDebug::terminateLineTable(const DwarfCompileUnit *CU) {
22332233
getDwarfCompileUnitIDForLineTable(*CU));
22342234
// Add the last range label for the given CU.
22352235
LineTable.getMCLineSections().addEndEntry(
2236-
const_cast<MCSymbol *>(CURanges.back().End));
2236+
const_cast<MCSymbol *>(CURanges.back().End),
2237+
Asm->OutStreamer->getGenerateCasFriendlyDebugInfo());
22372238
}
22382239

22392240
void DwarfDebug::skippedNonDebugFunction() {
@@ -2329,7 +2330,7 @@ void DwarfDebug::endFunctionImpl(const MachineFunction *MF) {
23292330
// we want to split up the line tables by function. To do this, we want to
23302331
// emit a DW_LNE_end_sequence at the end of a function's contribution to the
23312332
// line table.
2332-
if (GenerateCasFriendlyDebugInfo) {
2333+
if (Asm->OutStreamer->getGenerateCasFriendlyDebugInfo()) {
23332334
MCSymbol *LineSym = Asm->OutStreamer->getContext().createTempSymbol();
23342335
Asm->OutStreamer->emitLabel(LineSym);
23352336
MCDwarfLoc DwarfLoc(

llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -379,9 +379,6 @@ class DwarfDebug : public DebugHandlerBase {
379379
/// Avoid using DW_OP_convert due to consumer incompatibilities.
380380
bool EnableOpConvert;
381381

382-
/// Generate debug info that is Cas Friendly
383-
bool GenerateCasFriendlyDebugInfo;
384-
385382
public:
386383
enum class MinimizeAddrInV5 {
387384
Default,

llvm/lib/MC/MCDwarf.cpp

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -144,21 +144,26 @@ makeStartPlusIntExpr(MCContext &Ctx, const MCSymbol &Start, int IntVal) {
144144
return Res;
145145
}
146146

147-
void MCLineSection::addEndEntry(MCSymbol *EndLabel) {
147+
void MCLineSection::addEndEntry(MCSymbol *EndLabel, bool CasFriendlyDebugInfo) {
148148
auto *Sec = &EndLabel->getSection();
149149
// The line table may be empty, which we should skip adding an end entry.
150-
// There are two cases:
150+
// There are three cases:
151151
// (1) MCAsmStreamer - emitDwarfLocDirective emits a location directive in
152152
// place instead of adding a line entry if the target has
153153
// usesDwarfFileAndLocDirectives.
154154
// (2) MCObjectStreamer - if a function has incomplete debug info where
155155
// instructions don't have DILocations, the line entries are missing.
156+
// (3) If the debug info is cas friendly, there is an end_sequence after every
157+
// function and another one doesn't have to be emitted at the end of the line
158+
// table.
156159
auto I = MCLineDivisions.find(Sec);
157160
if (I != MCLineDivisions.end()) {
158161
auto &Entries = I->second;
159162
auto EndEntry = Entries.back();
160-
EndEntry.setEndLabel(EndLabel);
161-
Entries.push_back(EndEntry);
163+
if (!CasFriendlyDebugInfo) {
164+
EndEntry.setEndLabel(EndLabel);
165+
Entries.push_back(EndEntry);
166+
}
162167
}
163168
}
164169

@@ -173,7 +178,9 @@ void MCDwarfLineTable::emitOne(
173178
unsigned FileNum, LastLine, Column, Flags, Isa, Discriminator;
174179
MCSymbol *LastLabel;
175180
auto init = [&]() {
176-
FileNum = 1;
181+
// Force emission of DW_LNS_set_file for every function's contribution to
182+
// the line table to maximize deduplication.
183+
FileNum = MCOS->getGenerateCasFriendlyDebugInfo() ? 0 : 1;
177184
LastLine = 1;
178185
Column = 0;
179186
Flags = DWARF2_LINE_DEFAULT_IS_STMT ? DWARF2_FLAG_IS_STMT : 0;
@@ -188,29 +195,22 @@ void MCDwarfLineTable::emitOne(
188195
for (const MCDwarfLineEntry &LineEntry : LineEntries) {
189196
MCSymbol *Label = LineEntry.getLabel();
190197
const MCAsmInfo *asmInfo = MCOS->getContext().getAsmInfo();
191-
if (LineEntry.IsEndEntry) {
198+
if (LineEntry.IsEndEntry || LineEntry.IsEndOfFunction) {
192199
MCOS->emitDwarfAdvanceLineAddr(INT64_MAX, LastLabel, Label,
193200
asmInfo->getCodePointerSize());
194201
init();
195202
EndEntryEmitted = true;
196203
continue;
197204
}
198-
if (LineEntry.IsEndOfFunction) {
199-
MCOS->emitInt8(char(dwarf::DW_LNS_extended_op));
200-
MCOS->emitInt8(char(1));
201-
MCOS->emitInt8(char(dwarf::DW_LNE_end_sequence));
202-
init();
203-
continue;
204-
}
205205

206206
int64_t LineDelta = static_cast<int64_t>(LineEntry.getLine()) - LastLine;
207207

208-
if (FileNum != LineEntry.getFileNum() || LineEntry.IsEndOfFunction) {
208+
if (FileNum != LineEntry.getFileNum()) {
209209
FileNum = LineEntry.getFileNum();
210210
MCOS->emitInt8(dwarf::DW_LNS_set_file);
211211
MCOS->emitULEB128IntValue(FileNum);
212212
}
213-
if (Column != LineEntry.getColumn() || LineEntry.IsEndOfFunction) {
213+
if (Column != LineEntry.getColumn()) {
214214
Column = LineEntry.getColumn();
215215
MCOS->emitInt8(dwarf::DW_LNS_set_column);
216216
MCOS->emitULEB128IntValue(Column);

llvm/test/DebugInfo/CAS/AArch64/debug_line_and_info_dedupe.test

Lines changed: 95 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ CHECK-NEXT: DW_TAG_compile_unit
1111
CHECK: CAS Block: llvmcas://[[SUBPROGRAM_FOO:[a-z0-9]+]]
1212
CHECK-NEXT: DW_TAG_subprogram
1313
CHECK: mc:debug_line llvmcas://
14-
CHECK-NEXT: mc:debug_line llvmcas://
1514
CHECK-NEXT: mc:debug_line llvmcas://[[LINETABLECASID:[a-z0-9]+]]
15+
CHECK-NEXT: mc:debug_line llvmcas://
1616

1717

1818
CHECK: mc:assembler
@@ -22,79 +22,109 @@ CHECK: CAS Block: llvmcas://[[SUBPROGRAM_FOO]]
2222
CHECK-NEXT: DW_TAG_subprogram
2323
CHECK: mc:debug_line llvmcas://
2424
CHECK-NEXT: mc:debug_line llvmcas://
25-
CHECK-NEXT: mc:debug_line llvmcas://
2625
CHECK-NEXT: mc:debug_line llvmcas://[[LINETABLECASID]]
26+
CHECK-NEXT: mc:debug_line llvmcas://
2727

2828
//--- a.ll
2929

30-
target triple = "arm64-apple-macosx12.0.0"
31-
define void @foo() #0 !dbg !9 {
32-
ret void, !dbg !14
30+
; ModuleID = 'a.cpp'
31+
source_filename = "a.cpp"
32+
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
33+
target triple = "arm64-apple-macosx13.0.0"
34+
35+
; Function Attrs: noinline nounwind optnone ssp uwtable(sync)
36+
define i32 @_Z3foov() #0 !dbg !10 {
37+
ret i32 3, !dbg !16
3338
}
34-
define void @bar(i32 noundef %x) #0 !dbg !15 {
35-
ret void, !dbg !23
39+
40+
; Function Attrs: noinline nounwind optnone ssp uwtable(sync)
41+
define i32 @_Z4foo2v() #0 !dbg !17 {
42+
ret i32 4, !dbg !18
3643
}
37-
attributes #0 = { noinline nounwind optnone ssp uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "tune-cpu"="generic" }
38-
!llvm.dbg.cu = !{!0}
39-
!llvm.module.flags = !{!2, !3, !4, !5, !6, !7}
40-
!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 16.0.0 (https://github.com/apple/llvm-project.git d74d0d9fde90cccba7bf18066ac56e55e4402948)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None, sysroot: "/")
41-
!1 = !DIFile(filename: "a.c", directory: "/Users/shubham/Development/CASDelta")
42-
!2 = !{i32 7, !"Dwarf Version", i32 4}
43-
!3 = !{i32 2, !"Debug Info Version", i32 3}
44-
!4 = !{i32 1, !"wchar_size", i32 4}
45-
!5 = !{i32 7, !"PIC Level", i32 2}
46-
!6 = !{i32 7, !"uwtable", i32 2}
47-
!7 = !{i32 7, !"frame-pointer", i32 2}
48-
!9 = distinct !DISubprogram(name: "foo", scope: !10, file: !10, line: 1, type: !11, scopeLine: 1, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !13)
49-
!10 = !DIFile(filename: "./foo.h", directory: "/Users/shubham/Development/CASDelta")
50-
!11 = !DISubroutineType(types: !12)
51-
!12 = !{null}
52-
!13 = !{}
53-
!14 = !DILocation(line: 2, column: 3, scope: !9)
54-
!15 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 2, type: !16, scopeLine: 2, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !13)
55-
!16 = !DISubroutineType(types: !17)
56-
!17 = !{!18, !18}
57-
!18 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
58-
!23 = !DILocation(line: 3, column: 3, scope: !15)
44+
45+
; Function Attrs: noinline nounwind optnone ssp uwtable(sync)
46+
define i32 @_Z3barv() #0 !dbg !19 {
47+
ret i32 2, !dbg !20
48+
}
49+
50+
!llvm.module.flags = !{!0, !1, !2, !3, !4, !5, !6}
51+
!llvm.dbg.cu = !{!7}
52+
!llvm.ident = !{!9}
53+
54+
!0 = !{i32 2, !"SDK Version", [2 x i32] [i32 14, i32 0]}
55+
!1 = !{i32 7, !"Dwarf Version", i32 4}
56+
!2 = !{i32 2, !"Debug Info Version", i32 3}
57+
!3 = !{i32 1, !"wchar_size", i32 4}
58+
!4 = !{i32 8, !"PIC Level", i32 2}
59+
!5 = !{i32 7, !"uwtable", i32 1}
60+
!6 = !{i32 7, !"frame-pointer", i32 1}
61+
!7 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !8, producer: "clang", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None, sysroot: "/Users/somepath", sdk: "MacOSX.sdk")
62+
!8 = !DIFile(filename: "a.cpp", directory: "/Users/shubham/Development/testclang")
63+
!9 = !{!"clang"}
64+
!10 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: !11, file: !11, line: 1, type: !12, scopeLine: 1, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !15)
65+
!11 = !DIFile(filename: "./foo.h", directory: "/Users/shubham/Development/testclang")
66+
!12 = !DISubroutineType(types: !13)
67+
!13 = !{!14}
68+
!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
69+
!15 = !{}
70+
!16 = !DILocation(line: 2, column: 3, scope: !10)
71+
!17 = distinct !DISubprogram(name: "foo2", linkageName: "_Z4foo2v", scope: !11, file: !11, line: 4, type: !12, scopeLine: 4, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !15)
72+
!18 = !DILocation(line: 5, column: 3, scope: !17)
73+
!19 = distinct !DISubprogram(name: "bar", linkageName: "_Z3barv", scope: !8, file: !8, line: 2, type: !12, scopeLine: 2, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !15)
74+
!20 = !DILocation(line: 3, column: 3, scope: !19)
75+
5976

6077
//--- b.ll
6178

62-
target triple = "arm64-apple-macosx12.0.0"
63-
define i32 @baz() #0 !dbg !9 {
64-
ret i32 1, !dbg !14
79+
; ModuleID = 'b.cpp'
80+
source_filename = "b.cpp"
81+
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
82+
target triple = "arm64-apple-macosx13.0.0"
83+
84+
; Function Attrs: noinline nounwind optnone ssp uwtable(sync)
85+
define i32 @_Z3bazv() #0 !dbg !10 {
86+
ret i32 1, !dbg !15
87+
}
88+
89+
; Function Attrs: noinline nounwind optnone ssp uwtable(sync)
90+
define i32 @_Z3foov() #0 !dbg !16 {
91+
ret i32 3, !dbg !18
6592
}
66-
define void @foo() #0 !dbg !15 {
67-
ret void, !dbg !19
93+
94+
; Function Attrs: noinline nounwind optnone ssp uwtable(sync)
95+
define i32 @_Z4foo2v() #0 !dbg !19 {
96+
ret i32 4, !dbg !20
6897
}
69-
define void @bar(i32 noundef %x) #0 !dbg !20 {
70-
entry:
71-
ret void, !dbg !27
98+
99+
; Function Attrs: noinline nounwind optnone ssp uwtable(sync)
100+
define i32 @_Z3barv() #0 !dbg !21 {
101+
ret i32 2, !dbg !22
72102
}
73-
attributes #0 = { noinline nounwind optnone ssp uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "tune-cpu"="generic" }
74-
!llvm.dbg.cu = !{!0}
75-
!llvm.module.flags = !{!2, !3, !4, !5, !6, !7}
76-
!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 16.0.0 (https://github.com/apple/llvm-project.git d74d0d9fde90cccba7bf18066ac56e55e4402948)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None, sysroot: "/")
77-
!1 = !DIFile(filename: "b.c", directory: "/Users/shubham/Development/CASDelta")
78-
!2 = !{i32 7, !"Dwarf Version", i32 4}
79-
!3 = !{i32 2, !"Debug Info Version", i32 3}
80-
!4 = !{i32 1, !"wchar_size", i32 4}
81-
!5 = !{i32 7, !"PIC Level", i32 2}
82-
!6 = !{i32 7, !"uwtable", i32 2}
83-
!7 = !{i32 7, !"frame-pointer", i32 2}
84-
!9 = distinct !DISubprogram(name: "baz", scope: !1, file: !1, line: 1, type: !10, scopeLine: 1, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !13)
85-
!10 = !DISubroutineType(types: !11)
86-
!11 = !{!12}
87-
!12 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
88-
!13 = !{}
89-
!14 = !DILocation(line: 2, column: 5, scope: !9)
90-
!15 = distinct !DISubprogram(name: "foo", scope: !16, file: !16, line: 1, type: !17, scopeLine: 1, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !13)
91-
!16 = !DIFile(filename: "./foo.h", directory: "/Users/shubham/Development/CASDelta")
92-
!17 = !DISubroutineType(types: !18)
93-
!18 = !{null}
94-
!19 = !DILocation(line: 2, column: 3, scope: !15)
95-
!20 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 6, type: !21, scopeLine: 6, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !13)
96-
!21 = !DISubroutineType(types: !22)
97-
!22 = !{!12, !12}
98-
!25 = !DILocation(line: 7, column: 10, scope: !20)
99-
!26 = !DILocation(line: 7, column: 11, scope: !20)
100-
!27 = !DILocation(line: 7, column: 3, scope: !20)
103+
104+
!llvm.module.flags = !{!0, !1, !2, !3, !4, !5, !6}
105+
!llvm.dbg.cu = !{!7}
106+
!llvm.ident = !{!9}
107+
108+
!0 = !{i32 2, !"SDK Version", [2 x i32] [i32 14, i32 0]}
109+
!1 = !{i32 7, !"Dwarf Version", i32 4}
110+
!2 = !{i32 2, !"Debug Info Version", i32 3}
111+
!3 = !{i32 1, !"wchar_size", i32 4}
112+
!4 = !{i32 8, !"PIC Level", i32 2}
113+
!5 = !{i32 7, !"uwtable", i32 1}
114+
!6 = !{i32 7, !"frame-pointer", i32 1}
115+
!7 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !8, producer: "clang", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None, sysroot: "/Users/somepath", sdk: "MacOSX.some.sdk")
116+
!8 = !DIFile(filename: "b.cpp", directory: "/Users/shubham/Development/testclang")
117+
!9 = !{!"clang"}
118+
!10 = distinct !DISubprogram(name: "baz", linkageName: "_Z3bazv", scope: !8, file: !8, line: 1, type: !11, scopeLine: 1, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !14)
119+
!11 = !DISubroutineType(types: !12)
120+
!12 = !{!13}
121+
!13 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
122+
!14 = !{}
123+
!15 = !DILocation(line: 2, column: 5, scope: !10)
124+
!16 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: !17, file: !17, line: 1, type: !11, scopeLine: 1, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !14)
125+
!17 = !DIFile(filename: "./foo.h", directory: "/Users/shubham/Development/testclang")
126+
!18 = !DILocation(line: 2, column: 3, scope: !16)
127+
!19 = distinct !DISubprogram(name: "foo2", linkageName: "_Z4foo2v", scope: !17, file: !17, line: 4, type: !11, scopeLine: 4, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !14)
128+
!20 = !DILocation(line: 5, column: 3, scope: !19)
129+
!21 = distinct !DISubprogram(name: "bar", linkageName: "_Z3barv", scope: !8, file: !8, line: 5, type: !11, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !14)
130+
!22 = !DILocation(line: 6, column: 5, scope: !21)

llvm/test/DebugInfo/X86/cas-friendly.ll

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
; CHECK-NEXT: 0x{{[0-9a-z]+}} 10 2 1 0 0
2828
; CHECK-NEXT: 0x{{[0-9a-z]+}} 10 2 1 0 0 epilogue_begin
2929
; CHECK-NEXT: 0x{{[0-9a-z]+}} 10 2 1 0 0 end_sequence
30-
; CHECK-NEXT: 0x{{[0-9a-z]+}} 1 0 1 0 0 is_stmt end_sequence
3130

3231
; ModuleID = './test.c'
3332
source_filename = "./test.c"

llvm/test/tools/llvm-cas-dump/basic_debug_test.ll

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@
1616
; DWARF: version: 4
1717
; DWARF: prologue_length: 0x000000{{[0-9a-f]+}}
1818
; DWARF: 0x0000000000000000 3 3 1 0 0 is_stmt prologue_end
19-
; DWARF: 0x0000000000000000 3 3 1 0 0 is_stmt end_sequence
20-
; DWARF: 0x0000000000000008 1 0 1 0 0 is_stmt end_sequence
19+
; DWARF: 0x0000000000000008 3 3 1 0 0 is_stmt end_sequence
2120

2221
; CHECK: mc:assembler llvmcas://{{.*}}
2322
; CHECK-NEXT: mc:header llvmcas://{{.*}}
@@ -44,7 +43,6 @@
4443
; CHECK-NEXT: mc:debug_line_section llvmcas://{{.*}}
4544
; CHECK-NEXT: mc:debug_line_distinct_data llvmcas://{{.*}}
4645
; CHECK-NEXT: mc:debug_line llvmcas://{{.*}}
47-
; CHECK-NEXT: mc:debug_line llvmcas://{{.*}}
4846
; CHECK-NEXT: mc:padding llvmcas://{{.*}}
4947
; CHECK-NEXT: mc:data_in_code llvmcas://{{.*}}
5048
; CHECK-NEXT: mc:symbol_table llvmcas://{{.*}}

0 commit comments

Comments
 (0)