diff mbox series

testsuite: Skip pr112305.c for -O[01] on simulators

Message ID mptldygcrnn.fsf@arm.com
State New
Headers show
Series testsuite: Skip pr112305.c for -O[01] on simulators | expand

Commit Message

Richard Sandiford Oct. 22, 2024, 11:18 a.m. UTC
gcc.dg/torture/pr112305.c contains an inner loop that executes
0x8000_0014 times and an outer loop that executes 5 times, giving about
10 billion total executions of the inner loop body.  At -O2 and above we
are able to remove the inner loop, but at -O1 we keep a no-op loop:

        dls     lr, r3
.L3:
        subs    r3, r3, #1
        le      lr, .L3

and at -O0 we of course don't optimise.

This can lead to long execution times on simulators, possibly
triggering a timeout.

---

Tested on arm-eabi, where the problem was originally seen, and where we
now skip as expected.  Also tested on native aarch64-linux-gnu, where we
continue to execute all variations.  OK for trunk and backports (so far
to GCC 14)?

Richard


gcc/testsuite
	* gcc.dg/torture/pr112305.c: Skip at -O0 and -O1 for simulators.
---
 gcc/testsuite/gcc.dg/torture/pr112305.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Richard Biener Oct. 22, 2024, 11:36 a.m. UTC | #1
On Tue, Oct 22, 2024 at 1:19 PM Richard Sandiford
<richard.sandiford@arm.com> wrote:
>
> gcc.dg/torture/pr112305.c contains an inner loop that executes
> 0x8000_0014 times and an outer loop that executes 5 times, giving about
> 10 billion total executions of the inner loop body.  At -O2 and above we
> are able to remove the inner loop, but at -O1 we keep a no-op loop:
>
>         dls     lr, r3
> .L3:
>         subs    r3, r3, #1
>         le      lr, .L3
>
> and at -O0 we of course don't optimise.
>
> This can lead to long execution times on simulators, possibly
> triggering a timeout.

Ouch.

> ---
>
> Tested on arm-eabi, where the problem was originally seen, and where we
> now skip as expected.  Also tested on native aarch64-linux-gnu, where we
> continue to execute all variations.  OK for trunk and backports (so far
> to GCC 14)?

OK.

Thanks,
Richard.

> Richard
>
>
> gcc/testsuite
>         * gcc.dg/torture/pr112305.c: Skip at -O0 and -O1 for simulators.
> ---
>  gcc/testsuite/gcc.dg/torture/pr112305.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/gcc/testsuite/gcc.dg/torture/pr112305.c b/gcc/testsuite/gcc.dg/torture/pr112305.c
> index 9d363aaac9d..ea6e044529d 100644
> --- a/gcc/testsuite/gcc.dg/torture/pr112305.c
> +++ b/gcc/testsuite/gcc.dg/torture/pr112305.c
> @@ -1,5 +1,6 @@
>  /* { dg-do run } */
>  /* { dg-require-effective-target int32plus } */
> +/* { dg-skip-if "long-running loop" { simulator } { "-O0" "-O1" } } */
>
>  int a;
>  void b()
> --
> 2.25.1
>
diff mbox series

Patch

diff --git a/gcc/testsuite/gcc.dg/torture/pr112305.c b/gcc/testsuite/gcc.dg/torture/pr112305.c
index 9d363aaac9d..ea6e044529d 100644
--- a/gcc/testsuite/gcc.dg/torture/pr112305.c
+++ b/gcc/testsuite/gcc.dg/torture/pr112305.c
@@ -1,5 +1,6 @@ 
 /* { dg-do run } */
 /* { dg-require-effective-target int32plus } */
+/* { dg-skip-if "long-running loop" { simulator } { "-O0" "-O1" } } */
 
 int a;
 void b()