HomePhabricator

[BlockExtractor] Extend the file format to support the grouping of basic blocks

Description

[BlockExtractor] Extend the file format to support the grouping of basic blocks

Prior to this patch, each basic block listed in the extrack-blocks-file
would be extracted to a different function.

This patch adds the support for comma separated list of basic blocks
to form group.

When the region formed by a group is not extractable, e.g., not single
entry, all the blocks of that group are left untouched.

Let us see this new format in action (comments are not part of the
file format):
;; funcName bbName[,bbName...]

foo      bb1        ;; Extract bb1 in its own function
foo      bb2,bb3    ;; Extract bb2,bb3 in their own function
bar      bb1,bb4    ;; Extract bb1,bb4 in their own function
bar      bb2        ;; Extract bb2 in its own function

Assuming all regions are extractable, this will create one function and
thus one call per region.

Differential Revision: https://reviews.llvm.org/D60746

Details