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 >