------- Comment #1 from wilson at gcc dot gnu dot org 2007-05-01 01:53 ------- It dies in recog because of an invalid extended asm insn rtl. In an asm with 2 or more outputs, we end up with 2 or more copies of the input vector. These vectors must be shared. They are not in this case.
The problem occurs in haifa-sched, in the speculative instruction support. It uses copy_rtx to make a copy of an insn when speculatively scheduling it. However, copy_rtx does not preserve the special sharing semantics of asm operands, so the result is a corrupted insn. There exists a special routine copy_insn to solve this problem. So the solution here is to just replace the copy_rtx call with a copy_insn call. This works on mainline for this testcase but is not otherwise tested. -- wilson at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |wilson at gcc dot gnu dot | |org Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2007-05-01 01:53:27 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31684