aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/i386/i386.cc7
-rw-r--r--gcc/testsuite/gcc.target/i386/pr112494.c17
2 files changed, 19 insertions, 5 deletions
diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc
index 2c80fd8..176ca65 100644
--- a/gcc/config/i386/i386.cc
+++ b/gcc/config/i386/i386.cc
@@ -16469,12 +16469,9 @@ ix86_cc_mode (enum rtx_code code, rtx op0, rtx op1)
return CCNOmode;
else
return CCGCmode;
- /* strcmp pattern do (use flags) and combine may ask us for proper
- mode. */
- case USE:
- return CCmode;
default:
- gcc_unreachable ();
+ /* CCmode should be used in all other cases. */
+ return CCmode;
}
}
diff --git a/gcc/testsuite/gcc.target/i386/pr112494.c b/gcc/testsuite/gcc.target/i386/pr112494.c
new file mode 100644
index 0000000..e9482f5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr112494.c
@@ -0,0 +1,17 @@
+/* PR target/112494 */
+/* { dg-options "-Og -fno-tree-copy-prop -fno-tree-fre -fno-tree-ccp -fno-tree-forwprop" } */
+
+#include <x86intrin.h>
+
+int main()
+{
+ long flags = 0xD7;
+
+ __writeeflags(0xD7);
+ flags && !__readeflags();
+
+ if ((flags && (!__readeflags())) != 0xD7)
+ ;
+
+ return 0;
+}