Enable condegen in case of cond phis.
authorAditya Kumar <aditya.k7@samsung.com>
Wed, 18 Nov 2015 21:08:40 +0000 (21:08 +0000)
committerSebastian Pop <spop@gcc.gnu.org>
Wed, 18 Nov 2015 21:08:40 +0000 (21:08 +0000)
commit21c7259c1c6d5de223a4150d5bd0420eef1f2925
treec8cf60cf92fdccce7c4a2095a5758c691d9acd3a
parent2ecf4eca922c12a93918f2c4b7c3b3b962d63e98
Enable condegen in case of cond phis.

The codegen of conditional PHIs inside the scop where one predecessor dominates
the other was difficult so it wasn't enabled in the previous patch. After a
couple of bug-fixes this has been enabled in this patch.  Not all the cases
could be handled in this case because it becomes difficult to map the basic
block back to original code in some cases.

Bug-fixes:
1. The vec_find returns -1 when no element was found. This wasn't checked.
2. When the arguments to pending phis could not be resolved in the second pass,
the codegen would fail so the new code should be cleaned up.

This patch passes regtest and bootstrap on linux-x86-64 with
BOOT_CFLAGS='-O2 -fgraphite-identity -floop-nest-optimize'

2015-11-14  hiraditya  <hiraditya@msn.com>

* graphite-isl-ast-to-gimple.c (copy_loop_phi_args): Change the return
          type to bool for early exit.
          (translate_isl_ast_to_gimple::copy_loop_phi_nodes): Early return in
          case of error.
          (translate_isl_ast_to_gimple::copy_loop_close_phi_args): Same.
          (add_phi_arg_for_new_expr): Enable codegen for if-block where one predecessor
          dominates the other.
          (translate_isl_ast_to_gimple::copy_cond_phi_args): Fix. When the element is not
          found it returns -1.
          (translate_isl_ast_to_gimple::translate_pending_phi_nodes): Bail out early when
          codegen fails.
          (graphite_regenerate_ast_isl): Remove codegen region when pending phis
          could not be generated.

From-SVN: r230567
gcc/ChangeLog
gcc/graphite-isl-ast-to-gimple.c