[PATCH] Loop unswitching: support gswitch statements.

Andrew MacLeod amacleod@redhat.com
Tue Oct 5 17:08:46 GMT 2021


On 9/28/21 7:50 AM, Richard Biener wrote:
> On Wed, Sep 15, 2021 at 10:46 AM Martin Liška <mliska@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



More information about the Gcc-patches mailing list