On 9/28/21 7:50 AM, Richard Biener wrote:
On Wed, Sep 15, 2021 at 10:46 AM Martin Liška <mli...@suse.cz> wrote:
Hello.
The patch extends the loop unswitching pass so that gswitch
statements are supported. The pass now uses ranger which marks
switch edges that are known to be unreachable in a versioned loop.
Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
Ready to be installed?
Thanks,
Martin
Do you have any switch size restrictions or limits?
I'm about to add --param which will limit ranger to switches of a specified
size, defaulting to 50 outgoing edges.
It turns out a number of the pathological cases we see are very large switches,
and we spend a lot of time processing and unioning ranges on the various edges
and at meet points.
Anyway, the limit will make ranger not "see" switches above the threshold, so
it will not generate ranges for them. I hope to eliminate this for next release, but for
now it serves a purpose.
The patch currently makes this apply to all rangers, but if this is problematic
for you, I will adjust it to make sure its only when invoked via EVRP.
Andrew