From 142d1f57d6c4a40bcf07a243bf71465bf72b1012 Mon Sep 17 00:00:00 2001 From: Zdenek Dvorak Date: Wed, 5 Nov 2003 19:10:44 +0100 Subject: cfgloopanal.c (variable_initial_value, [...]): Record the fact that initial value is extended from inner mode. * cfgloopanal.c (variable_initial_value, variable_initial_values, simple_loop_exit_p): Record the fact that initial value is extended from inner mode. (count_strange_loop_iterations, count_loop_iterations): Handle ivs that iterate in a narrower mode. Fix handling of overflows. Improve handling of NE conditions. (inverse, fits_in_mode_p): New static functions. (simple_increment): Detect variables that iterate in a narrower mode. * cfgloop.h (struct loop_desc): Fields inner_mode and extend added. From-SVN: r73275 --- gcc/cfgloop.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'gcc/cfgloop.h') diff --git a/gcc/cfgloop.h b/gcc/cfgloop.h index e879e52..0ab1590 100644 --- a/gcc/cfgloop.h +++ b/gcc/cfgloop.h @@ -42,6 +42,9 @@ struct loop_desc int postincr; /* 1 if increment/decrement is done after loop exit condition. */ rtx stride; /* Value added to VAR in each iteration. */ rtx var; /* Loop control variable. */ + enum machine_mode inner_mode; + /* The mode from that it is extended. */ + enum rtx_code extend; /* With this extend. */ rtx var_alts; /* List of definitions of its initial value. */ rtx lim; /* Expression var is compared with. */ rtx lim_alts; /* List of definitions of its initial value. */ -- cgit v1.1