------- Comment #1 from rguenth at gcc dot gnu dot org 2008-11-25 11:58 ------- Simpler testcase at -O
void foo (unsigned long *start, unsigned long *end) { unsigned long *temp = end - 1; while (end > start) *end-- = *temp--; } blocks alias-improvements branch (causes the store and load to be deleted). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37869