re PR tree-optimization/21963 (ICE (seg fault) with -m64 (in IV-OPTS))

PR tree-optimization/21963
	* tree-ssa-loop-ivopts.c (get_computation_aff): Use
	constant_multiple_of in the same way get_computation_cost_at does.

From-SVN: r101654
This commit is contained in:
Zdenek Dvorak 2005-07-06 10:13:13 +02:00 committed by Zdenek Dvorak
parent 8ec11fe9b8
commit c456a94a49
2 changed files with 17 additions and 5 deletions

View File

@ -1,3 +1,9 @@
2005-07-06 Zdenek Dvorak <dvorakz@suse.cz>
PR tree-optimization/21963
* tree-ssa-loop-ivopts.c (get_computation_aff): Use
constant_multiple_of in the same way get_computation_cost_at does.
2005-07-06 Jakub Jelinek <jakub@redhat.com>
* config/sparc/sparc.h (sparc_compare_emitted): New extern.

View File

@ -2983,6 +2983,7 @@ get_computation_aff (struct loop *loop,
unsigned HOST_WIDE_INT ustepi, cstepi;
HOST_WIDE_INT ratioi;
struct affine_tree_combination cbase_aff, expr_aff;
tree cstep_orig = cstep, ustep_orig = ustep;
if (TYPE_PRECISION (utype) > TYPE_PRECISION (ctype))
{
@ -3012,13 +3013,18 @@ get_computation_aff (struct loop *loop,
expr = fold_convert (uutype, expr);
cbase = fold_convert (uutype, cbase);
cstep = fold_convert (uutype, cstep);
/* If the conversion is not noop, we must take it into account when
considering the value of the step. */
if (TYPE_PRECISION (utype) < TYPE_PRECISION (ctype))
cstep_orig = cstep;
}
if (cst_and_fits_in_hwi (cstep)
&& cst_and_fits_in_hwi (ustep))
if (cst_and_fits_in_hwi (cstep_orig)
&& cst_and_fits_in_hwi (ustep_orig))
{
ustepi = int_cst_value (ustep);
cstepi = int_cst_value (cstep);
ustepi = int_cst_value (ustep_orig);
cstepi = int_cst_value (cstep_orig);
if (!divide (TYPE_PRECISION (uutype), ustepi, cstepi, &ratioi))
{
@ -3032,7 +3038,7 @@ get_computation_aff (struct loop *loop,
}
else
{
ratio = constant_multiple_of (uutype, ustep, cstep);
ratio = constant_multiple_of (uutype, ustep_orig, cstep_orig);
if (!ratio)
return false;