re PR target/66703 ([4.9/5/6] gcc.target/i386/readeflags-1.c aborts on -march=i586...
authorUros Bizjak <ubizjak@gmail.com>
Fri, 10 Jul 2015 15:32:48 +0000 (17:32 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Fri, 10 Jul 2015 15:32:48 +0000 (17:32 +0200)
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.

From-SVN: r225680

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/readeflags-1.c

index c21e3d83f963a74e660ca49f2ff48bb1461cdaf3..614560469970018ba1f0695c9e22309c4f5f3d80 100644 (file)
@@ -1,3 +1,10 @@
+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.
+
 2015-07-10  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/60842
index 363a895e70409ac2564cf88f59cf54e6f3545eb5..d0dd0da45550aa615b83c3c32f7f5bf0c8ac8f4b 100644 (file)
@@ -11,10 +11,11 @@ extern void abort (void);
 #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 ();
 }