executeScopConditionally: Introduce special exiting block
authorTobias Grosser <tobias@grosser.es>
Wed, 9 Dec 2015 11:38:22 +0000 (11:38 +0000)
committerTobias Grosser <tobias@grosser.es>
Wed, 9 Dec 2015 11:38:22 +0000 (11:38 +0000)
commit2d3d4ec860ff13494aaf56855dbe05bf1ab68a29
tree7e5b0a5e3d83967225b572c26c4b459a197e8e7d
parent87a44d29a2ab3a94220dc6fcfb1de0e41a68817d
executeScopConditionally: Introduce special exiting block

When introducing separate control flow for the original and optimized code we
introduce now a special 'ExitingBlock':

      \   /
    EnteringBB
        |
    SplitBlock---------\
   _____|_____         |
  /  EntryBB  \    StartBlock
  |  (region) |        |
  \_ExitingBB_/   ExitingBlock
        |              |
    MergeBlock---------/
        |
      ExitBB
      /    \

This 'ExitingBlock' contains code such as the final_reloads for scalars, which
previously were just added to whichever statement/loop_exit/branch-merge block
had been generated last. Having an explicit basic block makes it easier to
find these constructs when looking at the CFG.

llvm-svn: 255107
17 files changed:
polly/lib/CodeGen/Utils.cpp
polly/test/Isl/CodeGen/OpenMP/single_loop.ll
polly/test/Isl/CodeGen/invariant_load_escaping.ll
polly/test/Isl/CodeGen/out-of-scop-phi-node-use.ll
polly/test/Isl/CodeGen/phi-defined-before-scop.ll
polly/test/Isl/CodeGen/phi_in_exit_early_lnt_failure_2.ll
polly/test/Isl/CodeGen/phi_in_exit_early_lnt_failure_3.ll
polly/test/Isl/CodeGen/phi_in_exit_early_lnt_failure_5.ll
polly/test/Isl/CodeGen/phi_loop_carried_float.ll
polly/test/Isl/CodeGen/phi_loop_carried_float_escape.ll
polly/test/Isl/CodeGen/phi_scalar_simple_1.ll
polly/test/Isl/CodeGen/phi_scalar_simple_2.ll
polly/test/Isl/CodeGen/phi_with_multi_exiting_edges_2.ll
polly/test/Isl/CodeGen/phi_with_one_exit_edge.ll
polly/test/ScopInfo/invariant_load_access_classes_different_base_type_escaping.ll
polly/test/ScopInfo/invariant_load_access_classes_different_base_type_same_pointer_escaping.ll
polly/test/ScopInfo/out-of-scop-use-in-region-entry-phi-node-nonaffine-subregion.ll