Enable condegen in case of cond phis.
authorspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 18 Nov 2015 21:08:40 +0000 (21:08 +0000)
committerspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 18 Nov 2015 21:08:40 +0000 (21:08 +0000)
commitaca6c41c2b1cab7e1ca680839f4e4f34226f265a
treec8cf60cf92fdccce7c4a2095a5758c691d9acd3a
parentc604a2308e49b5cf0b7563ed910dde160bc92c40
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230567 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/graphite-isl-ast-to-gimple.c