AddrDelta(&AddrDelta) {}
const MCExpr &getAddrDelta() const { return *AddrDelta; }
+ void setAddrDelta(const MCExpr *E) { AddrDelta = E; }
static bool classof(const MCFragment *F) {
return F->getKind() == MCFragment::FT_DwarfFrame;
if (!Abs) {
getContext().reportError(DF.getAddrDelta().getLoc(),
"invalid CFI advance_loc expression");
+ DF.setAddrDelta(MCConstantExpr::create(0, Context));
return false;
}
if (BaseLabel && Label) {
MCSymbol *ThisSym = Label;
if (ThisSym != BaseLabel) {
- Streamer.emitDwarfAdvanceFrameAddr(BaseLabel, ThisSym, {});
+ Streamer.emitDwarfAdvanceFrameAddr(BaseLabel, ThisSym, Instr.getLoc());
BaseLabel = ThisSym;
}
}
# RUN: not llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o /dev/null 2>&1 | FileCheck %s --implicit-check-not=error:
-# CHECK-COUNT-4: <unknown>:0: error: invalid CFI advance_loc expression
-
.section __TEXT,__text
.globl _foo
_foo:
tmp0: # non-private label cannot appear here
addq $8, %rsp
+# CHECK: :[[#@LINE+1]]:3: error: invalid CFI advance_loc expression
.cfi_adjust_cfa_offset -8
.tmp1: # non-private label cannot appear here
addq $8, %rsp
+# CHECK: :[[#@LINE+1]]:3: error: invalid CFI advance_loc expression
.cfi_adjust_cfa_offset -8
retq
.cfi_endproc