https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62062
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|inline-asm |middle-end --- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- for write_run_char_ptr_ref we get: <bb 5> [local count: 955630225]: # n_18 = PHI <n_8(5), n_15(4)> _2 = *p_10(D); _3 = _2 + 1; *p_10(D) = _3; *_2 = _13; n_8 = n_18 + -1; if (n_8 != -1(OVF)) goto <bb 5>; [89.00%] else goto <bb 3>; [11.00%] So I think this is still correct based on aliasing rules ... That is the what char* points to can be writing to a reference/pointer type of (char*&). Now we could version this loop for aliasing but I don't know how much it would benifit in general.