summaryrefslogtreecommitdiffstats
path: root/gcc/tree-vectorizer.c
diff options
context:
space:
mode:
authordorit <dorit@138bc75d-0d04-0410-961f-82ee72b054a4>2005-06-02 14:52:18 +0000
committerdorit <dorit@138bc75d-0d04-0410-961f-82ee72b054a4>2005-06-02 14:52:18 +0000
commit091b9f15c89f11e9be69d7b2b721cb9992998dc0 (patch)
tree70efda32e52ad7147632f73b19b89bfc258edbc6 /gcc/tree-vectorizer.c
parent96e0889fb475f31977d68e7d4560b16cb335d52b (diff)
downloadppe42-gcc-091b9f15c89f11e9be69d7b2b721cb9992998dc0.tar.gz
ppe42-gcc-091b9f15c89f11e9be69d7b2b721cb9992998dc0.zip
PR tree-optimization/21734
* tree-vectorizer.c (slpeel_update_phis_for_duplicate_loop): Use the phi_result when current_def is not available. (slpeel_update_phi_nodes_for_guard1): Don't fail if current_def is not available. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@100494 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-vectorizer.c')
-rw-r--r--gcc/tree-vectorizer.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c
index c8985b94a40..883f403051c 100644
--- a/gcc/tree-vectorizer.c
+++ b/gcc/tree-vectorizer.c
@@ -320,8 +320,11 @@ slpeel_update_phis_for_duplicate_loop (struct loop *orig_loop,
new_ssa_name = get_current_def (def);
if (!new_ssa_name)
- /* Something defined outside of the loop. */
- continue;
+ {
+ /* This only happens if there are no definitions
+ inside the loop. use the phi_result in this case. */
+ new_ssa_name = PHI_RESULT (phi_new);
+ }
/* An ordinary ssa name defined in the loop. */
add_phi_arg (phi_new, new_ssa_name, loop_latch_edge (new_loop));
@@ -565,7 +568,12 @@ slpeel_update_phi_nodes_for_guard1 (edge guard_edge, struct loop *loop,
else
{
current_new_name = get_current_def (loop_arg);
- gcc_assert (current_new_name);
+ /* current_def is not available only if the variable does not
+ change inside the loop, in which case we also don't care
+ about recording a current_def for it because we won't be
+ trying to create loop-exit-phis for it. */
+ if (!current_new_name)
+ continue;
}
#ifdef ENABLE_CHECKING
gcc_assert (get_current_def (current_new_name) == NULL_TREE);
OpenPOWER on IntegriCloud