summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2016-03-15 04:20:49 +0000
committerLang Hames <lhames@gmail.com>2016-03-15 04:20:49 +0000
commitabda4d2526342cd057e7bcd86eccf2634e24aacb (patch)
tree515cef5de29cfe0062d3dc7d4e95d6af14aa67d6 /llvm/lib
parent257338ff0fa2c12f9c67df0e5c9d4492ad72e40a (diff)
downloadbcm5719-llvm-abda4d2526342cd057e7bcd86eccf2634e24aacb.tar.gz
bcm5719-llvm-abda4d2526342cd057e7bcd86eccf2634e24aacb.zip
[MachO] Extend the alt_entry support for aliases added in r263521 to
expressions of the form 'a = .' and 'a = Ltmp'. llvm-svn: 263528
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/MC/MCMachOStreamer.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/llvm/lib/MC/MCMachOStreamer.cpp b/llvm/lib/MC/MCMachOStreamer.cpp
index a72516375a7..7f0bfbd9a65 100644
--- a/llvm/lib/MC/MCMachOStreamer.cpp
+++ b/llvm/lib/MC/MCMachOStreamer.cpp
@@ -203,10 +203,13 @@ void MCMachOStreamer::EmitLabel(MCSymbol *Symbol) {
void MCMachOStreamer::EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) {
MCValue Res;
- if (Value->evaluateAsRelocatable(Res, nullptr, nullptr))
- if (Res.getSymA() && !Res.getSymB() && Res.getConstant() != 0)
- cast<MCSymbolMachO>(Symbol)->setAltEntry();
-
+ if (Value->evaluateAsRelocatable(Res, nullptr, nullptr)) {
+ if (const MCSymbolRefExpr *SymAExpr = Res.getSymA()) {
+ const MCSymbol &SymA = SymAExpr->getSymbol();
+ if (!Res.getSymB() && (SymA.getName() == "" || Res.getConstant() != 0))
+ cast<MCSymbolMachO>(Symbol)->setAltEntry();
+ }
+ }
MCObjectStreamer::EmitAssignment(Symbol, Value);
}
OpenPOWER on IntegriCloud