[PATCH, AArch64] Allow symbol+offset as symbolic constant expression

Marcus Shawcroft marcus.shawcroft@arm.com
Mon Jul 23 09:51:00 GMT 2012


On 06/07/12 16:31, Ian Bolton wrote:
> Hi,
>
> This patch reduces codesize for cases such as this one:
>
>   int arr[100];
>   int foo () { return arr[10]; }
>
> Before the patch, the code looked like this:
>
>   adrp x0, arr
>   add x0, x0, :lo12:arr
>   ldr w0, [x0,40]
>
> Now, it looks like this:
>
>   adrp x0, arr+40
>   ldr w0, [x0,#:lo12:arr+40]
>
> Some workloads have seen up to 1K reduction in code size.
>
> OK to commit?
>
> Cheers,
> Ian
>
>
>
> 2012-07-06  Ian Bolton<ian.bolton@arm.com>
>
> 	* gcc/config/aarch64/aarch64.c (aarch64_print_operand): Use
> 	aarch64_classify_symbolic_expression for classifying operands.
>
> 	* gcc/config/aarch64/aarch64.c
> 	(aarch64_classify_symbolic_expression): New function.
>
> 	* gcc/config/aarch64/aarch64.c (aarch64_symbolic_constant_p):
> 	New function.
>
> 	* gcc/config/aarch64/predicates.md (aarch64_valid_symref):
> 	Symbol with constant offset is a valid symbol reference.

OK



More information about the Gcc-patches mailing list