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
+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
(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 ()"
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.
--- /dev/null
+// 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 ();
+}