> Oh, do you have a testcase suitable for the testsuite?

C guality testcase attached, it fails on x86/Linux with -m32 on the gcc-12 
branch (which does not have the fix):

FAIL: gcc.dg/guality/param-6.c   -O1  -DPREVENT_OPTIMIZATION  line 15 i == 5
FAIL: gcc.dg/guality/param-6.c   -O2  -DPREVENT_OPTIMIZATION  line 15 i == 5
FAIL: gcc.dg/guality/param-6.c   -O3 -g  -DPREVENT_OPTIMIZATION  line 15 i == 
5
FAIL: gcc.dg/guality/param-6.c   -Os  -DPREVENT_OPTIMIZATION  line 15 i == 5
FAIL: gcc.dg/guality/param-6.c   -O2 -flto -fno-use-linker-plugin -flto-
partition=none  -DPREVENT_OPTIMIZATION line 15 i == 5
FAIL: gcc.dg/guality/param-6.c   -O2 -flto -fuse-linker-plugin -fno-fat-lto-
objects  -DPREVENT_OPTIMIZATION line 15 i == 5

but passes on the mainline (which has the fix) and on the gcc-11 branch (which 
does not have the issue).  The fix also eliminates other regressions:

-FAIL: gcc.dg/guality/drap.c   -Os  -DPREVENT_OPTIMIZATION  line 21 a == 5
-FAIL: gcc.dg/guality/drap.c   -Os  -DPREVENT_OPTIMIZATION  line 22 b == 6
-FAIL: gcc.dg/guality/pr43051-1.c   -Os  -DPREVENT_OPTIMIZATION  line 35 v == 
1
-FAIL: gcc.dg/guality/pr43051-1.c   -Os  -DPREVENT_OPTIMIZATION  line 36 e == 
&a[1]
-FAIL: gcc.dg/guality/pr43051-1.c   -Os  -DPREVENT_OPTIMIZATION  line 40 v == 
1
-FAIL: gcc.dg/guality/pr43051-1.c   -Os  -DPREVENT_OPTIMIZATION  line 41 e == 
&a[1]
-FAIL: gcc.dg/guality/pr43177.c   -Os  -DPREVENT_OPTIMIZATION  line 15 x == 7
-FAIL: gcc.dg/guality/pr54519-3.c   -Os  -DPREVENT_OPTIMIZATION  line 20 y == 
25
-FAIL: gcc.dg/guality/pr54519-3.c   -Os  -DPREVENT_OPTIMIZATION  line 20 z == 
6
-FAIL: gcc.dg/guality/pr54519-3.c   -Os  -DPREVENT_OPTIMIZATION  line 23 y == 
117
-FAIL: gcc.dg/guality/pr54519-3.c   -Os  -DPREVENT_OPTIMIZATION  line 23 z == 
8
-FAIL: gcc.dg/guality/pr54519-4.c   -Os  -DPREVENT_OPTIMIZATION  line 17 y == 
25
-FAIL: gcc.dg/guality/pr54796.c   -O1  -DPREVENT_OPTIMIZATION  line 17 a == 5
-FAIL: gcc.dg/guality/pr54796.c   -O1  -DPREVENT_OPTIMIZATION  line 17 b == 6
-FAIL: gcc.dg/guality/pr54796.c   -O1  -DPREVENT_OPTIMIZATION  line 17 c == 5
-FAIL: gcc.dg/guality/pr54796.c   -O2  -DPREVENT_OPTIMIZATION  line 17 a == 5
-FAIL: gcc.dg/guality/pr54796.c   -O2  -DPREVENT_OPTIMIZATION  line 17 b == 6
-FAIL: gcc.dg/guality/pr54796.c   -O2  -DPREVENT_OPTIMIZATION  line 17 c == 5
-FAIL: gcc.dg/guality/pr54796.c   -O3 -g  -DPREVENT_OPTIMIZATION  line 17 a == 
5
-FAIL: gcc.dg/guality/pr54796.c   -O3 -g  -DPREVENT_OPTIMIZATION  line 17 b == 
6
-FAIL: gcc.dg/guality/pr54796.c   -O3 -g  -DPREVENT_OPTIMIZATION  line 17 c == 
5
-FAIL: gcc.dg/guality/pr54796.c   -Os  -DPREVENT_OPTIMIZATION  line 17 a == 5
-FAIL: gcc.dg/guality/pr54796.c   -Os  -DPREVENT_OPTIMIZATION  line 17 b == 6
-FAIL: gcc.dg/guality/pr54796.c   -Os  -DPREVENT_OPTIMIZATION  line 17 c == 5
-FAIL: gcc.dg/guality/pr54796.c   -O2 -flto -fno-use-linker-plugin -flto-
partition=none  -DPREVENT_OPTIMIZATION line 17 a == 5
-FAIL: gcc.dg/guality/pr54796.c   -O2 -flto -fno-use-linker-plugin -flto-
partition=none  -DPREVENT_OPTIMIZATION line 17 b == 6
-FAIL: gcc.dg/guality/pr54796.c   -O2 -flto -fno-use-linker-plugin -flto-
partition=none  -DPREVENT_OPTIMIZATION line 17 c == 5
-FAIL: gcc.dg/guality/sra-1.c   -Os  -DPREVENT_OPTIMIZATION  line 43 a.j == 14
-FAIL: gcc.dg/guality/vla-1.c   -O1  -DPREVENT_OPTIMIZATION  line 24 i == 5
-FAIL: gcc.dg/guality/vla-1.c   -O2  -DPREVENT_OPTIMIZATION  line 24 i == 5
-FAIL: gcc.dg/guality/vla-1.c   -O3 -g  -DPREVENT_OPTIMIZATION  line 24 i == 5
-FAIL: gcc.dg/guality/vla-1.c   -Os  -DPREVENT_OPTIMIZATION  line 24 i == 5
-FAIL: gcc.dg/guality/vla-1.c   -O2 -flto -fno-use-linker-plugin -flto-
partition=none  -DPREVENT_OPTIMIZATION line 24 i == 5

present on the gcc-12 branch wrt the gcc-11 branch (apparently nobody really 
cares about the guality testsuite on x86/Linux).


        * gcc.dg/guality/param-6.c: New test.

-- 
Eric Botcazou
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-g" } */

void __attribute__((noipa)) bar (void *p)
{}

void __attribute__((noipa)) foo (int i)
{
  void *p = __builtin_alloca (i);

  asm volatile ("" : : : "ebx");

  bar (p); /* { dg-final { gdb-test . "i" "5" } } */
}

int main (void)
{
  foo (5);
  return 0;
}

Reply via email to