diff options
author | Sebastian Pop <sebastian.pop@amd.com> | 2010-05-28 18:42:15 +0000 |
---|---|---|
committer | Sebastian Pop <spop@gcc.gnu.org> | 2010-05-28 18:42:15 +0000 |
commit | 0a74c7586cbf24b875c05507e6861070e74ffb69 (patch) | |
tree | fd9dab29f46e485b9afc38a2e968d2b4f9bb77eb /gcc/tree-ssa-loop-ivopts.c | |
parent | e7cb8957bf8709677b85ba17fa3f9231633aaede (diff) | |
download | gcc-0a74c7586cbf24b875c05507e6861070e74ffb69.zip gcc-0a74c7586cbf24b875c05507e6861070e74ffb69.tar.gz gcc-0a74c7586cbf24b875c05507e6861070e74ffb69.tar.bz2 |
When niter may be zero, return a COND_EXPR with the may_be_zero condition.
2010-05-28 Sebastian Pop <sebastian.pop@amd.com>
* tree-scalar-evolution.c (set_nb_iterations_in_loop): Inlined in the
only place it was called from.
(number_of_latch_executions): Do not return chrec_dont_know when the
may_be_zero is a runtime condition: instead, return a COND_EXPR
including the may_be_zero condition.
* cfgloop.h (struct loop): Add a note on COND_EXPRs to the comment
of nb_iterations.
* tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Handle
COND_EXPRs.
* gcc.dg/vect/vect-outer-fir-lb.c: Un-XFAIL-ed.
From-SVN: r159992
Diffstat (limited to 'gcc/tree-ssa-loop-ivopts.c')
-rw-r--r-- | gcc/tree-ssa-loop-ivopts.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index 9592832..bda640f 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -681,6 +681,11 @@ contains_abnormal_ssa_name_p (tree expr) idx_contains_abnormal_ssa_name_p, NULL); + if (code == COND_EXPR) + return contains_abnormal_ssa_name_p (TREE_OPERAND (expr, 0)) + || contains_abnormal_ssa_name_p (TREE_OPERAND (expr, 1)) + || contains_abnormal_ssa_name_p (TREE_OPERAND (expr, 2)); + switch (codeclass) { case tcc_binary: |