[llvm-dev] [RFC] Case insensitive assembly directives for all targets

Oliver Stannard via llvm-dev llvm-dev at lists.llvm.org
Wed Feb 5 03:44:49 PST 2020


> do you agree with the changes so far?
Yes, if GAS is case-insensitive for directives, then requiring them to be
lower-case in LLVM is a needless incompatibility.

> should the same changes be applied to other targets?
I don't have any experience with targets other than ARM and AArch64 either,
but being consistent between targets, and between LLVM and GAS, both seem
like positives.

> could there be future situations where a target would need case specific
directives?
That would imply that there are two directives which differ only in case,
but do different things, which I'd prefer we avoid. If we had to do this,
for example for GAS compatibility, then we could put in an exception (as
GAS would surely also have to do).

> Where should this behaviour (whatever it ends up as) be documented?
We don't currently have much (maybe even any) documentation for the
LLVM/clang assembler, we mostly just rely on being compatible with GAS.
Maybe that's something that we should change, but it's a much bigger issue
than this. I don't think there's any point in documenting that we do the
same thing as GAS in this one corner case, when GAS compatibility is
generally assumed.

Oliver

On Wed, 5 Feb 2020 at 11:05, David Spickett via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Hi all,
>
> In response to this issue[0] on Bugzilla, I recently committed changes to
> make assembly directives case insensitive for generic directives and their
> aliases[1], ARM[2] and AArch64[3]. (since those are the targets I have
> knowledge of)
>
> I realise this was probably a bit too hasty of me, so I'm writing this to
> gather feedback on how to proceed.
>
> Some concerns were raised that it may be easier to fix projects that
> aren't using lower case directives. My intent was more to remove our
> reliance on case in general, which is more an implementation detail than a
> feature as far as I can tell. Maybe this is not a strong enough argument
> for change.
>
> No target in llvm uses anything but lower case directives. Some targets
> supported by GCC/binutils do document mixed case directives, but accept any
> case.
>
> So my questions for the list are:
>
>    - do you agree with the changes so far? (happy to revert if not)
>    - should the same changes be applied to other targets?
>    - could there be future situations where a target would need case
>    specific directives?
>    - Where should this behaviour (whatever it ends up as) be documented?
>    I found [4] but it's more about extensions than the assembler as such.
>
> Thanks,
> David Spickett.
>
> [0] https://bugs.llvm.org/show_bug.cgi?id=39527
> [1] https://reviews.llvm.org/D72686
> [2] https://reviews.llvm.org/D73469
> [3] https://reviews.llvm.org/D72923
> [4] https://llvm.org/docs/Extensions.html
> LLVM Extensions — LLVM 10 documentation
> <https://llvm.org/docs/Extensions.html>
> SHT_LLVM_ADDRSIG Section (address-significance table) ¶. This section is
> used to mark symbols as address-significant, i.e. the address of the symbol
> is used in a comparison or leaks outside the translation unit.
> llvm.org
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200205/f9b7649c/attachment.html>


More information about the llvm-dev mailing list