Commit 50929dd3 by David Edelsohn

rs6000: Don't push stack frame for AIX when debugging and -fcompare-debug.

AIX pushes a stack frame when debugging is enabled.  With -fcompare-debug
this generates comparison failures because code geneation is different.
This patch disables the stack push for -fcompare-debug that only is used
for internal testing and not for normal debug information generation that
will be consumed by AIX tools.

This patch also removes xfails from testsuite testcases that use
-fcompare-debug and no longer fail on AIX without the stack push difference.

        * config/rs6000/rs6000-logue.c (rs6000_stack_info): Don't push a
        stack frame when debugging and flag_compare_debug is enabled.

testsuite/
        * g++.dg/debug/dwarf2/pr61433.C: Unfail AIX.
        * g++.dg/opt/pr48549.C: Same.
        * g++.dg/opt/pr60002.C: Same.
        * g++.dg/opt/pr80436.C: Same.
        * g++.dg/opt/pr83084.C: Same.
        * g++.dg/other/pr42685.C: Same.
        * gcc.dg/pr41241.c: Same.
        * gcc.dg/pr42629.c: Same.
        * gcc.dg/pr42630.c: Same.
        * gcc.dg/pr42719.c: Same.
        * gcc.dg/pr42728.c: Same.
        * gcc.dg/pr42889.c: Same.
        * gcc.dg/pr42916.c: Same.
        * gcc.dg/pr43084.c: Same.
        * gcc.dg/pr43670.c: Same.
        * gcc.dg/pr44023.c: Same.
        * gcc.dg/pr44971.c: Same.
        * gcc.dg/pr45449.c: Same.
        * gcc.dg/pr46771.c: Same.
        * gcc.dg/pr47684.c: Same.
        * gcc.dg/pr47881.c: Same.
        * gcc.dg/pr48768.c: Same.
        * gcc.dg/pr50017.c: Same.
        * gcc.dg/pr56023.c: Same.
        * gcc.dg/pr64935-1.c: Same.
        * gcc.dg/pr64935-2.c: Same.
        * gcc.dg/pr65521.c: Same.
        * gcc.dg/pr65779.c: Same.
        * gcc.dg/pr65980.c: Same.
        * gcc.dg/pr66688.c: Same.
        * gcc.dg/pr70405.c: Same.
        * gcc.dg/vect/pr49352.c: Same.
