https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104198

--- Comment #14 from rdapp at linux dot ibm.com ---
Ok, this is triggered by the copy_rtx I introduced for the or1k failure:

+  rtx rev_cc_cmp = copy_rtx (cond_exec_get_condition (jump, /* get_reversed */
true));

because copy_rtx is called with NULL_RTX here.

I'm now testing with

--- a/gcc/ifcvt.cc
+++ b/gcc/ifcvt.cc
@@ -3390,8 +3390,12 @@ noce_convert_multiple_sets_1 (struct noce_if_info
*if_info,
   /* Decompose the condition attached to the jump.  */
   rtx cond = noce_get_condition (jump, &cond_earliest, false);

-  rtx cc_cmp = copy_rtx (cond_exec_get_condition (jump));
-  rtx rev_cc_cmp = copy_rtx (cond_exec_get_condition (jump, /* get_reversed */
true));
+  rtx cc_cmp = cond_exec_get_condition (jump);
+  if (cc_cmp)
+    cc_cmp = copy_rtx (cc_cmp);
+  rtx rev_cc_cmp = cond_exec_get_condition (jump, /* get_reversed */ true);
+  if (rev_cc_cmp)
+    rev_cc_cmp = copy_rtx (rev_cc_cmp);

but the reg_overlap_mentioned_p part still needs to be improved
(independently).

Reply via email to