diff options
author | Venkatraman Govindaraju <venkatra@cs.wisc.edu> | 2014-01-29 06:59:20 +0000 |
---|---|---|
committer | Venkatraman Govindaraju <venkatra@cs.wisc.edu> | 2014-01-29 06:59:20 +0000 |
commit | 141d0e2221ac05bf8fe039eb7e6ca9b9a4779f16 (patch) | |
tree | baf3aa2c7f73688f58a00c874487bfd804df7e8e /llvm/lib/Target/Sparc | |
parent | b366f01f836d1dc61a449c6d4656e6b3117142fb (diff) | |
download | bcm5719-llvm-141d0e2221ac05bf8fe039eb7e6ca9b9a4779f16.tar.gz bcm5719-llvm-141d0e2221ac05bf8fe039eb7e6ca9b9a4779f16.zip |
[Sparc] Use %r_disp32 for pc_rel entries in FDE as well.
This makes MCAsmInfo::getExprForFDESymbol() a virtual function and overrides it in SparcMCAsmInfo.
llvm-svn: 200376
Diffstat (limited to 'llvm/lib/Target/Sparc')
-rw-r--r-- | llvm/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.cpp | 12 | ||||
-rw-r--r-- | llvm/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.h | 4 |
2 files changed, 16 insertions, 0 deletions
diff --git a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.cpp b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.cpp index 856b4bbf5d1..c5948680472 100644 --- a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.cpp +++ b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.cpp @@ -56,3 +56,15 @@ SparcELFMCAsmInfo::getExprForPersonalitySymbol(const MCSymbol *Sym, return MCAsmInfo::getExprForPersonalitySymbol(Sym, Encoding, Streamer); } + +const MCExpr* +SparcELFMCAsmInfo::getExprForFDESymbol(const MCSymbol *Sym, + unsigned Encoding, + MCStreamer &Streamer) const { + if (Encoding & dwarf::DW_EH_PE_pcrel) { + MCContext &Ctx = Streamer.getContext(); + return SparcMCExpr::Create(SparcMCExpr::VK_Sparc_R_DISP32, + MCSymbolRefExpr::Create(Sym, Ctx), Ctx); + } + return MCAsmInfo::getExprForFDESymbol(Sym, Encoding, Streamer); +} diff --git a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.h b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.h index 71dcf6bec35..d53d09deee4 100644 --- a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.h +++ b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.h @@ -26,6 +26,10 @@ public: virtual const MCExpr* getExprForPersonalitySymbol(const MCSymbol *Sym, unsigned Encoding, MCStreamer &Streamer) const; + virtual const MCExpr* getExprForFDESymbol(const MCSymbol *Sym, + unsigned Encoding, + MCStreamer &Streamer) const; + }; } // namespace llvm |