------- Comment #12 from rguenth at gcc dot gnu dot org 2008-10-14 20:46 ------- This is because data-ref uses p1 for DR_BASE_ADDRESS instead of p (which is restrict qualified), for the scalar load we do not do this "propagation" because we try to retain restrict qualifications.
simple_iv () in dr_analyze_innermost computes for the iv base (int * restrict) p1_4(D) + 4 and canonicalize_base_object_address gets passed (int * restrict) p1_4(D) after splitting away the offset. This just strips NOPs, so the restrict qualification gets lost here. I have a patch. So the assert in this case hints at a missed-optimization. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37742