Avoid undefined behavior in gcc.target/i386/pr64291-1.c
authorMarc Glisse <marc.glisse@inria.fr>
Mon, 12 Jan 2015 17:08:04 +0000 (18:08 +0100)
committerH.J. Lu <hjl@gcc.gnu.org>
Mon, 12 Jan 2015 17:08:04 +0000 (09:08 -0800)
PR testsuite/64427
* gcc.target/i386/pr64291-1.c: Limit to lp64 tarrget.  Avoid
undefined behavior.
* gcc.target/i386/pr64291-2.c: Updated.

From-SVN: r219479

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr64291-1.c
gcc/testsuite/gcc.target/i386/pr64291-2.c

index e0ef2911a65c010da40c7434702ebc119ceaed64..c8d9235799dded0d3a35774be4d2bfe8f1cf5d94 100644 (file)
@@ -1,3 +1,10 @@
+2015-01-12  Marc Glisse  <marc.glisse@inria.fr>
+
+       PR testsuite/64427
+       * gcc.target/i386/pr64291-1.c: Limit to lp64 tarrget.  Avoid
+       undefined behavior.
+       * gcc.target/i386/pr64291-2.c: Updated.
+
 2015-01-12  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/64530
index 85253c0151a3f954a7343b4ca88728b95be785ef..1d3a3809242832ddc21f9bdececa988ded5ccd5f 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-options "-O2" } */
 /* { dg-additional-sources pr64291-2.c } */
-/* { dg-do run } */
+/* { dg-do run { target lp64 } } */
 void f(void*,...);
 void g(void*,long,long);
 int nnn=0;
@@ -12,6 +12,7 @@ typedef struct
   unsigned long *_mp_d;
 } __mpz_struct;
 typedef __mpz_struct mpz_t[1];
+void h(mpz_t);
 
 int main ()
 {
@@ -21,7 +22,7 @@ int main ()
   long alloc, itch;
 
   f (n);
-  f (d);
+  h (d);
   qp = (unsigned long*)__builtin_alloca(4099*8) + 1;
   dnp = (unsigned long*)__builtin_alloca (2049*8);
   alloc = 1;
index 2f3f9293cfbeded7ae0152491ddde343ebf608ae..7b7e88a7996b2517f18abc802daed152341df487 100644 (file)
@@ -1,4 +1,14 @@
 /* { dg-do compile } */
-extern void abort (void);
+#include <assert.h>
 void f(void*p,...){}
-void g(void*p,long a,long b){if (a!=8) abort();}
+void g(void*p,long a,long b){assert(a==8);}
+typedef struct
+{
+  int _mp_size;
+  unsigned long *_mp_d;
+} __mpz_struct;
+typedef __mpz_struct mpz_t[1];
+void h(mpz_t x) {
+  x->_mp_d=0;
+  x->_mp_size=0;
+}