This is a fix for the WLT crashes described in Issue #2280 (closed). The actual fix involves running a module-level WLUR in phase WLT.
Yes it is coming from EMR! Regarding the failing test, the error message is:
./test-ipbb-faux.sac 24 error: SSATid: Variable _emrl_21042_emr_lifted used without definition
I suspect its because of the lifted avis, which does not at this point have a proper vardec... I would need to look closer to confirm.
A quick fix would be to disable EMR for the ipbb test (e.g.
-noEMRCI
).MacOS tests pass because ISL/Barvinok are missing (I think...).
A few questions/ remarks:
Why do you distinguish between WLUnrollingModule and WLUnrollingFundef now? Couldn't the original version be applied in both situations?
Also, I would think we should only unroll the minimum needed, which, I assume is 1? We could have another entry function that sets the maxwlurunroll parameter to 1, then calls the generic one, and afterwards sets the parameter back to its original value....
Re WLUR: The original code was called only in CYC and SAACYC, so did not support the N_module call which is needed in WLT. At first, I had the N_module vs. N_fundef decision being made in the WLUR entry function, but using Module/Fundef entries made the code straightforward in both paths.
If you want to mess with the maxwlunroll parameter, my approach should make that quite straightforward. Is there some reason to prefer your single-entry approach?
As for the maxwlunroll parameter: I have no objection to such a change. My own preference would be to introduce a one-trip WL optimization. That would highlight the limited intent of the code change, and perhaps simplify WLUR (which does two jobs today), but I consider it a frill, and would rather fry bigger fish.
Hi Bob, I've created a fix for the EMRL traversal... in hindsight it was silly of me to not create an assignment to the newly minted EMR lifted N_avis. Current implementation uses a noop() for the assignment until we hit mem:alloc, at which point we update this to an alloc.
This should resolve the crash in SSATransform, and now the LivermoreLoops compile completely.
mentioned in commit 8fa2b382
mentioned in issue #2280 (closed)
mentioned in issue #2297 (closed)