http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51106
Andrey Belevantsev <abel at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |abel at gcc dot gnu.org, | |jakub at gcc dot gnu.org --- Comment #2 from Andrey Belevantsev <abel at gcc dot gnu.org> 2012-01-19 09:24:27 UTC --- Well, the instantiate virtual regs pass just deletes the asm as having impossible constraints and does not clean up cfg after itself. As the asm is actually a jump in this case, everything blows up. The trivial patch below makes this work for -O[012]. Any other places in function.c need patching up? Jakub, what do you think? diff --git a/gcc/function.c b/gcc/function.c index fcb79f5..94e51f4 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -1737,7 +1737,7 @@ instantiate_virtual_regs_in_insn (rtx insn) if (!check_asm_operands (PATTERN (insn))) { error_for_asm (insn, "impossible constraint in %<asm%>"); - delete_insn (insn); + delete_insn_and_edges (insn); } } else