aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-flow.h
diff options
context:
space:
mode:
authorZdenek Dvorak <rakdver@gcc.gnu.org>2006-05-24 22:55:15 +0000
committerZdenek Dvorak <rakdver@gcc.gnu.org>2006-05-24 22:55:15 +0000
commitd7f5de76fdc534c7eb7bb532b212936665ec2080 (patch)
tree1cb568e88ce4a846caaddba12bd18eb12329f4b8 /gcc/tree-flow.h
parent91f8ce668b14d42e1bcbead322f869009fc896f0 (diff)
downloadgcc-d7f5de76fdc534c7eb7bb532b212936665ec2080.zip
gcc-d7f5de76fdc534c7eb7bb532b212936665ec2080.tar.gz
gcc-d7f5de76fdc534c7eb7bb532b212936665ec2080.tar.bz2
re PR tree-optimization/27639 (VRP miscompilation of simple loop)
PR tree-optimization/27639 PR tree-optimization/26719 * tree-vrp.c (adjust_range_with_scev): Use scev_direction and adjust call to scev_probably_wraps_p. * tree-ssa-loop-niter.c (compare_trees, convert_step_widening, used_in_pointer_arithmetic_p, convert_step): Removed. (nowrap_type_p): New function. (scev_probably_wraps_p): Rewritten. * tree-scalar-evolution.c (instantiate_parameters_1): Do not call chrec_convert if chrec_convert_aggressive might have been used. * tree-chrec.c (convert_affine_scev, chrec_convert_1, scev_direction): New functions. (chrec_convert): Changed to a wrapper over chrec_convert_1. * tree-ssa-loop-ivopts.c (idx_find_step): Use convert_affine_scev instead of convert_step. * tree-flow.h (scev_probably_wraps_p): Declaration changed. (convert_step): Declaration removed. (convert_affine_scev, nowrap_type_p, scev_direction): Declare. * gcc.dg/pr27639.c: New test. * gcc.dg/pr26719.c: New test. * gcc.dg/tree-ssa/scev-cast.c: New test. From-SVN: r114057
Diffstat (limited to 'gcc/tree-flow.h')
-rw-r--r--gcc/tree-flow.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h
index 1bd3237..8563402 100644
--- a/gcc/tree-flow.h
+++ b/gcc/tree-flow.h
@@ -810,9 +810,13 @@ tree find_loop_niter (struct loop *, edge *);
tree loop_niter_by_eval (struct loop *, edge);
tree find_loop_niter_by_eval (struct loop *, edge *);
void estimate_numbers_of_iterations (struct loops *);
-bool scev_probably_wraps_p (tree, tree, tree, tree, struct loop *, bool *,
- bool *);
-tree convert_step (struct loop *, tree, tree, tree, tree);
+bool scev_probably_wraps_p (tree, tree, tree, struct loop *, bool);
+bool convert_affine_scev (struct loop *, tree, tree *, tree *, tree, bool);
+
+bool nowrap_type_p (tree);
+enum ev_direction {EV_DIR_GROWS, EV_DIR_DECREASES, EV_DIR_UNKNOWN};
+enum ev_direction scev_direction (tree);
+
void free_numbers_of_iterations_estimates (struct loops *);
void free_numbers_of_iterations_estimates_loop (struct loop *);
void rewrite_into_loop_closed_ssa (bitmap, unsigned);