This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
regclass/reload/reload1 united fix
- To: gcc-patches at gcc dot gnu dot org, rth at cygnus dot com
- Subject: regclass/reload/reload1 united fix
- From: Jan Hubicka <jh at suse dot cz>
- Date: Sat, 29 Jul 2000 00:02:28 +0200
Hi
This patches modifies extract_insn to set operand_mode according to operand if
match_operand is VOIDmode. This fixes problems with VOIDmode match_operand in
regclass.c, reload.c and reload1.c, that are the only users of this bit. In
case this fix seems unresonable (i.e we really want operand_mode to be
VOIDmode), we should go with separate fixes to these passes I am sending in
next patches. These also contains testcase and explanation of the problems.
Bootstraps on i386, passes testsuite, fixes couple of failures and make gcc to
compile spec2000 int part fluently. (with the buildins.c patch)
Honza
Fri Jul 28 20:44:56 CEST 2000 Jan Hubicka <jh@suse.cz>
* recog.c (extract_insn): Set operand_mode according to
operand if match_operand is VOIDmode.
*** recog.c.mode Fri Jul 28 18:22:48 2000
--- recog.c Fri Jul 28 18:24:42 2000
*************** extract_insn (insn)
*** 2062,2067 ****
--- 2062,2070 ----
{
recog_data.constraints[i] = insn_data[icode].operand[i].constraint;
recog_data.operand_mode[i] = insn_data[icode].operand[i].mode;
+ /* VOIDmode match_operands gets mode from their real operand. */
+ if (recog_data.operand_mode[i] == VOIDmode)
+ recog_data.operand_mode[i] = GET_MODE (recog_data.operand[i]);
}
}
for (i = 0; i < noperands; i++)