summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-03-20 21:26:38 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-03-20 21:26:38 +0000
commit98629c4e4de90380fd3821b7111ff1bd74761ffe (patch)
tree6895bd6da6a033baeabd6a883526c2c5871048ed /llvm/lib
parent868d4b312207bf1fe135f0834b5c5623ab90ec5f (diff)
downloadbcm5719-llvm-98629c4e4de90380fd3821b7111ff1bd74761ffe.tar.gz
bcm5719-llvm-98629c4e4de90380fd3821b7111ff1bd74761ffe.zip
Don't use EmitAbsValue with symbol references.
The function exists to force an expression to be absolute, but there it is not possible to force a symbol reference since a = b .long a means something else. This is an alternative fix for pr9951 that uses an assert. It then deletes the old pr9951 test that was testing nothing already. llvm-svn: 204399
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/MC/MCDwarf.cpp8
-rw-r--r--llvm/lib/MC/MCStreamer.cpp4
2 files changed, 6 insertions, 6 deletions
diff --git a/llvm/lib/MC/MCDwarf.cpp b/llvm/lib/MC/MCDwarf.cpp
index c1e53d7bfe8..79f1312fcaa 100644
--- a/llvm/lib/MC/MCDwarf.cpp
+++ b/llvm/lib/MC/MCDwarf.cpp
@@ -619,7 +619,7 @@ static void EmitGenDwarfAranges(MCStreamer *MCOS,
context.getGenDwarfSectionStartSym(), MCSymbolRefExpr::VK_None, context);
const MCExpr *Size = MakeStartMinusEndExpr(*MCOS,
*context.getGenDwarfSectionStartSym(), *SectionEndSym, 0);
- MCOS->EmitAbsValue(Addr, AddrSize);
+ MCOS->EmitValue(Addr, AddrSize);
MCOS->EmitAbsValue(Size, AddrSize);
// And finally the pair of terminating zeros.
@@ -682,12 +682,12 @@ static void EmitGenDwarfInfo(MCStreamer *MCOS,
// AT_low_pc, the first address of the default .text section.
const MCExpr *Start = MCSymbolRefExpr::Create(
context.getGenDwarfSectionStartSym(), MCSymbolRefExpr::VK_None, context);
- MCOS->EmitAbsValue(Start, AddrSize);
+ MCOS->EmitValue(Start, AddrSize);
// AT_high_pc, the last address of the default .text section.
const MCExpr *End = MCSymbolRefExpr::Create(
context.getGenDwarfSectionEndSym(), MCSymbolRefExpr::VK_None, context);
- MCOS->EmitAbsValue(End, AddrSize);
+ MCOS->EmitValue(End, AddrSize);
// AT_name, the name of the source file. Reconstruct from the first directory
// and file table entries.
@@ -756,7 +756,7 @@ static void EmitGenDwarfInfo(MCStreamer *MCOS,
// AT_low_pc, start address of the label.
const MCExpr *AT_low_pc = MCSymbolRefExpr::Create(Entry->getLabel(),
MCSymbolRefExpr::VK_None, context);
- MCOS->EmitAbsValue(AT_low_pc, AddrSize);
+ MCOS->EmitValue(AT_low_pc, AddrSize);
// DW_AT_prototyped, a one byte flag value of 0 saying we have no prototype.
MCOS->EmitIntValue(0, 1);
diff --git a/llvm/lib/MC/MCStreamer.cpp b/llvm/lib/MC/MCStreamer.cpp
index 6638fdeb486..0558a58abfd 100644
--- a/llvm/lib/MC/MCStreamer.cpp
+++ b/llvm/lib/MC/MCStreamer.cpp
@@ -73,8 +73,8 @@ const MCExpr *MCStreamer::BuildSymbolDiff(MCContext &Context,
}
const MCExpr *MCStreamer::ForceExpAbs(const MCExpr* Expr) {
- if (Context.getAsmInfo()->hasAggressiveSymbolFolding() ||
- isa<MCSymbolRefExpr>(Expr))
+ assert(!isa<MCSymbolRefExpr>(Expr));
+ if (Context.getAsmInfo()->hasAggressiveSymbolFolding())
return Expr;
MCSymbol *ABS = Context.CreateTempSymbol();
OpenPOWER on IntegriCloud