From: Sebastian Pop <sebpop@gmail.com>
To: gcc-patches@gcc.gnu.org
Cc: gcc-graphite@googlegroups.com, Sebastian Pop <sebpop@gmail.com>
Subject: [PATCH 08/12] Special case non close-phi nodes with one argument in rewrite_close_phi_out_of_ssa.
Date: Fri, 16 Jul 2010 07:05:00 -0000 [thread overview]
Message-ID: <1279263843-9149-9-git-send-email-sebpop@gmail.com> (raw)
In-Reply-To: <1279263843-9149-1-git-send-email-sebpop@gmail.com>
2010-07-15 Sebastian Pop <sebastian.pop@amd.com>
* graphite-sese-to-poly.c (rewrite_close_phi_out_of_ssa): Special
case non close-phi nodes with one argument.
---
gcc/ChangeLog.graphite | 5 +++++
gcc/graphite-sese-to-poly.c | 28 ++++++++++++++++++++--------
2 files changed, 25 insertions(+), 8 deletions(-)
diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite
index bbd6a34..40db483 100644
--- a/gcc/ChangeLog.graphite
+++ b/gcc/ChangeLog.graphite
@@ -1,5 +1,10 @@
2010-07-15 Sebastian Pop <sebastian.pop@amd.com>
+ * graphite-sese-to-poly.c (rewrite_close_phi_out_of_ssa): Special
+ case non close-phi nodes with one argument.
+
+2010-07-15 Sebastian Pop <sebastian.pop@amd.com>
+
* sese.h (scev_analyzable_p): Scevs could be expressions without
chrecs and still be scev_analyzable_p.
diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c
index 9c54f0b..3d02197 100644
--- a/gcc/graphite-sese-to-poly.c
+++ b/gcc/graphite-sese-to-poly.c
@@ -2202,22 +2202,34 @@ rewrite_close_phi_out_of_ssa (gimple_stmt_iterator *psi)
gimple phi = gsi_stmt (*psi);
tree res = gimple_phi_result (phi);
tree var = SSA_NAME_VAR (res);
- tree zero_dim_array = create_zero_dim_array (var, "Close_Phi");
- gimple_stmt_iterator gsi = gsi_after_labels (gimple_bb (phi));
- gimple stmt = gimple_build_assign (res, zero_dim_array);
+ basic_block bb = gimple_bb (phi);
+ gimple_stmt_iterator gsi = gsi_after_labels (bb);
tree arg = gimple_phi_arg_def (phi, 0);
+ gimple stmt;
/* Note that loop close phi nodes should have a single argument
because we translated the representation into a canonical form
before Graphite: see canonicalize_loop_closed_ssa_form. */
gcc_assert (gimple_phi_num_args (phi) == 1);
- if (TREE_CODE (arg) == SSA_NAME
- && !SSA_NAME_IS_DEFAULT_DEF (arg))
- insert_out_of_ssa_copy (zero_dim_array, arg, SSA_NAME_DEF_STMT (arg));
+ /* The phi node can be a non close phi node, when its argument is
+ invariant, or when it is defined in the same loop as the phi node. */
+ if (is_gimple_min_invariant (arg)
+ || gimple_bb (SSA_NAME_DEF_STMT (arg))->loop_father == bb->loop_father)
+ stmt = gimple_build_assign (res, arg);
else
- insert_out_of_ssa_copy_on_edge (single_pred_edge (gimple_bb (phi)),
- zero_dim_array, arg);
+ {
+ tree zero_dim_array = create_zero_dim_array (var, "Close_Phi");
+
+ stmt = gimple_build_assign (res, zero_dim_array);
+
+ if (TREE_CODE (arg) == SSA_NAME
+ && !SSA_NAME_IS_DEFAULT_DEF (arg))
+ insert_out_of_ssa_copy (zero_dim_array, arg, SSA_NAME_DEF_STMT (arg));
+ else
+ insert_out_of_ssa_copy_on_edge (single_pred_edge (bb),
+ zero_dim_array, arg);
+ }
remove_phi_node (psi, false);
gsi_insert_before (&gsi, stmt, GSI_NEW_STMT);
--
1.7.0.4
next prev parent reply other threads:[~2010-07-16 7:04 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-16 7:04 [PATCH 00/12] [graphite] Remove the induction variable canonicalization Sebastian Pop
2010-07-16 7:04 ` [PATCH 07/12] Scevs could be expressions without chrecs and still be scev_analyzable_p Sebastian Pop
2010-07-16 7:04 ` [PATCH 03/12] chrec_apply should only apply to the specified variable Sebastian Pop
2010-07-16 7:04 ` [PATCH 09/12] Add testcase for PR42729 and fix handling of gimple_debug info Sebastian Pop
2010-07-16 7:05 ` [PATCH 01/12] Remove insert_loop_close_phis Sebastian Pop
2010-07-16 7:05 ` [PATCH 06/12] Bump the size of scevs Sebastian Pop
2010-07-16 8:03 ` Richard Guenther
2010-07-16 14:41 ` Sebastian Pop
2010-07-16 7:05 ` [PATCH 10/12] Correctly handle SSA_NAME_IS_DEFAULT_DEF in rewrite_close_phi_out_of_ssa Sebastian Pop
2010-07-16 7:05 ` [PATCH 02/12] Remove expand_scalar_variables_ hack Sebastian Pop
2010-07-16 7:05 ` [PATCH 04/12] Also handle GIMPLE_CALLs in rewrite_cross_bb_scalar_deps Sebastian Pop
2010-07-16 7:05 ` [PATCH 05/12] Remove uses of loop->single_iv Sebastian Pop
2010-07-16 7:05 ` Sebastian Pop [this message]
2010-07-16 7:05 ` [PATCH 12/12] Unshare the scev before code generating it Sebastian Pop
2010-07-16 7:05 ` [PATCH 11/12] Do not rewrite out of SSA scalar phi nodes that can be scev_analyzable_p Sebastian Pop
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1279263843-9149-9-git-send-email-sebpop@gmail.com \
--to=sebpop@gmail.com \
--cc=gcc-graphite@googlegroups.com \
--cc=gcc-patches@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).