Hi Andrew,

On 25/06/17 22:38, Andrew Pinski wrote:
On Tue, Jun 6, 2017 at 3:56 AM, Renlin Li <renlin...@foss.arm.com> wrote:
Hi all,

In this patch, a new integer register operand modifier 'r' is added. This
will use the
proper register name according to the mode of corresponding operand.

'w' register for scalar integer mode smaller than DImode
'x' register for DImode

This allows more flexibility and would meet people's expectations.
It will help for ILP32 and LP64, and big-endian case.

A new section is added to document the AArch64 operand modifiers which might
be used in inline assembly. It's not an exhaustive list covers every
modifier.
Only the most common and useful ones are documented.

The default behavior of integer operand without modifier is clearly
documented
as well. It's not changed so that the patch shouldn't break anything.

So with this patch, it should resolve the issues in PR63359.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63359


aarch64-none-elf regression test Okay. Okay to check in?

I think 'r' modifier is very fragile and can be used incorrectly and
wrong in some cases really..

The user could always (or be encouraged to) opt to a strict register modifier to enforce consistent behavior in all cases.

I agree the flexibility might bring unexpected behavior in corner cases.
Do you have any examples to share off the top of your head? So that we can discuss the benefit and pitfalls, and decide to improve the patch or withdraw it.

I like the documentation though.
Thanks,
Renlin


Thanks,
Andrew


gcc/ChangeLog:

2017-06-06  Renlin Li  <renlin...@arm.com>

         PR target/63359
         * config/aarch64/aarch64.c (aarch64_print_operand): Add 'r'
modifier.
         * doc/extend.texi (AArch64Operandmodifiers): New section.

Reply via email to