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).