diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/i386/i386.cc | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr112494.c | 17 |
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; +} |