On 22/11/2024 09:37, Torbjörn SVENSSON wrote:
> Changes since v1:
> 
> - Rewrote the padding instructions in the macro to instead write to volatile
>   memory. This ensures that every expansion of the base macro is exactly 2
>   bytes.
> 
> If the `GO()` in f3 is removed, the generated assembly would be reduced to:
> 
> f3:
>         @ args = 0, pretend = 0, frame = 0
>         @ frame_needed = 0, uses_anonymous_args = 0
>         push    {lr}
>         cmp     r0, #0
>         bne     .LCB7
>         bl      .L1     @far jump
> .LCB7:
>         movs    r2, #1
>         ldr     r3, .L6
>         str     r2, [r3]
>         ...
>         str     r2, [r3]
> .L1:
>         @ sp needed
>         pop     {pc}
> 
> Would this assembly be as stable as with the `GO()` in f3? If so, would it be
> preferred to generate the simpler assembly in the test?
> 
> Ok for trunk as it is or perhaps with the simpler assembly?
> 
> --
> 
> With the changes in r15-1579-g792f97b44ff, the code used as "padding" in
> the test case is optimized way. Prevent this optimization by forcing a
> read of the volatile memory.
> Also, validate that there is a far jump in the generated assembler.
> 
> Without this patch, the generated assembler is reduced to:
> f3:
>         cmp     r0, #0
>         beq     .L1
>         ldr     r4, .L6
> .L1:
>         bx      lr
> .L7:
>         .align  2
> .L6:
>         .word   g_0_1
> 
> With the patch, the generated assembler is:
> f3:
>         movs    r2, #1
>         ldr     r3, .L6
>         push    {lr}
>         str     r2, [r3]
>         cmp     r0, #0
>         bne     .LCB10
>         bl      .L1     @far jump
> .LCB10:
>         b       .L7
> .L8:
>         .align  2
> .L6:
>         .word   .LANCHOR0
> .L7:
>         str     r2, [r3]
>         ...
>         str     r2, [r3]
> .L1:
>         pop     {pc}
> 
> gcc/testsuite/ChangeLog:
> 
>       * gcc.target/arm/thumb1-far-jump-2.c: Write to volatile memmory
>       in macro to avoid optimization.
> 
> Signed-off-by: Torbjörn SVENSSON <torbjorn.svens...@foss.st.com>
> ---
>  .../gcc.target/arm/thumb1-far-jump-2.c        | 95 ++++++++++---------
>  1 file changed, 51 insertions(+), 44 deletions(-)
> 

OK.

R.

Reply via email to