This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

regclass/reload/reload1 united fix



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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]