diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2214ddf712a..39dd070c8d1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-06-03 Zdenek Dvorak + + PR tree-optimization/32194 + * tree-predcom.c (determine_offset): Check that both references have + the same type. + 2007-06-03 Zdenek Dvorak * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge): diff --git a/gcc/tree-predcom.c b/gcc/tree-predcom.c index b5c82923ee2..15fcafe76e1 100644 --- a/gcc/tree-predcom.c +++ b/gcc/tree-predcom.c @@ -628,6 +628,13 @@ determine_offset (struct data_reference *a, struct data_reference *b, double_int *off) { aff_tree diff, baseb, step; + tree typea, typeb; + + /* Check that both the references access the location in the same type. */ + typea = TREE_TYPE (DR_REF (a)); + typeb = TREE_TYPE (DR_REF (b)); + if (!tree_ssa_useless_type_conversion_1 (typeb, typea)) + return false; /* Check whether the base address and the step of both references is the same. */