http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59209
--- Comment #1 from Marc Glisse <glisse at gcc dot gnu.org> --- In test_copy2, we get: _2 = x_1(D) + 1; src_end.1_8 = (long int) _2; src_start.2_9 = (long int) x_1(D); _10 = src_end.1_8 - src_start.2_9; _11 = (long unsigned int) _10; This reminds me of PR 58742: we are failing to simplify basic arithmetic on pointers.