aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/MC/MCAssembler.h
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2010-11-07 02:07:12 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2010-11-07 02:07:12 +0000
commit187d8339dbc0530850e54a86edf36f1a865a5823 (patch)
tree6c3ea25816bcfdb489a70e4063ea83c12feb5934 /include/llvm/MC/MCAssembler.h
parent689cf3cb6222652b92fdbd52e96c1d2f421ac44e (diff)
Relax dwarf line fragments. This fixes a crash in the included testcase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118365 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/MC/MCAssembler.h')
-rw-r--r--include/llvm/MC/MCAssembler.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/include/llvm/MC/MCAssembler.h b/include/llvm/MC/MCAssembler.h
index 6a1f83e159..a757a92208 100644
--- a/include/llvm/MC/MCAssembler.h
+++ b/include/llvm/MC/MCAssembler.h
@@ -388,11 +388,14 @@ class MCDwarfLineAddrFragment : public MCFragment {
/// make up the address delta between two .loc dwarf directives.
const MCExpr *AddrDelta;
+ /// Size - The current size estimate.
+ uint64_t Size;
+
public:
MCDwarfLineAddrFragment(int64_t _LineDelta, const MCExpr &_AddrDelta,
MCSectionData *SD = 0)
: MCFragment(FT_Dwarf, SD),
- LineDelta(_LineDelta), AddrDelta(&_AddrDelta) {}
+ LineDelta(_LineDelta), AddrDelta(&_AddrDelta), Size(1) {}
/// @name Accessors
/// @{
@@ -401,6 +404,10 @@ public:
const MCExpr &getAddrDelta() const { return *AddrDelta; }
+ uint64_t getSize() const { return Size; }
+
+ void setSize(uint64_t Size_) { Size = Size_; }
+
/// @}
static bool classof(const MCFragment *F) {
@@ -727,6 +734,9 @@ private:
bool RelaxLEB(const MCObjectWriter &Writer, MCAsmLayout &Layout,
MCLEBFragment &IF);
+ bool RelaxDwarfLineAddr(const MCObjectWriter &Writer, MCAsmLayout &Layout,
+ MCDwarfLineAddrFragment &DF);
+
/// FinishLayout - Finalize a layout, including fragment lowering.
void FinishLayout(MCAsmLayout &Layout);