+
+ /* We can't simply use get_object_alignment_1 on the full
+ reference as for accesses with variable indexes this reports
+ too conservative alignment. We also can't use the ao_ref_base
+ base objects as ao_ref_base happily strips MEM_REFs around
+ decls even though that may carry alignment info. */
+ b1 = t1;
+ while (handled_component_p (b1))
+ b1 = TREE_OPERAND (b1, 0);
+ b2 = t2;
+ while (handled_component_p (b2))
+ b2 = TREE_OPERAND (b2, 0);
+ unsigned int align1, align2;
+ unsigned HOST_WIDE_INT tem;
+ get_object_alignment_1 (b1, &align1, &tem);
+ get_object_alignment_1 (b2, &align2, &tem);
+ if (align1 != align2)
+ return return_false_with_msg ("different access alignment");
+
+ /* Similarly we have to compare dependence info where equality
+ tells us we are safe (even some unequal values would be safe
+ but then we have to maintain a map of bases and cliques). */
+ unsigned short clique1 = 0, base1 = 0, clique2 = 0, base2 = 0;
+ if (TREE_CODE (b1) == MEM_REF)
+ {
+ clique1 = MR_DEPENDENCE_CLIQUE (b1);
+ base1 = MR_DEPENDENCE_BASE (b1);
+ }
+ if (TREE_CODE (b2) == MEM_REF)
+ {
+ clique2 = MR_DEPENDENCE_CLIQUE (b2);
+ base2 = MR_DEPENDENCE_BASE (b2);
+ }
+ if (clique1 != clique2 || base1 != base2)
+ return return_false_with_msg ("different dependence info");