[Bug target/84826] ICE in extract_insn, at recog.c:2304 on arm-linux-gnueabi
ktkachov at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Mar 12 10:43:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84826
--- Comment #2 from ktkachov at gcc dot gnu.org ---
Hmmm, the epilogue expansion in arm.md hits the HAVE_return path and does:
emit_jump_insn (gen_return ());
with a comment saying:
/* HAVE_return is testing for USE_RETURN_INSN (FALSE). Hence,
no need for explicit testing again. */
But I don't think that comment is true (maybe it was true at some point in the
past?). There is no return optab in the arm backend gated on USE_RETURN_INSN
(FALSE)
USE_RETURN_INSN (FALSE) is used to gate *arm_return, which is what the RTL is
supposed to match, but does not end up matching.
This is all quite old code, but I think the safest fix at this stage is to add
a "&& USE_RETURN_INSN (FALSE)" check to that HAVE_return so that the
arm_expand_epilogue path is taken.
More information about the Gcc-bugs
mailing list