https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116461
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The easiest fix is todo: ``` for (int i = 0; i < N; ++i) { a[i] = BASE1 + i * 5; b[i] = BASE2 - i * 4; /* b[i] cannot be 0 as that is undefined for `% b[i]`. */ b[i] = b[i] ? b[i] : 1; __asm__ volatile (""); } ``` On x86_64, I suspect we are getting a trap on the `% b[i]` rather than a comparison difference too. Which is why the fix should be on the initialization rather than the checking.