Add loop descriptors and some required dominator tree extensions.
authorVictor Lomuller <victor@codeplay.com>
Thu, 21 Dec 2017 14:47:25 +0000 (14:47 +0000)
committerSteven Perron <stevenperron@google.com>
Mon, 8 Jan 2018 14:31:13 +0000 (09:31 -0500)
commite8ad02f3dde41d227319944f52cc850bcc077fb7
tree0a0149c5d3705a090cd0ec886a3d7f753a7b73fa
parent6e9ea2e584907e2834ada0f18729c34c96bc0801
Add loop descriptors and some required dominator tree extensions.

Add post-order tree iterator.

Add DominatorTreeNode extensions:
 - Add begin/end methods to do pre-order and post-order tree traversal from a given DominatorTreeNode

Add DominatorTree extensions:
  - Add begin/end methods to do pre-order and post-order tree traversal
  - Tree traversal ignore by default the pseudo entry block
  - Retrieve a DominatorTreeNode from a basic block

Add loop descriptor:
  - Add a LoopDescriptor class to register all loops in a given function.
  - Add a Loop class to describe a loop:
    - Loop parent
    - Nested loops
    - Loop depth
    - Loop header, merge, continue and preheader
    - Basic blocks that belong to the loop

Correct a bug that forced dominator tree to be constantly rebuilt.
14 files changed:
Android.mk
source/opt/CMakeLists.txt
source/opt/dominator_tree.cpp
source/opt/dominator_tree.h
source/opt/ir_context.cpp
source/opt/ir_context.h
source/opt/loop_descriptor.cpp [new file with mode: 0644]
source/opt/loop_descriptor.h [new file with mode: 0644]
source/opt/tree_iterator.h
test/opt/CMakeLists.txt
test/opt/dominator_tree/generated.cpp
test/opt/loop_optimizations/CMakeLists.txt [new file with mode: 0644]
test/opt/loop_optimizations/loop_descriptions.cpp [new file with mode: 0644]
test/opt/loop_optimizations/nested_loops.cpp [new file with mode: 0644]