Preserve RegionInfo after regionsimplify

Hi Tobias,
My RegionSimplify pass adds new exit node for refined regions to convert them into simple region.
However, the RegionInfo pass does not seem to recognize those changes.
For example, in the attached file, bb4.region is supposed to be in the first region.

My RegionExtractor pass required the extracted region to be simple.
Should we modify RegionInfo or is their away to preserve the RegionInfo from RegionSimplify and pass it to RegionExtractor?
Thanks.
Vu

reg.main.dot.pdf (31.3 KB)

RegionInfo only detects canonical regions and the region containing bb4.region is not canonical any more. So if the RegionInfo is recalculated from scratch it might again contain non simple regions.

I see two approaches:

* Define a RegionInfo pass that detects only simple regions. This can be used to recalculate the region tree from the CFG. If we only take simple regions into account, the region you want to have is canonical.

* Preserve the RegionInfo after your RegionSimplify pass. In your RegionSimplify pass you already create a RegionTree that only contains
simple regions. Just state that your pass preserves RegionInfo and DominatorTree and there is no need to recalculate RegionInfo.

I believe approach two is probably the easiest.

Check 'opt -debug-pass=Structure -regionsimplify -regionextractor file..' and see if the RegionInfo is recalulated. Try to not recalculate it.

Tobi