private void printAllRegions() { for (BasicBlock bb1 : cfg.getBasicBlocks()) { for (BasicBlock bb2 : cfg.getBasicBlocks()) { if (!bb1.equals(bb2) && getDomInfo().dominates(bb1, bb2)) { if (isRegion(bb1, bb2)) { LOGGER.debug("REGION {},{}", bb1, bb2); } } } } }
private void buildRegionTree(BasicBlock bb, RPSTRegion region) { while (bb.equals(region.exit)) { region = region.parent; } RPSTRegion newRegion = bb2region.get(bb); if (newRegion != null) { RPSTRegion topMostParent = getTopMostParent(newRegion); LOGGER.trace("Parent of region {} is {}", topMostParent, region); topMostParent.parent = region; region = newRegion; } else { LOGGER.trace("Parent of BB {} is {}", bb, region); bb2region.put(bb, region); } for (BasicBlock c : getDomInfo().getDominatorsTree().getChildren(bb)) { buildRegionTree(c, region); } }