mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
[RISCV] Move DebugLoc Copy into CompressInstEmitter
Summary: This copy ensures that debug location information is kept for compressed instructions. There are places where both compressInstruction and uncompressInstruction are called that were not doing this copy, discarding some debug info. This change merely moves the copy into the generated file, so you cannot forget to copy the location over when compressing or uncompressing. Reviewers: asb, luismarques Reviewed By: luismarques Subscribers: sameer.abuasal, aprantl, hiraditya, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, kito-cheng, shiva0217, jrtc27, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, psnobl, benna, Jim, s.egerton, pzheng, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D67493
This commit is contained in:
parent
16e0e6d447
commit
ab5c772c29
@ -1610,7 +1610,6 @@ bool RISCVAsmParser::parseDirectiveOption() {
|
||||
void RISCVAsmParser::emitToStreamer(MCStreamer &S, const MCInst &Inst) {
|
||||
MCInst CInst;
|
||||
bool Res = compressInst(CInst, Inst, getSTI(), S.getContext());
|
||||
CInst.setLoc(Inst.getLoc());
|
||||
S.EmitInstruction((Res ? CInst : Inst), getSTI());
|
||||
}
|
||||
|
||||
|
20
test/MC/RISCV/compress-debug-info.s
Normal file
20
test/MC/RISCV/compress-debug-info.s
Normal file
@ -0,0 +1,20 @@
|
||||
# RUN: llvm-mc -triple riscv32 -mattr=+c %s -g -o - -riscv-no-aliases \
|
||||
# RUN: | FileCheck %s -check-prefixes=COMPRESS,BOTH
|
||||
# RUN: llvm-mc -triple riscv32 %s -g -o - -riscv-no-aliases \
|
||||
# RUN: | FileCheck %s -check-prefixes=UNCOMPRESS,BOTH
|
||||
|
||||
|
||||
# This file ensures that compressing an instruction preserves its debug info.
|
||||
|
||||
|
||||
# BOTH-LABEL: .text
|
||||
|
||||
# BOTH: .file 1
|
||||
# BOTH-SAME: "compress-debug-info.s"
|
||||
|
||||
# BOTH: .loc 1 [[# @LINE + 3 ]] 0
|
||||
# UNCOMPRESS-NEXT: addi a0, a1, 0
|
||||
# COMPRESS-NEXT: c.mv a0, a1
|
||||
addi a0, a1, 0
|
||||
|
||||
# BOTH-LABEL: .debug_info
|
@ -728,6 +728,7 @@ void RISCVCompressInstEmitter::emitCompressInstEmitter(raw_ostream &o,
|
||||
}
|
||||
++OpNo;
|
||||
}
|
||||
CodeStream.indent(6) << "OutInst.setLoc(MI.getLoc());\n";
|
||||
CaseStream << mergeCondAndCode(CondStream, CodeStream);
|
||||
PrevOp = CurOp;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user