[PATCH] PR57377: Fix mnemonic attribute

Andreas Krebbel krebbel@linux.vnet.ibm.com
Thu May 23 13:53:00 GMT 2013


Hi,

when looking for user defined "mnemonic" attribute definitions the
code so far only handles (set_attr ...).

Fixed with the attached patch.

Tested on s390x.

Ok?

Bye,

-Andreas-

2013-05-23  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

	PR target/57377
	* gensupport.c (gen_mnemonic_attr): Handle (set (attr x) y) and
	(set_attr_alternative x ...) when searching for user defined
	mnemonic attribute.

---
 gcc/gensupport.c |   27 !!!!!!!!!!!!!!!!!!!!!!!!!!!
 1 file changed, 27 modifications(!)

Index: gcc/gensupport.c
===================================================================
*** gcc/gensupport.c.orig
--- gcc/gensupport.c
*************** gen_mnemonic_attr (void)
*** 2430,2443 ****
        bool found = false;
  
        /* Check if the insn definition already has
! 	 (set_attr "mnemonic" ...).  */
        if (XVEC (insn, 4))
   	for (i = 0; i < XVECLEN (insn, 4); i++)
! 	  if (strcmp (XSTR (XVECEXP (insn, 4, i), 0), MNEMONIC_ATTR_NAME) == 0)
! 	    {
! 	      found = true;
! 	      break;
! 	    }
  
        if (!found)
  	gen_mnemonic_setattr (mnemonic_htab, insn);
--- 2430,2458 ----
        bool found = false;
  
        /* Check if the insn definition already has
! 	 (set_attr "mnemonic" ...) or (set (attr "mnemonic") ...).  */
        if (XVEC (insn, 4))
   	for (i = 0; i < XVECLEN (insn, 4); i++)
! 	  {
! 	    rtx set_attr = XVECEXP (insn, 4, i);
! 
! 	    switch (GET_CODE (set_attr))
! 	      {
! 	      case SET_ATTR:
! 	      case SET_ATTR_ALTERNATIVE:
! 		if (strcmp (XSTR (set_attr, 0), MNEMONIC_ATTR_NAME) == 0)
! 		  found = true;
! 		break;
! 	      case SET:
! 		if (GET_CODE (SET_DEST (set_attr)) == ATTR
! 		    && strcmp (XSTR (SET_DEST (set_attr), 0),
! 			       MNEMONIC_ATTR_NAME) == 0)
! 		  found = true;
! 		break;
! 	      default:
! 		break;
! 	      }
! 	  }
  
        if (!found)
  	gen_mnemonic_setattr (mnemonic_htab, insn);



More information about the Gcc-patches mailing list