diff options
author | Kevin Enderby <enderby@apple.com> | 2014-04-22 17:27:29 +0000 |
---|---|---|
committer | Kevin Enderby <enderby@apple.com> | 2014-04-22 17:27:29 +0000 |
commit | 29c96f133e9e10a8a2f1a8da4441a53f6d461b7c (patch) | |
tree | 57b2eed6b6507af918d066bcc7a78a091d0a6c0b /lib/LTO | |
parent | 795e462cc4a94bd6cceefc441038027f4179841b (diff) | |
download | llvm-29c96f133e9e10a8a2f1a8da4441a53f6d461b7c.tar.gz llvm-29c96f133e9e10a8a2f1a8da4441a53f6d461b7c.tar.bz2 llvm-29c96f133e9e10a8a2f1a8da4441a53f6d461b7c.tar.xz |
Fix the assembler to print a better relocatable expression error
diagnostic that includes location information.
Currently if one has this assembly:
.quad (0x1234 + (4 * SOME_VALUE))
where SOME_VALUE is undefined ones gets the less than
useful error message with no location information:
% clang -c x.s
clang -cc1as: fatal error: error in backend: expected relocatable expression
With this fix one now gets a more useful error message
with location information:
% clang -c x.s
x.s:5:8: error: expected relocatable expression
.quad (0x1234 + (4 * SOME_VALUE))
^
To do this I plumbed the SMLoc through the MCObjectStreamer
EmitValue() and EmitValueImpl() interfaces so it could be used
when creating the MCFixup.
rdar://12391022
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206906 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/LTO')
-rw-r--r-- | lib/LTO/LTOModule.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/LTO/LTOModule.cpp b/lib/LTO/LTOModule.cpp index 4b471cd0d7..c02f05c94a 100644 --- a/lib/LTO/LTOModule.cpp +++ b/lib/LTO/LTOModule.cpp @@ -698,7 +698,8 @@ namespace { void EmitTBSSSymbol(const MCSection *Section, MCSymbol *Symbol, uint64_t Size, unsigned ByteAlignment) override {} void EmitBytes(StringRef Data) override {} - void EmitValueImpl(const MCExpr *Value, unsigned Size) override {} + void EmitValueImpl(const MCExpr *Value, unsigned Size, + const SMLoc &Loc) override {} void EmitULEB128Value(const MCExpr *Value) override {} void EmitSLEB128Value(const MCExpr *Value) override {} void EmitValueToAlignment(unsigned ByteAlignment, int64_t Value, |