From: Uros Bizjak Date: Fri, 17 Jul 2015 18:45:50 +0000 (+0200) Subject: backport: re PR target/66703 ([4.9/5/6] gcc.target/i386/readeflags-1.c aborts on... X-Git-Tag: releases/gcc-4.9.4~696 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a7972e3b48029b3445e874d52a18a6d04aaca2ba;p=thirdparty%2Fgcc.git backport: re PR target/66703 ([4.9/5/6] gcc.target/i386/readeflags-1.c aborts on -march=i586 or on -miamcu) Backport from mainline: 2015-07-10 Uros Bizjak PR target/66703 * gcc.target/i386/readeflags-1.c (readeflags_test): Declare with __attribute__((noinline, noclone)). Change "x" to "volatile char" type to prevent possible flag-clobbering zero-extensions. * gcc.target/i386/pr66703.c: New test. From-SVN: r225962 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index cbb60c390714..2ff28ecfd72f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,14 @@ +2015-06-17 Uros Bizjak + + Backport from mainline: + 2015-07-10 Uros Bizjak + + PR target/66703 + * gcc.target/i386/readeflags-1.c (readeflags_test): Declare with + __attribute__((noinline, noclone)). Change "x" to "volatile char" + type to prevent possible flag-clobbering zero-extensions. + * gcc.target/i386/pr66703.c: New test. + 2015-06-17 Uros Bizjak Backport from mainline: diff --git a/gcc/testsuite/gcc.target/i386/pr66703.c b/gcc/testsuite/gcc.target/i386/pr66703.c new file mode 100644 index 000000000000..0fb05829deb6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr66703.c @@ -0,0 +1,4 @@ +/* { dg-do run { target { ia32 } } } */ +/* { dg-options "-O0 -mtune=pentium" } */ + +#include "readeflags-1.c" diff --git a/gcc/testsuite/gcc.target/i386/readeflags-1.c b/gcc/testsuite/gcc.target/i386/readeflags-1.c index 6b2fa7e8d146..8b00d7d5d110 100644 --- a/gcc/testsuite/gcc.target/i386/readeflags-1.c +++ b/gcc/testsuite/gcc.target/i386/readeflags-1.c @@ -9,10 +9,11 @@ #define EFLAGS_TYPE unsigned int #endif -static EFLAGS_TYPE +__attribute__((noinline, noclone)) +EFLAGS_TYPE readeflags_test (unsigned int a, unsigned int b) { - unsigned x = (a == b); + volatile char x = (a == b); return __readeflags (); }