This is the mail archive of the
mailing list for the GCC project.
Re: inline asm and multi-alternative constraints
- From: David Wohlferd <dw at LimeGreenSocks dot com>
- To: Richard Earnshaw <Richard dot Earnshaw at foss dot arm dot com>, Segher Boessenkool <segher at kernel dot crashing dot org>
- Cc: Jeff Law <law at redhat dot com>, Sandra Loosemore <sandra at codesourcery dot com>, Richard Henderson <rth at redhat dot com>, "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>, pinskia at gcc dot gnu dot org, rearnsha at gcc dot gnu dot org
- Date: Wed, 11 Nov 2015 01:23:40 -0800
- Subject: Re: inline asm and multi-alternative constraints
- Authentication-results: sourceware.org; auth=none
- References: <562DA0E2 dot 1040405 at LimeGreenSocks dot com> <562FE71E dot 7010309 at redhat dot com> <563285D8 dot 6020001 at redhat dot com> <563430F8 dot 7020406 at LimeGreenSocks dot com> <5637EC6F dot 7020505 at redhat dot com> <5637F50A dot 1090002 at codesourcery dot com> <56385495 dot 1050507 at LimeGreenSocks dot com> <563D29D7 dot 9000707 at redhat dot com> <20151107004639 dot GA27264 at gate dot crashing dot org> <563DAD50 dot 1010701 at LimeGreenSocks dot com> <20151107092313 dot GA13062 at gate dot crashing dot org> <56406E01 dot 2060504 at foss dot arm dot com> <56406F62 dot 1000303 at foss dot arm dot com>
On 11/9/2015 2:03 AM, Richard Earnshaw wrote:
On 09/11/15 09:57, Richard Earnshaw wrote:
On 07/11/15 09:23, Segher Boessenkool wrote:
On Fri, Nov 06, 2015 at 11:50:40PM -0800, David Wohlferd wrote:
The same goes for some constraints and almost all output modifiers.
Are you suggesting more doc changes? Looking thru the pages you reference:
- Starting with 'modifiers', "=+&" and (reluctantly) "%" seem reasonable
for inline asm. But both "#*" seem sketchy.
Output modifiers, not constraint modifiers -- things like "%X0" in
the output template. Many are only useful in the machine description,
but some (like that 'X' for rs6000) are vital for asm as well.
They're not just useful, they're essential on AArch64 and ARM. They're
needed, for example, to get the 32/64-bit register sizing correct.
On the other hand, we have %S on ARM which cannot ever be used from
inline assembler: it matches the result of a match_operator rule with
complex internal structure that could never be generated from user code.
I don't know enough about ARM to be comfortable making a change here
myself. But dropping this out of the docs is simple enough. All you
need to do is wrap it with
Then it will still show up in the Machine Description section, but not
the users' guide.