]> git.ipfire.org Git - thirdparty/gcc.git/commit
testsuite: arm: Check that a far jump is used in thumb1-far-jump-2.c
authorTorbjörn SVENSSON <torbjorn.svensson@foss.st.com>
Fri, 8 Nov 2024 17:52:53 +0000 (18:52 +0100)
committerTorbjörn SVENSSON <torbjorn.svensson@foss.st.com>
Thu, 12 Dec 2024 11:25:19 +0000 (12:25 +0100)
commitb7e11b49992f70f498044b9499201a5929df95e4
tree016bf25211d311072d028c563964b9e7016b7639
parent95a0c7161277a71e45050e5b562710cf9e1d4d2a
testsuite: arm: Check that a far jump is used in thumb1-far-jump-2.c

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.svensson@foss.st.com>
gcc/testsuite/gcc.target/arm/thumb1-far-jump-2.c