aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMarc Glisse <marc.glisse@inria.fr>2015-01-12 18:08:04 +0100
committerH.J. Lu <hjl@gcc.gnu.org>2015-01-12 09:08:04 -0800
commit6c0fcb81dad4c8f2f9c687a40627db0442a475f4 (patch)
tree5009d9273f857399009b0951b669a2fa6ffa6776 /gcc
parent020ca9503b2ea23e645cfd469231b7c5d416ad32 (diff)
downloadgcc-6c0fcb81dad4c8f2f9c687a40627db0442a475f4.zip
gcc-6c0fcb81dad4c8f2f9c687a40627db0442a475f4.tar.gz
gcc-6c0fcb81dad4c8f2f9c687a40627db0442a475f4.tar.bz2
Avoid undefined behavior in gcc.target/i386/pr64291-1.c
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/gcc.target/i386/pr64291-1.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/pr64291-2.c14
3 files changed, 22 insertions, 4 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e0ef291..c8d9235 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
diff --git a/gcc/testsuite/gcc.target/i386/pr64291-1.c b/gcc/testsuite/gcc.target/i386/pr64291-1.c
index 85253c0..1d3a380 100644
--- a/gcc/testsuite/gcc.target/i386/pr64291-1.c
+++ b/gcc/testsuite/gcc.target/i386/pr64291-1.c
@@ -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;
diff --git a/gcc/testsuite/gcc.target/i386/pr64291-2.c b/gcc/testsuite/gcc.target/i386/pr64291-2.c
index 2f3f929..7b7e88a 100644
--- a/gcc/testsuite/gcc.target/i386/pr64291-2.c
+++ b/gcc/testsuite/gcc.target/i386/pr64291-2.c
@@ -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;
+}