This is the mail archive of the
mailing list for the GCC project.
- From: Richard Henderson <rth at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Sun, 10 Aug 2003 17:36:37 -0400
- Subject: fix 11693
There's a sort of a fundamental misunderstanding between the backend
re-sorting code and the middle-end scheduler. The backend did in fact
find a nice ordering of four insns that nicely filled two .mlx bundles.
But the middle-end decided that it needed to schedule an asm in the
middle of it, and the backend didn't go back and correct its assumptions.
This is not really the sort of thing that can be fixed on the branch,
so I settle for avoiding the abort. Ignoring the L slot lets us emit
the X nop, just as we should.
Well, we would if the "nop_x" pattern weren't empty. I have no idea
why that is that way, and didn't think it was worth tracking down,
since the result does in fact assemble.
* config/ia64/ia64.c (ia64_emit_nops): Skip L slots when
padding before inline assembly.
RCS file: /cvs/gcc/gcc/gcc/config/ia64/ia64.c,v
retrieving revision 184.108.40.206
diff -u -p -u -r220.127.116.11 ia64.c
--- ia64.c 8 Aug 2003 22:07:14 -0000 18.104.22.168
+++ ia64.c 10 Aug 2003 21:26:59 -0000
@@ -7108,7 +7108,8 @@ ia64_emit_nops ()
while (bundle_pos < 3)
- emit_insn_before (gen_nop_type (b->t[bundle_pos]), insn);
+ if (b->t[bundle_pos] != TYPE_L)
+ emit_insn_before (gen_nop_type (b->t[bundle_pos]), insn);