diff options
author | Marc Glisse <marc.glisse@inria.fr> | 2015-01-12 18:08:04 +0100 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2015-01-12 09:08:04 -0800 |
commit | 6c0fcb81dad4c8f2f9c687a40627db0442a475f4 (patch) | |
tree | 5009d9273f857399009b0951b669a2fa6ffa6776 /gcc | |
parent | 020ca9503b2ea23e645cfd469231b7c5d416ad32 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr64291-1.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr64291-2.c | 14 |
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; +} |