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

Reply via email to