On 26/03/2021 15:35, Christophe Lyon via Gcc-patches wrote: > Hi, > > I'm seeing random scan-assembler-times failures in pr96770.c when LTO is used. > > I suspect this is because the \\+4 string matches the LTO sections, sometimes. > > I propose this small patch to avoid the issue, by matching arr\\+4 instead. > OK? > > 2021-03-26 Christophe Lyon <christophe.l...@linaro.org> > > gcc/testsuite/ > * gcc.target/arm/pure-code/pr96770.c: Improve scan-assembler-times.
OK. R. > > diff --git a/gcc/testsuite/gcc.target/arm/pure-code/pr96770.c > b/gcc/testsuite/gcc.target/arm/pure-code/pr96770.c > index a43d71f..ae1bd10 100644 > --- a/gcc/testsuite/gcc.target/arm/pure-code/pr96770.c > +++ b/gcc/testsuite/gcc.target/arm/pure-code/pr96770.c > @@ -5,17 +5,17 @@ int arr[1000]; > int *f4 (void) { return &arr[1]; } > > /* For cortex-m0 (thumb-1/v6m), we generate 4 movs with upper/lower:#arr+4. > */ > -/* { dg-final { scan-assembler-times "\\+4" 4 { target { { ! > arm_thumb1_movt_ok } && { ! arm_thumb2_ok } } } } } */ > +/* { dg-final { scan-assembler-times "arr\\+4" 4 { target { { ! > arm_thumb1_movt_ok } && { ! arm_thumb2_ok } } } } } */ > > /* For cortex-m with movt/movw (thumb-1/v8m.base or thumb-2), we > generate a movt/movw pair with upper/lower:#arr+4. */ > -/* { dg-final { scan-assembler-times "\\+4" 2 { target { > arm_thumb1_movt_ok || arm_thumb2_ok } } } } */ > +/* { dg-final { scan-assembler-times "arr\\+4" 2 { target { > arm_thumb1_movt_ok || arm_thumb2_ok } } } } */ > > int *f5 (void) { return &arr[80]; } > > /* For cortex-m0 (thumb-1/v6m), we generate 1 ldr from rodata pointer > to arr+320. */ > -/* { dg-final { scan-assembler-times "\\+320" 1 { target { { ! > arm_thumb1_movt_ok } && { ! arm_thumb2_ok } } } } } */ > +/* { dg-final { scan-assembler-times "arr\\+320" 1 { target { { ! > arm_thumb1_movt_ok } && { ! arm_thumb2_ok } } } } } */ > > /* For cortex-m with movt/movw (thumb-1/v8m.base or thumb-2), we > generate a movt/movw pair with upper/lower:arr+320. */ > -/* { dg-final { scan-assembler-times "\\+320" 2 { target { > arm_thumb1_movt_ok || arm_thumb2_ok } } } } */ > +/* { dg-final { scan-assembler-times "arr\\+320" 2 { target { > arm_thumb1_movt_ok || arm_thumb2_ok } } } } */ >