https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63848
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Last reconfirmed| |2014-11-21 Assignee|unassigned at gcc dot gnu.org |jakub at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 34069 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34069&action=edit gcc5-pr63848.patch Untested fix. Apparently on some targets for some modes emit_cmp_and_jump_insns silently generates wrong code, so one needs to use do_compare_rtx_and_jump which wraps that and handles the wider modes. Unfortunately the two functions have different order of arguments (and do_compare_rtx_and_jump one additional one). built-arith-overflow* still passes on x86_64-linux and i686-linux with this, haven't bootstrapped/regtested it yet (but, on these targets it doesn't make much difference, as there are even TImode comparison patterns for -m64 and DImode for -m32).