On 11/6/18 6:23 AM, Renlin Li wrote: > I just did a bootstrap again with everything up to r264897 which is Oct 6. > it produce the ICE I mentioned on the PR87899. > > The first combiner patch on Oct 22.
Do the testsuite results (for disable-bootstrap builds) differ between r264896 and r264897? If so, that would be much easier to track down. If not, maybe the following patch could help to narrow down which gcc source file(s) are being miscompiled by allowing you to disable the special handling of copy conflicts with an option? The option default (ie, not using the option or -fno-ira-copies-conflict) is the same behavior as now and -fira-copies-conflict would make things behave like they did before my patch. Peter Index: gcc/common.opt =================================================================== --- gcc/common.opt (revision 265402) +++ gcc/common.opt (working copy) @@ -1761,6 +1761,10 @@ Enum(ira_region) String(all) Value(IRA_R EnumValue Enum(ira_region) String(mixed) Value(IRA_REGION_MIXED) +fira-copies-conflict +Common Report Var(flag_ira_copies_conflict) Init(0) Optimization +Make pseudos connected by a copy conflict + fira-hoist-pressure Common Report Var(flag_ira_hoist_pressure) Init(1) Optimization Use IRA based register pressure calculation Index: gcc/ira-lives.c =================================================================== --- gcc/ira-lives.c (revision 265402) +++ gcc/ira-lives.c (working copy) @@ -1066,7 +1066,7 @@ non_conflicting_reg_copy_p (rtx_insn *in { /* Reload has issues with overlapping pseudos being assigned to the same hard register, so don't allow it. See PR87600 for details. */ - if (!targetm.lra_p ()) + if (flag_ira_copies_conflict || !targetm.lra_p ()) return NULL_RTX; rtx set = single_set (insn);