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.
Jeff