Skip to content

Commit 9f85447

Browse files
committed
[DebugInfo] Store instr-ref mode of MachineFunction in member
Add a flag state (and a MIR key) to MachineFunctions indicating whether they contain instruction referencing debug-info or not. Whether DBG_VALUEs or DBG_INSTR_REFs are used needs to be determined by LiveDebugValues at least, and using the current optimisation level as a proxy is proving unreliable. Test updates are purely adding the flag to tests, in a couple of cases it involves separating out VarLocBasedLDV/InstrRefBasedLDV tests into separate files, as they can no longer share the same input. Differential Revision: https://reviews.llvm.org/D141387
1 parent bdf3060 commit 9f85447

File tree

73 files changed

+539
-90
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+539
-90
lines changed

llvm/include/llvm/CodeGen/FastISel.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,6 @@ class FastISel {
213213
const TargetRegisterInfo &TRI;
214214
const TargetLibraryInfo *LibInfo;
215215
bool SkipTargetIndependentISel;
216-
bool UseInstrRefDebugInfo = false;
217216

218217
/// The position of the last instruction for materializing constants
219218
/// for use in the current block. It resets to EmitStartPt when it makes sense
@@ -320,12 +319,6 @@ class FastISel {
320319
/// Reset InsertPt to the given old insert position.
321320
void leaveLocalValueArea(SavePoint Old);
322321

323-
/// Signal whether instruction referencing variable locations are desired for
324-
/// this function's debug-info.
325-
void useInstrRefDebugInfo(bool Flag) {
326-
UseInstrRefDebugInfo = Flag;
327-
}
328-
329322
protected:
330323
explicit FastISel(FunctionLoweringInfo &FuncInfo,
331324
const TargetLibraryInfo *LibInfo,

llvm/include/llvm/CodeGen/MIRYamlMapping.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -707,6 +707,7 @@ struct MachineFunction {
707707

708708
bool FailsVerification = false;
709709
bool TracksDebugUserValues = false;
710+
bool UseDebugInstrRef = false;
710711
std::vector<VirtualRegisterDefinition> VirtualRegisters;
711712
std::vector<MachineFunctionLiveIn> LiveIns;
712713
std::optional<std::vector<FlowStringValue>> CalleeSavedRegisters;
@@ -741,6 +742,7 @@ template <> struct MappingTraits<MachineFunction> {
741742
YamlIO.mapOptional("hasEHCatchret", MF.HasEHCatchret, false);
742743
YamlIO.mapOptional("hasEHScopes", MF.HasEHScopes, false);
743744
YamlIO.mapOptional("hasEHFunclets", MF.HasEHFunclets, false);
745+
YamlIO.mapOptional("debugInstrRef", MF.UseDebugInstrRef, false);
744746

745747
YamlIO.mapOptional("failsVerification", MF.FailsVerification, false);
746748
YamlIO.mapOptional("tracksDebugUserValues", MF.TracksDebugUserValues,

llvm/include/llvm/CodeGen/MachineFunction.h

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,10 @@ class LLVM_EXTERNAL_VISIBILITY MachineFunction {
527527
/// during register allocation. See DebugPHIRegallocPos.
528528
DenseMap<unsigned, DebugPHIRegallocPos> DebugPHIPositions;
529529

530+
/// Flag for whether this function contains DBG_VALUEs (false) or
531+
/// DBG_INSTR_REF (true).
532+
bool UseDebugInstrRef = false;
533+
530534
/// Create a substitution between one <instr,operand> value to a different,
531535
/// new value.
532536
void makeDebugValueSubstitution(DebugInstrOperandPair, DebugInstrOperandPair,
@@ -567,10 +571,17 @@ class LLVM_EXTERNAL_VISIBILITY MachineFunction {
567571
/// (or DBG_PHI).
568572
void finalizeDebugInstrRefs();
569573

570-
/// Returns true if the function's variable locations should be tracked with
574+
/// Determine whether, in the current machine configuration, we should use
575+
/// instruction referencing or not.
576+
bool shouldUseDebugInstrRef() const;
577+
578+
/// Returns true if the function's variable locations are tracked with
571579
/// instruction referencing.
572580
bool useDebugInstrRef() const;
573581

582+
/// Set whether this function will use instruction referencing or not.
583+
void setUseDebugInstrRef(bool UseInstrRef);
584+
574585
/// A reserved operand number representing the instructions memory operand,
575586
/// for instructions that have a stack spill fused into them.
576587
const static unsigned int DebugOperandMemNumber;

llvm/include/llvm/CodeGen/SelectionDAG.h

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -293,9 +293,6 @@ class SelectionDAG {
293293
/// benefits (see discussion with @thakis in D120714).
294294
uint16_t NextPersistentId = 0;
295295

296-
/// Are instruction referencing variable locations desired for this function?
297-
bool UseInstrRefDebugInfo = false;
298-
299296
public:
300297
/// Clients of various APIs that cause global effects on
301298
/// the DAG can optionally implement this interface. This allows the clients
@@ -1901,16 +1898,6 @@ class SelectionDAG {
19011898
/// function mirrors \c llvm::salvageDebugInfo.
19021899
void salvageDebugInfo(SDNode &N);
19031900

1904-
/// Signal whether instruction referencing variable locations are desired for
1905-
/// this function's debug-info.
1906-
void useInstrRefDebugInfo(bool Flag) {
1907-
UseInstrRefDebugInfo = Flag;
1908-
}
1909-
1910-
bool getUseInstrRefDebugInfo() const {
1911-
return UseInstrRefDebugInfo;
1912-
}
1913-
19141901
void dump() const;
19151902

19161903
/// In most cases this function returns the ABI alignment for a given type,

llvm/include/llvm/CodeGen/SelectionDAGISel.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ class SelectionDAGISel : public MachineFunctionPass {
5656
const TargetLowering *TLI;
5757
bool FastISelFailed;
5858
SmallPtrSet<const Instruction *, 4> ElidedArgCopyInstrs;
59-
bool UseInstrRefDebugInfo = false;
6059

6160
/// Current optimization remark emitter.
6261
/// Used to report things like combines and FastISel failures.

llvm/lib/CodeGen/MIRParser/MIRParser.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,9 @@ void MIRParserImpl::setupDebugValueTracking(
443443
MF.makeDebugValueSubstitution({Sub.SrcInst, Sub.SrcOp},
444444
{Sub.DstInst, Sub.DstOp}, Sub.Subreg);
445445
}
446+
447+
// Flag for whether we're supposed to be using DBG_INSTR_REF.
448+
MF.setUseDebugInstrRef(YamlMF.UseDebugInstrRef);
446449
}
447450

448451
bool

llvm/lib/CodeGen/MIRPrinter.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ void MIRPrinter::print(const MachineFunction &MF) {
200200
YamlMF.HasEHCatchret = MF.hasEHCatchret();
201201
YamlMF.HasEHScopes = MF.hasEHScopes();
202202
YamlMF.HasEHFunclets = MF.hasEHFunclets();
203+
YamlMF.UseDebugInstrRef = MF.useDebugInstrRef();
203204

204205
YamlMF.Legalized = MF.getProperties().hasProperty(
205206
MachineFunctionProperties::Property::Legalized);

llvm/lib/CodeGen/MachineFunction.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1195,7 +1195,7 @@ void MachineFunction::finalizeDebugInstrRefs() {
11951195
}
11961196
}
11971197

1198-
bool MachineFunction::useDebugInstrRef() const {
1198+
bool MachineFunction::shouldUseDebugInstrRef() const {
11991199
// Disable instr-ref at -O0: it's very slow (in compile time). We can still
12001200
// have optimized code inlined into this unoptimized code, however with
12011201
// fewer and less aggressive optimizations happening, coverage and accuracy
@@ -1213,6 +1213,14 @@ bool MachineFunction::useDebugInstrRef() const {
12131213
return false;
12141214
}
12151215

1216+
bool MachineFunction::useDebugInstrRef() const {
1217+
return UseDebugInstrRef;
1218+
}
1219+
1220+
void MachineFunction::setUseDebugInstrRef(bool Use) {
1221+
UseDebugInstrRef = Use;
1222+
}
1223+
12161224
// Use one million as a high / reserved number.
12171225
const unsigned MachineFunction::DebugOperandMemNumber = 1000000;
12181226

llvm/lib/CodeGen/SelectionDAG/FastISel.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1247,7 +1247,7 @@ bool FastISel::selectIntrinsicCall(const IntrinsicInst *II) {
12471247
if (Op) {
12481248
assert(DI->getVariable()->isValidLocationForIntrinsic(MIMD.getDL()) &&
12491249
"Expected inlined-at fields to agree");
1250-
if (UseInstrRefDebugInfo && Op->isReg()) {
1250+
if (FuncInfo.MF->useDebugInstrRef() && Op->isReg()) {
12511251
// If using instruction referencing, produce this as a DBG_INSTR_REF,
12521252
// to be later patched up by finalizeDebugInstrRefs. Tack a deref onto
12531253
// the expression, we don't have an "indirect" flag in DBG_INSTR_REF.
@@ -1309,7 +1309,7 @@ bool FastISel::selectIntrinsicCall(const IntrinsicInst *II) {
13091309
.addMetadata(DI->getExpression());
13101310
} else if (Register Reg = lookUpRegForValue(V)) {
13111311
// FIXME: This does not handle register-indirect values at offset 0.
1312-
if (!UseInstrRefDebugInfo) {
1312+
if (!FuncInfo.MF->useDebugInstrRef()) {
13131313
bool IsIndirect = false;
13141314
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, MIMD.getDL(), II, IsIndirect,
13151315
Reg, DI->getVariable(), DI->getExpression());

llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1395,12 +1395,11 @@ EmitSpecialNode(SDNode *Node, bool IsClone, bool IsCloned,
13951395
/// InstrEmitter - Construct an InstrEmitter and set it to start inserting
13961396
/// at the given position in the given block.
13971397
InstrEmitter::InstrEmitter(const TargetMachine &TM, MachineBasicBlock *mbb,
1398-
MachineBasicBlock::iterator insertpos,
1399-
bool UseInstrRefDebugInfo)
1398+
MachineBasicBlock::iterator insertpos)
14001399
: MF(mbb->getParent()), MRI(&MF->getRegInfo()),
14011400
TII(MF->getSubtarget().getInstrInfo()),
14021401
TRI(MF->getSubtarget().getRegisterInfo()),
14031402
TLI(MF->getSubtarget().getTargetLowering()), MBB(mbb),
14041403
InsertPos(insertpos) {
1405-
EmitDebugInstrRefs = UseInstrRefDebugInfo;
1404+
EmitDebugInstrRefs = mbb->getParent()->useDebugInstrRef();
14061405
}

llvm/lib/CodeGen/SelectionDAG/InstrEmitter.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,7 @@ class LLVM_LIBRARY_VISIBILITY InstrEmitter {
156156
/// InstrEmitter - Construct an InstrEmitter and set it to start inserting
157157
/// at the given position in the given block.
158158
InstrEmitter(const TargetMachine &TM, MachineBasicBlock *mbb,
159-
MachineBasicBlock::iterator insertpos,
160-
bool UseInstrRefDebugInfo);
159+
MachineBasicBlock::iterator insertpos);
161160

162161
private:
163162
void EmitMachineNode(SDNode *Node, bool IsClone, bool IsCloned,

llvm/lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -778,8 +778,7 @@ void ScheduleDAGLinearize::Schedule() {
778778

779779
MachineBasicBlock*
780780
ScheduleDAGLinearize::EmitSchedule(MachineBasicBlock::iterator &InsertPos) {
781-
InstrEmitter Emitter(DAG->getTarget(), BB, InsertPos,
782-
DAG->getUseInstrRefDebugInfo());
781+
InstrEmitter Emitter(DAG->getTarget(), BB, InsertPos);
783782
DenseMap<SDValue, Register> VRBaseMap;
784783

785784
LLVM_DEBUG({ dbgs() << "\n*** Final schedule ***\n"; });

llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -848,8 +848,7 @@ EmitPhysRegCopy(SUnit *SU, DenseMap<SUnit*, Register> &VRBaseMap,
848848
/// not necessarily refer to returned BB. The emitter may split blocks.
849849
MachineBasicBlock *ScheduleDAGSDNodes::
850850
EmitSchedule(MachineBasicBlock::iterator &InsertPos) {
851-
InstrEmitter Emitter(DAG->getTarget(), BB, InsertPos,
852-
DAG->getUseInstrRefDebugInfo());
851+
InstrEmitter Emitter(DAG->getTarget(), BB, InsertPos);
853852
DenseMap<SDValue, Register> VRBaseMap;
854853
DenseMap<SUnit*, Register> CopyVRBaseMap;
855854
SmallVector<std::pair<unsigned, MachineInstr*>, 32> Orders;

llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -392,8 +392,8 @@ bool SelectionDAGISel::runOnMachineFunction(MachineFunction &mf) {
392392

393393
// Decide what flavour of variable location debug-info will be used, before
394394
// we change the optimisation level.
395-
UseInstrRefDebugInfo = mf.useDebugInstrRef();
396-
CurDAG->useInstrRefDebugInfo(UseInstrRefDebugInfo);
395+
bool InstrRef = mf.shouldUseDebugInstrRef();
396+
mf.setUseDebugInstrRef(InstrRef);
397397

398398
// Reset the target options before resetting the optimization
399399
// level below.
@@ -546,7 +546,6 @@ bool SelectionDAGISel::runOnMachineFunction(MachineFunction &mf) {
546546
LiveInMap.insert(LI);
547547

548548
// Insert DBG_VALUE instructions for function arguments to the entry block.
549-
bool InstrRef = MF->useDebugInstrRef();
550549
for (unsigned i = 0, e = FuncInfo->ArgDbgValues.size(); i != e; ++i) {
551550
MachineInstr *MI = FuncInfo->ArgDbgValues[e - i - 1];
552551
assert(MI->getOpcode() != TargetOpcode::DBG_VALUE_LIST &&
@@ -624,7 +623,7 @@ bool SelectionDAGISel::runOnMachineFunction(MachineFunction &mf) {
624623

625624
// For debug-info, in instruction referencing mode, we need to perform some
626625
// post-isel maintenence.
627-
if (UseInstrRefDebugInfo)
626+
if (MF->useDebugInstrRef())
628627
MF->finalizeDebugInstrRefs();
629628

630629
// Determine if there are any calls in this machine function.
@@ -1380,8 +1379,6 @@ void SelectionDAGISel::SelectAllBasicBlocks(const Function &Fn) {
13801379
if (TM.Options.EnableFastISel) {
13811380
LLVM_DEBUG(dbgs() << "Enabling fast-isel\n");
13821381
FastIS = TLI->createFastISel(*FuncInfo, LibInfo);
1383-
if (FastIS)
1384-
FastIS->useInstrRefDebugInfo(UseInstrRefDebugInfo);
13851382
}
13861383

13871384
ReversePostOrderTraversal<const Function*> RPOT(&Fn);

llvm/test/CodeGen/X86/dbg-value-superreg-copy2.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
---
3333
name: foo
3434
tracksRegLiveness: true
35+
debugInstrRef: true
3536
debugValueSubstitutions:
3637
- { srcinst: 2, srcop: 0, dstinst: 1, dstop: 0, subreg: 2 }
3738
body: |

llvm/test/DebugInfo/MIR/InstrRef/accept-nonlive-reg-phis.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ name: c
7373
alignment: 16
7474
tracksRegLiveness: true
7575
tracksDebugUserValues: true
76+
debugInstrRef: true
7677
frameInfo:
7778
maxAlignment: 4
7879
machineFunctionInfo: {}

llvm/test/DebugInfo/MIR/InstrRef/dbg-phi-subregister-location.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
name: foo
5151
alignment: 16
5252
tracksRegLiveness: true
53+
debugInstrRef: true
5354
liveins:
5455
- { reg: '$edi' }
5556
frameInfo:

llvm/test/DebugInfo/MIR/InstrRef/dbg-phis-in-ldv.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@
8686
name: foo
8787
alignment: 16
8888
tracksRegLiveness: true
89+
debugInstrRef: true
8990
liveins:
9091
- { reg: '$rdi' }
9192
- { reg: '$rsi' }

llvm/test/DebugInfo/MIR/InstrRef/dbg-phis-in-ldv2.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
name: foo
4646
alignment: 16
4747
tracksRegLiveness: true
48+
debugInstrRef: true
4849
liveins:
4950
- { reg: '$rdi' }
5051
- { reg: '$rsi' }

llvm/test/DebugInfo/MIR/InstrRef/dbg-phis-merging-in-ldv.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@
9898
name: foo
9999
alignment: 16
100100
tracksRegLiveness: true
101+
debugInstrRef: true
101102
liveins:
102103
- { reg: '$rdi' }
103104
- { reg: '$rsi' }

llvm/test/DebugInfo/MIR/InstrRef/dbg-phis-with-loops.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@
9999
name: foo
100100
alignment: 16
101101
tracksRegLiveness: true
102+
debugInstrRef: true
102103
liveins:
103104
- { reg: '$rdi' }
104105
- { reg: '$rsi' }

llvm/test/DebugInfo/MIR/InstrRef/deref-spills-with-size.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@
138138
name: _ZNSt5dequeIPN4llvm4LoopESaIS2_EE13_M_insert_auxESt15_Deque_iteratorIS2_RS2_PS2_EmRKS2_
139139
alignment: 16
140140
tracksRegLiveness: true
141+
debugInstrRef: true
141142
liveins:
142143
- { reg: '$rdi' }
143144
- { reg: '$rsi' }

llvm/test/DebugInfo/MIR/InstrRef/follow-spill-of-indir-value.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@
9999
name: _Z3foo10NonTrivial
100100
alignment: 16
101101
tracksRegLiveness: true
102+
debugInstrRef: true
102103
tracksDebugUserValues: true
103104
liveins:
104105
- { reg: '$rdi' }

llvm/test/DebugInfo/MIR/InstrRef/follow-spill-of-live-value.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@
178178
name: _ZNSt5dequeIPN4llvm4LoopESaIS2_EE13_M_insert_auxESt15_Deque_iteratorIS2_RS2_PS2_EmRKS2_
179179
alignment: 16
180180
tracksRegLiveness: true
181+
debugInstrRef: true
181182
liveins:
182183
- { reg: '$rdi' }
183184
- { reg: '$rsi' }

llvm/test/DebugInfo/MIR/InstrRef/instr-ref-roundtrip.mir

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22
#
33
# REQUIRES: x86-registered-target
44
#
5+
# CHECK: debugInstrRef: true
56
# CHECK: MOV64rr $rdi, debug-instr-number 1
67
---
78
name: test
89
tracksRegLiveness: true
10+
debugInstrRef: true
911
liveins:
1012
- { reg: '$rdi', virtual-reg: '' }
1113
body: |

llvm/test/DebugInfo/MIR/InstrRef/livedebugvalues-transfer-variadic-instr-ref.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ name: _Z3fooii
155155
alignment: 16
156156
tracksRegLiveness: true
157157
tracksDebugUserValues: true
158+
debugInstrRef: true
158159
registers: []
159160
liveins:
160161
- { reg: '$edi', virtual-reg: '' }

llvm/test/DebugInfo/MIR/InstrRef/livedebugvalues_illegal_locs.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
...
3838
---
3939
name: _Z8bb_to_bb
40+
debugInstrRef: true
4041
debugValueSubstitutions:
4142
- { srcinst: 4, srcop: 0, dstinst: 3, dstop: 0, subreg: 0 }
4243
body: |

llvm/test/DebugInfo/MIR/InstrRef/livedebugvalues_instrref_tolocs.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
...
3232
---
3333
name: _Z8bb_to_bb
34+
debugInstrRef: true
3435
debugValueSubstitutions:
3536
- { srcinst: 4, srcop: 0, dstinst: 3, dstop: 0, subreg: 0 }
3637
body: |

llvm/test/DebugInfo/MIR/InstrRef/livedebugvalues_recover_clobbers.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
...
5151
---
5252
name: _Z8bb_to_bb
53+
debugInstrRef: true
5354
stack:
5455
- { id: 0, type: spill-slot, offset: -12, size: 4, alignment: 4 }
5556
body: |

llvm/test/DebugInfo/MIR/InstrRef/livedebugvalues_stackslot_subregs.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
---
3030
name: test
3131
tracksRegLiveness: true
32+
debugInstrRef: true
3233
liveins:
3334
- { reg: '$rdi', virtual-reg: '' }
3435
stack:

llvm/test/DebugInfo/MIR/InstrRef/livedebugvalues_subreg_substitutions.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
---
3232
name: test
3333
tracksRegLiveness: true
34+
debugInstrRef: true
3435
liveins:
3536
- { reg: '$rdi', virtual-reg: '' }
3637
debugValueSubstitutions:

llvm/test/DebugInfo/MIR/InstrRef/memory-operand-folding-tieddef.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
name: _ZNK4llvm5APInt5magicEv
5858
alignment: 16
5959
tracksRegLiveness: true
60+
debugInstrRef: true
6061
registers:
6162
- { id: 0, class: gr64 }
6263
- { id: 1, class: gr32 }

0 commit comments

Comments
 (0)