2018-06-22 Jakub Jelinek <jakub@redhat.com>
Backported from mainline
- 2018-03-02 Jakub Jelinek <jakub@redhat.com>
+ 2018-03-05 Jakub Jelinek <jakub@redhat.com>
- PR c++/84662
- * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
- RETURN instead of return.
- <case POINTER_PLUS_EXPR>: Likewise.
- <case CONVERT_EXPR>: If op0 is error_mark_node, just return
- it instead of wrapping it into CONVERT_EXPR.
+ PR target/84700
+ * combine.c (combine_simplify_rtx): Don't try to simplify if
+ if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
+ are equal to x.
2018-06-22 Andre Vieira <andre.simoesdiasvieira@arm.com>
/* If everything is a comparison, what we have is highly unlikely
to be simpler, so don't use it. */
&& ! (COMPARISON_P (x)
- && (COMPARISON_P (true_rtx) || COMPARISON_P (false_rtx))))
+ && (COMPARISON_P (true_rtx) || COMPARISON_P (false_rtx)))
+ /* Similarly, if we end up with one of the expressions the same
+ as the original, it is certainly not simpler. */
+ && ! rtx_equal_p (x, true_rtx)
+ && ! rtx_equal_p (x, false_rtx))
{
rtx cop1 = const0_rtx;
enum rtx_code cond_code = simplify_comparison (NE, &cond, &cop1);
+2018-06-22 Jakub Jelinek <jakub@redhat.com>
+
+ Backported from mainline
+ 2018-03-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/84662
+ * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
+ RETURN instead of return.
+ <case POINTER_PLUS_EXPR>: Likewise.
+ <case CONVERT_EXPR>: If op0 is error_mark_node, just return
+ it instead of wrapping it into CONVERT_EXPR.
+
2018-06-12 Jason Merrill <jason@redhat.com>
PR c++/85815 - reference to member of enclosing template.
2018-06-22 Jakub Jelinek <jakub@redhat.com>
Backported from mainline
+ 2018-03-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/84700
+ * gcc.target/powerpc/pr84700.c: New test.
+
2018-03-02 Jakub Jelinek <jakub@redhat.com>
PR c++/84662
--- /dev/null
+/* PR target/84700 */
+/* { dg-do compile } */
+/* { dg-options "-O1 -misel" } */
+
+long long int
+foo (long long int x)
+{
+ long long int a = x < 2;
+ int b = a >= 0;
+
+ return a + ((x == 0) ? a : b);
+}