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

--- Comment #10 from Khem Raj <raj.khem at gmail dot com> ---
@a(In reply to Ramana Radhakrishnan from comment #9)
> (In reply to Andrew Pinski from comment #8)
> > Cannot rename chain v30 (8) at insn 54 (mark_read)
> > Creating chain v29 (13) at insn 54
> > Cannot rename chain v29 (13) at insn 30 (mark_read)
> > Widening register in chain v29 (13) at insn 30
> > Cannot rename chain v30 (8) at insn 30 (mark_read)
> > Failing basic block due to unhandled overlap
> > Closing chain v29 (13) at insn 30 (terminate_dead, superset)
> > Failing basic block due to unhandled overlap
> > Failing basic block due to unhandled overlap
> > Closing chain v28 (6) at insn 30 (terminate_write, superset)
> > Creating chain v28 (14) at insn 30
> > failed
> > 
> > ```
> > diff --git a/gcc/config/aarch64/cortex-a57-fma-steering.cc
> > b/gcc/config/aarch64/cortex-a57-fma-steering.cc
> > index fd6da66d855..2dc0fffed62 100644
> > --- a/gcc/config/aarch64/cortex-a57-fma-steering.cc
> > +++ b/gcc/config/aarch64/cortex-a57-fma-steering.cc
> > @@ -948,6 +948,9 @@ func_fma_steering::analyze ()
> > 
> >           /* Search the chain where this instruction is (one of) the root. 
> > */
> >           dest_op_info = insn_rr[INSN_UID (insn)].op_info;
> > +         /* Register rename could fail. */
> > +         if (!dest_op_info)
> > +           continue;
> >           dest_regno = REGNO (SET_DEST (PATTERN (insn)));
> >           for (i = 0; i < dest_op_info->n_chains; i++)
> >             {
> > 
> > ```
> > 
> > Fixes the issue.
> 
> Looks reasonable from memory. Perhaps worth landing this after testing ? 
> 

any updates on this ? I can confirm this fixes the problem.

> regards
> Ramana

Reply via email to