diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2010-11-07 02:07:12 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2010-11-07 02:07:12 +0000 |
commit | 187d8339dbc0530850e54a86edf36f1a865a5823 (patch) | |
tree | 6c3ea25816bcfdb489a70e4063ea83c12feb5934 /include/llvm/MC/MCAssembler.h | |
parent | 689cf3cb6222652b92fdbd52e96c1d2f421ac44e (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.h | 12 |
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); |