diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2019-12-03 09:23:06 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2019-12-03 09:23:06 +0100 |
commit | a4c772e26dabdf8e2bf2d26d0d7f8e60d97f3f4e (patch) | |
tree | 7b5c9a00a4ce8f44b5844bb9b865a99b65b47c7f /gcc | |
parent | 6fcb7ebb377f27c7f38780f95998ad7a148b7f5b (diff) | |
download | gcc-a4c772e26dabdf8e2bf2d26d0d7f8e60d97f3f4e.zip gcc-a4c772e26dabdf8e2bf2d26d0d7f8e60d97f3f4e.tar.gz gcc-a4c772e26dabdf8e2bf2d26d0d7f8e60d97f3f4e.tar.bz2 |
re PR target/92744 (error: insn does not satisfy its constraints since r278439)
PR target/92744
* config/i386/i386.md (peephole2 for *swap<mode>): Use
general_reg_operand predicates instead of register_operand.
* g++.dg/dfp/pr92744.C: New test.
From-SVN: r278924
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/dfp/pr92744.C | 20 |
4 files changed, 33 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e06244c..a89c435 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2019-12-03 Uroš Bizjak <ubizjak@gmail.com> + Jakub Jelinek <jakub@redhat.com> + + PR target/92744 + * config/i386/i386.md (peephole2 for *swap<mode>): Use + general_reg_operand predicates instead of register_operand. + 2019-12-03 Richard Biener <rguenther@suse.de> PR tree-optimization/92645 diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 7ff5872..2d43992 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -2788,10 +2788,10 @@ (set_attr "bdver1_decode" "double")]) (define_peephole2 - [(set (match_operand:SWI 0 "register_operand") - (match_operand:SWI 1 "register_operand")) + [(set (match_operand:SWI 0 "general_reg_operand") + (match_operand:SWI 1 "general_reg_operand")) (set (match_dup 1) - (match_operand:SWI 2 "register_operand")) + (match_operand:SWI 2 "general_reg_operand")) (set (match_dup 2) (match_dup 0))] "peep2_reg_dead_p (3, operands[0]) && optimize_insn_for_size_p ()" diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9b0d0a3..2d8c350 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2019-12-03 Jakub Jelinek <jakub@redhat.com> + PR target/92744 + * g++.dg/dfp/pr92744.C: New test. + PR c++/92732 * g++.dg/cpp2a/bitfield3.C: Don't expect narrowing conversion warnings. diff --git a/gcc/testsuite/g++.dg/dfp/pr92744.C b/gcc/testsuite/g++.dg/dfp/pr92744.C new file mode 100644 index 0000000..5026e8d --- /dev/null +++ b/gcc/testsuite/g++.dg/dfp/pr92744.C @@ -0,0 +1,20 @@ +// PR target/92744 +// { dg-do compile } +// { dg-options "-Os -fno-tree-ccp" } + +typedef float T __attribute__((mode(SD))); +struct A { T a; }; +void foo (); + +bool +operator!= (A x, A y) +{ + return x.a != y.a; +} + +void +bar (A x, A y) +{ + if (x != y) + foo (); +} |