]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR target/66703 ([4.9/5/6] gcc.target/i386/readeflags-1.c aborts on...
authorUros Bizjak <ubizjak@gmail.com>
Fri, 17 Jul 2015 18:45:50 +0000 (20:45 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Fri, 17 Jul 2015 18:45:50 +0000 (20:45 +0200)
Backport from mainline:
2015-07-10  Uros Bizjak  <ubizjak@gmail.com>

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

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr66703.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/readeflags-1.c

index cbb60c39071477e8ba997d9f212b7bf5dba0bace..2ff28ecfd72fe3c6cd539a3a0cd7af2a609f60df 100644 (file)
@@ -1,3 +1,14 @@
+2015-06-17  Uros Bizjak  <ubizjak@gmail.com>
+
+       Backport from mainline:
+       2015-07-10  Uros Bizjak  <ubizjak@gmail.com>
+
+       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  <ubizjak@gmail.com>
 
        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 (file)
index 0000000..0fb0582
--- /dev/null
@@ -0,0 +1,4 @@
+/* { dg-do run { target { ia32 } } } */
+/* { dg-options "-O0 -mtune=pentium" } */
+
+#include "readeflags-1.c"
index 6b2fa7e8d146a296aac989810b0e0f932de93684..8b00d7d5d1103bafec57550e9c247a86e1f2c3e5 100644 (file)
@@ -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 ();
 }