This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
genemit.c (gen_expand): If next is MATCH_PAR_DUP, then output...
- To: egcs-patches at egcs dot cygnus dot com
- Subject: genemit.c (gen_expand): If next is MATCH_PAR_DUP, then output...
- From: Jim Wilson <wilson at cygnus dot com>
- Date: Sun, 15 Aug 1999 12:48:28 -0700
I have checked in this patch.
This fixes a bug that occurs if you try to use a match_par_dup in a call
insn pattern. You end up with an INSN instead of a CALL_INSN. This is
easily fixed by outputting code to call emit instead of emit_insn.
Sun Aug 15 12:41:21 1999 Jim Wilson <wilson@cygnus.com>
* genemit.c (gen_expand): If next is MATCH_PAR_DUP, then output
emit call instead of emit_insn call.
Index: genemit.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/genemit.c,v
retrieving revision 1.31
diff -p -r1.31 genemit.c
*** genemit.c 1999/08/09 13:59:44 1.31
--- genemit.c 1999/08/15 19:44:22
*************** gen_expand (expand)
*** 495,504 ****
else if (GET_CODE (next) == CODE_LABEL)
printf (" emit_label (");
else if (GET_CODE (next) == MATCH_OPERAND
|| GET_CODE (next) == MATCH_OPERATOR
- || GET_CODE (next) == MATCH_PARALLEL
|| GET_CODE (next) == MATCH_OP_DUP
! || GET_CODE (next) == MATCH_DUP
|| GET_CODE (next) == PARALLEL)
printf (" emit (");
else
--- 495,505 ----
else if (GET_CODE (next) == CODE_LABEL)
printf (" emit_label (");
else if (GET_CODE (next) == MATCH_OPERAND
+ || GET_CODE (next) == MATCH_DUP
|| GET_CODE (next) == MATCH_OPERATOR
|| GET_CODE (next) == MATCH_OP_DUP
! || GET_CODE (next) == MATCH_PARALLEL
! || GET_CODE (next) == MATCH_PAR_DUP
|| GET_CODE (next) == PARALLEL)
printf (" emit (");
else