On Sun, Dec 1, 2024 at 2:36 PM Jeff Law <j...@ventanamicro.com> wrote:
>
>
>
> On 11/12/24 3:42 PM, Richard Sandiford wrote:
>
> >> +
> >> +bool
> >> +pass_hardreg_pre::gate (function *fun)
> >> +{
> >> +#ifdef HARDREG_PRE_REGNOS
> >> +  return optimize > 0
> >> +    && !fun->calls_setjmp;
> >
> > Huh.  It looks like these setjmp exclusions go back to 1998.  I wouldn't
> > have expected them to be needed now, since the modern cfg framework
> > should represent setjmp correctly.  Jeff, do you agree?  I'll try
> > removing them and see what breaks...
> So back in '98 our CFG wasn't accurate (IIRC this code was a lot of what
> motivated making the CFG available before flow).  In addition to not
> being accurate, I don't think we had all of rth's bits to kill
> expressions on abnormal edges which saves us from trying to split an
> abnormal critical edge.
>
> I'd think that if our CFG is accurately representing that abnormal edge
> that we'd be OK these days.  But it's been a long time and there may
> always be something lurking.

I think for RTL CFG we still have issues with setjmp;
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57067  .

Thanks,
Andrew

>
> Jeff
>

Reply via email to