parent 9b933c99
2020-04-25 David Edelsohn <dje.gcc@gmail.com>
* config/rs6000/rs6000-logue.c (rs6000_stack_info): Don't push a
stack frame when debugging and flag_compare_debug is enabled.
2020-04-25 Michael Meissner <meissner@linux.ibm.com> 2020-04-25 Michael Meissner <meissner@linux.ibm.com>
* config/rs6000/linux64.h (PCREL_SUPPORTED_BY_OS): Define to * config/rs6000/linux64.h (PCREL_SUPPORTED_BY_OS): Define to
......
...@@ -909,7 +909,7 @@ rs6000_stack_info (void) ...@@ -909,7 +909,7 @@ rs6000_stack_info (void)
else if (frame_pointer_needed) else if (frame_pointer_needed)
info->push_p = 1; info->push_p = 1;
else if (TARGET_XCOFF && write_symbols != NO_DEBUG) else if (TARGET_XCOFF && write_symbols != NO_DEBUG && !flag_compare_debug)
info->push_p = 1; info->push_p = 1;
else else
......
2020-04-25 David Edelsohn <dje.gcc@gmail.com> 2020-04-25 David Edelsohn <dje.gcc@gmail.com>
* g++.dg/debug/dwarf2/pr61433.C: Unfail AIX.
* g++.dg/opt/pr48549.C: Same.
* g++.dg/opt/pr60002.C: Same.
* g++.dg/opt/pr80436.C: Same.
* g++.dg/opt/pr83084.C: Same.
* g++.dg/other/pr42685.C: Same.
* gcc.dg/pr41241.c: Same.
* gcc.dg/pr42629.c: Same.
* gcc.dg/pr42630.c: Same.
* gcc.dg/pr42719.c: Same.
* gcc.dg/pr42728.c: Same.
* gcc.dg/pr42889.c: Same.
* gcc.dg/pr42916.c: Same.
* gcc.dg/pr43084.c: Same.
* gcc.dg/pr43670.c: Same.
* gcc.dg/pr44023.c: Same.
* gcc.dg/pr44971.c: Same.
* gcc.dg/pr45449.c: Same.
* gcc.dg/pr46771.c: Same.
* gcc.dg/pr47684.c: Same.
* gcc.dg/pr47881.c: Same.
* gcc.dg/pr48768.c: Same.
* gcc.dg/pr50017.c: Same.
* gcc.dg/pr56023.c: Same.
* gcc.dg/pr64935-1.c: Same.
* gcc.dg/pr64935-2.c: Same.
* gcc.dg/pr65521.c: Same.
* gcc.dg/pr65779.c: Same.
* gcc.dg/pr65980.c: Same.
* gcc.dg/pr66688.c: Same.
* gcc.dg/pr70405.c: Same.
* gcc.dg/vect/pr49352.c: Same.
2020-04-25 David Edelsohn <dje.gcc@gmail.com>
* gcc.dg/ipa/ipa-sra-19.c: Add -Wno-psabi option on AIX. * gcc.dg/ipa/ipa-sra-19.c: Add -Wno-psabi option on AIX.
2020-04-25 David Edelsohn <dje.gcc@gmail.com> 2020-04-25 David Edelsohn <dje.gcc@gmail.com>
......
// PR c++/61433 // PR c++/61433
// { dg-do compile { target c++11 } } // { dg-do compile { target c++11 } }
// { dg-xfail-if "" { powerpc-ibm-aix* } }
// { dg-options "-O -fcompare-debug -fno-inline -fno-ipa-pure-const -fipa-sra" } // { dg-options "-O -fcompare-debug -fno-inline -fno-ipa-pure-const -fipa-sra" }
// { dg-additional-options "-Wno-return-type" } // { dg-additional-options "-Wno-return-type" }
......
// PR debug/46583 // PR debug/46583
// { dg-do compile } // { dg-do compile }
// { dg-options "-O -fno-inline -fipa-cp -fipa-cp-clone -fcompare-debug" } // { dg-options "-O -fno-inline -fipa-cp -fipa-cp-clone -fcompare-debug" }
// { dg-xfail-if "" { powerpc-ibm-aix* } } // { dg-xfail-if "AIX compare debug" { powerpc-ibm-aix* } }
template < typename = unsigned long >struct A template < typename = unsigned long >struct A
{ {
......
// { dg-do compile } // { dg-do compile }
// { dg-options "-O -fpartial-inlining -flto -fconserve-stack -fcompare-debug" } // { dg-options "-O -fpartial-inlining -flto -fconserve-stack -fcompare-debug" }
// { dg-require-effective-target lto } // { dg-require-effective-target lto }
// { dg-xfail-if "" { powerpc-ibm-aix* } } // { dg-xfail-if "AIX compare debug" { powerpc-ibm-aix* } }
void end (int, int) __attribute__ ((__noreturn__)); void end (int, int) __attribute__ ((__noreturn__));
......
// { dg-do compile } // { dg-do compile }
// { dg-options "-fno-ipa-sra -fcompare-debug" } // { dg-options "-fno-ipa-sra -fcompare-debug" }
// { dg-xfail-if "" { powerpc-ibm-aix* } } // { dg-xfail-if "AIX compare debug" { powerpc-ibm-aix* } }
struct comp_cost { int cost; unsigned complexity; }; struct comp_cost { int cost; unsigned complexity; };
struct cost_pair { struct iv_cand *cand; }; struct cost_pair { struct iv_cand *cand; };
......
// PR debug/56819 // PR debug/56819
// { dg-do compile } // { dg-do compile }
// { dg-options "-fcompare-debug" } // { dg-options "-fcompare-debug" }
// { dg-xfail-if "" { powerpc-ibm-aix* } } // { dg-xfail-if "AIX compare debug" { powerpc-ibm-aix* } }
template <typename> template <typename>
struct A struct A
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fcompare-debug" } */ /* { dg-options "-O2 -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */ /* { dg-xfail-if "AIX compare debug" { powerpc-ibm-aix* } } */
namespace std namespace std
{ {
......
// PR c++/84704 // PR c++/84704
// { dg-do compile } // { dg-do compile }
// { dg-options "-g -fcompare-debug -O2" } // { dg-options "-g -fcompare-debug -O2" }
// { dg-xfail-if "" { powerpc-ibm-aix* } } // { dg-xfail-if "AIX compare debug" { powerpc-ibm-aix* } }
int a[1] = { 0 }; int a[1] = { 0 };
......
// PR rtl-optimization/48549 // PR rtl-optimization/48549
// { dg-do compile } // { dg-do compile }
// { dg-options "-fcompare-debug -O2" } // { dg-options "-fcompare-debug -O2" }
// { dg-xfail-if "" { powerpc-ibm-aix* } }
__extension__ typedef __PTRDIFF_TYPE__ pdiff_t; __extension__ typedef __PTRDIFF_TYPE__ pdiff_t;
......
// PR tree-optimization/60002 // PR tree-optimization/60002
// { dg-do compile } // { dg-do compile }
// { dg-options "-O2 -fcompare-debug -fdeclone-ctor-dtor -fipa-cp-clone" } // { dg-options "-O2 -fcompare-debug -fdeclone-ctor-dtor -fipa-cp-clone" }
// { dg-xfail-if "" { powerpc-ibm-aix* } }
struct A {}; struct A {};
......
// PR debug/80436 // PR debug/80436
// { dg-do compile { target c++11 } } // { dg-do compile { target c++11 } }
// { dg-options "-O3 -fcompare-debug" } // { dg-options "-O3 -fcompare-debug" }
// { dg-xfail-if "" { powerpc-ibm-aix* } }
void fn (...); void fn (...);
void foo (int, int, int); void foo (int, int, int);
......
// PR debug/83084 // PR debug/83084
// { dg-do compile } // { dg-do compile }
// { dg-options "-O2 -fcompare-debug -Wno-return-type" } // { dg-options "-O2 -fcompare-debug -Wno-return-type" }
// { dg-xfail-if "" { powerpc-ibm-aix* } }
enum E { F }; enum E { F };
template <E = F> struct A { template <E = F> struct A {
......
// { dg-do compile } // { dg-do compile }
// { dg-options "-O -funroll-loops -fcompare-debug" } // { dg-options "-O -funroll-loops -fcompare-debug" }
// { dg-xfail-if "" { powerpc-ibm-aix* } }
void Remap(int n, int *src, int *dst, int *map) void Remap(int n, int *src, int *dst, int *map)
{ {
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fcompare-debug -g" } */ /* { dg-options "-O2 -fcompare-debug -g" } */
/* { dg-options "-O2 -fcompare-debug -g -march=i586 -mtune=i586 -fomit-frame-pointer" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */ /* { dg-options "-O2 -fcompare-debug -g -march=i586 -mtune=i586 -fomit-frame-pointer" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
typedef struct { int t1; int t2; int t3; } *T; typedef struct { int t1; int t2; int t3; } *T;
typedef struct { int s; } S; typedef struct { int s; } S;
......
/* PR bootstrap/41345 */ /* PR bootstrap/41345 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -g -fcompare-debug" } */ /* { dg-options "-O2 -g -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */ /* { dg-xfail-if "AIX compare debug" { powerpc-ibm-aix* } } */
void void
foo (int *x) foo (int *x)
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
/* { dg-options "-O1 -fsched-pressure -fschedule-insns -fcompare-debug" { target scheduling } } */ /* { dg-options "-O1 -fsched-pressure -fschedule-insns -fcompare-debug" { target scheduling } } */
/* { dg-options "-O1 -fcompare-debug" { target { ! scheduling } } } */ /* { dg-options "-O1 -fcompare-debug" { target { ! scheduling } } } */
/* { dg-require-effective-target int32plus } */ /* { dg-require-effective-target int32plus } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
int lzo_adler32(int adler, char *buf) int lzo_adler32(int adler, char *buf)
{ {
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fvariable-expansion-in-unroller -funroll-loops -fcompare-debug" } */ /* { dg-options "-O1 -fvariable-expansion-in-unroller -funroll-loops -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
int sum(int *buf, int len) int sum(int *buf, int len)
{ {
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-g -O1 -funroll-loops -fcompare-debug" } */ /* { dg-options "-g -O1 -funroll-loops -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */ /* { dg-xfail-if "AIX compare debug" { powerpc-ibm-aix* } } */
void foo() void foo()
{ {
......
/* PR tree-optimization/42719 */ /* PR tree-optimization/42719 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -ftracer -fcompare-debug" } */ /* { dg-options "-O2 -ftracer -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
int *v; int *v;
......
/* PR debug/42728 */ /* PR debug/42728 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fcompare-debug" } */ /* { dg-options "-O1 -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
void void
foo (char *a) foo (char *a)
......
/* PR rtl-optimization/42889 */ /* PR rtl-optimization/42889 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O -fgcse -fcompare-debug" } */ /* { dg-options "-O -fgcse -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
extern int A[], B[]; extern int A[], B[];
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -funroll-loops -ftree-vectorize -fcompare-debug" } */ /* { dg-options "-O1 -funroll-loops -ftree-vectorize -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
int seed; int seed;
......
/* PR debug/43084 */ /* PR debug/43084 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O1 -fwhole-program -fcompare-debug" } */ /* { dg-options "-O1 -fwhole-program -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
struct S struct S
{ {
......
/* PR debug/43670 */ /* PR debug/43670 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O -ftree-vrp -fcompare-debug" } */ /* { dg-options "-O -ftree-vrp -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
extern void abort (void); extern void abort (void);
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
/* { dg-options "-fcompare-debug -O2" } */ /* { dg-options "-fcompare-debug -O2" } */
/* { dg-options "-fcompare-debug -O2 -mcpu=ev67" { target alpha*-*-* } } */ /* { dg-options "-fcompare-debug -O2 -mcpu=ev67" { target alpha*-*-* } } */
/* { dg-require-effective-target int32plus } */ /* { dg-require-effective-target int32plus } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
void void
foo (unsigned f, long v, unsigned *w, unsigned a, unsigned b, unsigned e, unsigned c, unsigned d) foo (unsigned f, long v, unsigned *w, unsigned a, unsigned b, unsigned e, unsigned c, unsigned d)
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fcompare-debug -w" } */ /* { dg-options "-O2 -fcompare-debug -w" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
typedef struct typedef struct
{ {
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fno-tree-pre -fno-tree-pta -fcompare-debug" } */ /* { dg-options "-O2 -fno-tree-pre -fno-tree-pta -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
struct S struct S
{ {
......
/* PR debug/46771 */ /* PR debug/46771 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O -ftree-vectorize -fcompare-debug" } */ /* { dg-options "-O -ftree-vectorize -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
unsigned char v[1600]; unsigned char v[1600];
......
/* PR debug/47684 */ /* PR debug/47684 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O3 -fcompare-debug" } */ /* { dg-options "-O3 -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
int in[8][4]; int in[8][4];
int out[4]; int out[4];
......
/* PR debug/47881 */ /* PR debug/47881 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O -fcompare-debug -fno-dce -funroll-loops -fno-web" } */ /* { dg-options "-O -fcompare-debug -fno-dce -funroll-loops -fno-web" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
extern int data[]; extern int data[];
......
/* PR debug/48768 */ /* PR debug/48768 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O -fcompare-debug" } */ /* { dg-options "-O -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
int a, b; int a, b;
......
/* PR debug/50017 */ /* PR debug/50017 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O3 -fcompare-debug" } */ /* { dg-options "-O3 -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
struct S { int r, i; }; struct S { int r, i; };
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fcompare-debug" } */ /* { dg-options "-O2 -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
void void
foo (char *c) foo (char *c)
......
/* PR rtl-optimization/64935 */ /* PR rtl-optimization/64935 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-std=gnu89 -Wno-shift-count-overflow -O2 -fcompare-debug" } */ /* { dg-options "-std=gnu89 -Wno-shift-count-overflow -O2 -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
int a[] = {}, b[] = {}, c[] = {}, d[] = {}, e[] = {}, f[] = {}, h[] = {}; int a[] = {}, b[] = {}, c[] = {}, d[] = {}, e[] = {}, f[] = {}, h[] = {};
int g[] = { 0 }; int g[] = { 0 };
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O -fschedule-insns --param=max-sched-ready-insns=1 -fcompare-debug" } */ /* { dg-options "-O -fschedule-insns --param=max-sched-ready-insns=1 -fcompare-debug" } */
/* { dg-require-effective-target scheduling } */ /* { dg-require-effective-target scheduling } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
void void
foo (int *data, unsigned len, const int qlp_coeff[], foo (int *data, unsigned len, const int qlp_coeff[],
......
/* PR ipa/65521 */ /* PR ipa/65521 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fcompare-debug" } */ /* { dg-options "-O2 -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
struct S { int s; }; struct S { int s; };
int f6 (void *, unsigned long); int f6 (void *, unsigned long);
......
/* PR debug/65779 */ /* PR debug/65779 */
/* { dg-do assemble } */ /* { dg-do assemble } */
/* { dg-options "-O2 -fcompare-debug" } */ /* { dg-options "-O2 -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
unsigned long unsigned long
foo (unsigned long x, unsigned char *y, unsigned int z) foo (unsigned long x, unsigned char *y, unsigned int z)
......
/* PR rtl-optimization/65980 */ /* PR rtl-optimization/65980 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O3 -fcompare-debug" } */ /* { dg-options "-O3 -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
typedef struct { int b; } A; typedef struct { int b; } A;
void (*a) (int); void (*a) (int);
......
/* PR tree-optimization/66688 */ /* PR tree-optimization/66688 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fno-reorder-blocks -fcompare-debug" } */ /* { dg-options "-O2 -fno-reorder-blocks -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
struct fdt_header { unsigned magic; } *a; struct fdt_header { unsigned magic; } *a;
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fcompare-debug" } */ /* { dg-options "-O2 -fcompare-debug" } */
/* { dg-additional-options "-mavx512f" { target i?86-*-* x86_64-*-* } } */ /* { dg-additional-options "-mavx512f" { target i?86-*-* x86_64-*-* } } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
typedef short V __attribute__ ((vector_size (32))); typedef short V __attribute__ ((vector_size (32)));
......
/* PR rtl-optimization/59166 */ /* PR rtl-optimization/59166 */
/* { dg-additional-options "-fcompare-debug" } */ /* { dg-additional-options "-fcompare-debug" } */
/* { dg-xfail-if "compare-debug failure" { powerpc-ibm-aix* } } */ /* { dg-xfail-if "AIX compare debug" { powerpc-ibm-aix* } } */
int a, b, c, f, g; int a, b, c, f, g;
......
/* PR tree-optimization/49352 */ /* PR tree-optimization/49352 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-additional-options "-O2 -fcompare-debug" } */ /* { dg-additional-options "-O2 -fcompare-debug" } */
/* { dg-xfail-if "" { powerpc-ibm-aix* } } */
int int
foo (int *x, int *y, int n) foo (int *x, int *y, int n)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment