On 11/12/24 3:42 PM, Richard Sandiford wrote:
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.+ +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...
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.
Jeff
