On Fri, 8 Nov 2024 at 19:20, Torbjörn SVENSSON <torbjorn.svens...@foss.st.com> wrote: > > Ok for trunk? > > -- > > 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: > push {lr} > cmp r0, #0 > bne .LCB7 > bl .L1 @far jump > .LCB7: > ldr r3, .L6 > ldr r3, [r3] > ... > ldr r3, .L9+976 > ldr r4, [r3] > b .L10 > .L11: > .align 2 > .L9: > .word g_0_3_7_5 > ... > .word g_0_1 > .L10: > .L1: > pop {pc} > > gcc/testsuite/ChangeLog: > > * gcc.target/arm/thumb1-far-jump-2.c: Force a read of volatile > memory in macro to avoid optimization. > > Signed-off-by: Torbjörn SVENSSON <torbjorn.svens...@foss.st.com> > --- > gcc/testsuite/gcc.target/arm/thumb1-far-jump-2.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/gcc/testsuite/gcc.target/arm/thumb1-far-jump-2.c > b/gcc/testsuite/gcc.target/arm/thumb1-far-jump-2.c > index 78fcafaaf7d..1cf7a0a86e8 100644 > --- a/gcc/testsuite/gcc.target/arm/thumb1-far-jump-2.c > +++ b/gcc/testsuite/gcc.target/arm/thumb1-far-jump-2.c > @@ -10,7 +10,7 @@ void f3(int i) > { > #define GO(n) \ > extern volatile int g_##n; \ > - r4=(int)&g_##n; > + r4=(int)g_##n; >
It really seems to me that this was a typo in the original submission: this volatile was probably here to prevent optimization and make sure we have a large function. But taking the address of a volatile variable does not have the intended effect, you need to actually access the variable. LGTM, but wait for Richard's approval. Thanks, Christophe > #define GO8(n) \ > GO(n##_0) \ > @@ -54,4 +54,5 @@ void f3(int i) > } > } > > -/* { dg-final { scan-assembler "push.*lr" } } */ > +/* { dg-final { scan-assembler "\tpush.*lr" } } */ > +/* { dg-final { scan-assembler "\tbl\t\\.L\[0-9\]+\t@far jump" } } */ > -- > 2.25.1 >