regclass/reload/reload1 united fix

Jan Hubicka jh@suse.cz
Fri Jul 28 15:02:00 GMT 2000


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++)


More information about the Gcc-patches mailing list