[llvm] r253219 - [ARM, AArch64] Store source location for values in assembly files

Eric Christopher via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 16 10:40:34 PST 2015


Idle question:

Would it be reasonable to require the location in the parsers rather than
an optional? Make users that don't want a location to think about it and
explicitly pass an unknown location?

-eric

On Mon, Nov 16, 2015 at 8:25 AM Oliver Stannard via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: olista01
> Date: Mon Nov 16 10:22:47 2015
> New Revision: 253219
>
> URL: http://llvm.org/viewvc/llvm-project?rev=253219&view=rev
> Log:
> [ARM,AArch64] Store source location for values in assembly files
>
> The MCValue class can store a SMLoc to allow better error messages to be
> emitted if an error is detected after parsing. The ARM and AArch64 assembly
> parsers were not setting this, so error messages did not have source
> information.
>
> Differential Revision: http://reviews.llvm.org/D14645
>
>
> Added:
>     llvm/trunk/test/MC/AArch64/error-location.s
>     llvm/trunk/test/MC/ARM/error-location.s
> Modified:
>     llvm/trunk/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
>     llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp
>     llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
>     llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp
>
> Modified: llvm/trunk/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp?rev=253219&r1=253218&r2=253219&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp (original)
> +++ llvm/trunk/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp Mon Nov
> 16 10:22:47 2015
> @@ -4131,7 +4131,7 @@ bool AArch64AsmParser::parseDirectiveWor
>        if (getParser().parseExpression(Value))
>          return true;
>
> -      getParser().getStreamer().EmitValue(Value, Size);
> +      getParser().getStreamer().EmitValue(Value, Size, L);
>
>        if (getLexer().is(AsmToken::EndOfStatement))
>          break;
>
> Modified: llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp?rev=253219&r1=253218&r2=253219&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp
> (original)
> +++ llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp Mon
> Nov 16 10:22:47 2015
> @@ -130,7 +130,7 @@ public:
>    /// if necessary.
>    void EmitValueImpl(const MCExpr *Value, unsigned Size, SMLoc Loc)
> override {
>      EmitDataMappingSymbol();
> -    MCELFStreamer::EmitValueImpl(Value, Size);
> +    MCELFStreamer::EmitValueImpl(Value, Size, Loc);
>    }
>
>  private:
>
> Modified: llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp?rev=253219&r1=253218&r2=253219&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp Mon Nov 16
> 10:22:47 2015
> @@ -8801,7 +8801,7 @@ bool ARMAsmParser::parseLiteralValues(un
>          return false;
>        }
>
> -      getParser().getStreamer().EmitValue(Value, Size);
> +      getParser().getStreamer().EmitValue(Value, Size, L);
>
>        if (getLexer().is(AsmToken::EndOfStatement))
>          break;
>
> Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp?rev=253219&r1=253218&r2=253219&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp Mon Nov 16
> 10:22:47 2015
> @@ -513,7 +513,7 @@ public:
>          getContext().reportFatalError(Loc, "relocated expression must be
> 32-bit");
>
>      EmitDataMappingSymbol();
> -    MCELFStreamer::EmitValueImpl(Value, Size);
> +    MCELFStreamer::EmitValueImpl(Value, Size, Loc);
>    }
>
>    void EmitAssemblerFlag(MCAssemblerFlag Flag) override {
>
> Added: llvm/trunk/test/MC/AArch64/error-location.s
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AArch64/error-location.s?rev=253219&view=auto
>
> ==============================================================================
> --- llvm/trunk/test/MC/AArch64/error-location.s (added)
> +++ llvm/trunk/test/MC/AArch64/error-location.s Mon Nov 16 10:22:47 2015
> @@ -0,0 +1,5 @@
> +// RUN: not llvm-mc -triple aarch64--none-eabi -filetype obj < %s -o
> /dev/null 2>&1 | FileCheck %s
> +
> +  .text
> +// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: symbol 'undef' can not be
> undefined in a subtraction expression
> +  .word (0-undef)
>
> Added: llvm/trunk/test/MC/ARM/error-location.s
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/error-location.s?rev=253219&view=auto
>
> ==============================================================================
> --- llvm/trunk/test/MC/ARM/error-location.s (added)
> +++ llvm/trunk/test/MC/ARM/error-location.s Mon Nov 16 10:22:47 2015
> @@ -0,0 +1,5 @@
> +@ RUN: not llvm-mc -triple armv7a--none-eabi -filetype obj < %s -o
> /dev/null 2>&1 | FileCheck %s
> +
> +  .text
> +@ CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: symbol 'undef' can not be
> undefined in a subtraction expression
> +  .word (0-undef)
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151116/f3582d9f/attachment.html>


More information about the llvm-commits mailing list