[lto] Use num_parm_types and nth_parm_type in handle_nonnull_attribute.

Kazu Hirata kazu@codesourcery.com
Mon Jul 17 03:56:00 GMT 2006


Hi,

Tested on x86_64-pc-linux-gnu.  Committed to the LTO branch as
obvious.

Kazu Hirata

2006-07-16  Kazu Hirata  <kazu@codesourcery.com>

	* c-common.c (handle_nonnull_attribute): Use num_parm_types
	and nth_parm_type.

Index: c-common.c
===================================================================
*** c-common.c	(revision 115414)
--- c-common.c	(working copy)
***************
*** 5340,5346 ****
    for (attr_arg_num = 1; args; args = TREE_CHAIN (args))
      {
        tree argument;
!       unsigned HOST_WIDE_INT arg_num = 0, ck_num;
  
        if (!get_nonnull_operand (TREE_VALUE (args), &arg_num))
  	{
--- 5340,5346 ----
    for (attr_arg_num = 1; args; args = TREE_CHAIN (args))
      {
        tree argument;
!       unsigned HOST_WIDE_INT arg_num = 0;
  
        if (!get_nonnull_operand (TREE_VALUE (args), &arg_num))
  	{
***************
*** 5353,5367 ****
        argument = TYPE_ARG_TYPES (type);
        if (argument)
  	{
! 	  for (ck_num = 1; ; ck_num++)
! 	    {
! 	      if (!argument || ck_num == arg_num)
! 		break;
! 	      argument = TREE_CHAIN (argument);
! 	    }
  
! 	  if (!argument
! 	      || TREE_CODE (TREE_VALUE (argument)) == VOID_TYPE)
  	    {
  	      error ("nonnull argument with out-of-range operand number (argument %lu, operand %lu)",
  		     (unsigned long) attr_arg_num, (unsigned long) arg_num);
--- 5353,5367 ----
        argument = TYPE_ARG_TYPES (type);
        if (argument)
  	{
! 	  tree arg_type = NULL_TREE;
! 
! 	  /* Obtain the type for ARG_NUM if it exists.  */
! 	  if (arg_num - 1
! 	      < (unsigned HOST_WIDE_INT) num_parm_types (argument))
! 	    arg_type = nth_parm_type (argument, arg_num - 1);
  
! 	  if (!arg_type
! 	      || TREE_CODE (arg_type) == VOID_TYPE)
  	    {
  	      error ("nonnull argument with out-of-range operand number (argument %lu, operand %lu)",
  		     (unsigned long) attr_arg_num, (unsigned long) arg_num);
***************
*** 5369,5375 ****
  	      return NULL_TREE;
  	    }
  
! 	  if (TREE_CODE (TREE_VALUE (argument)) != POINTER_TYPE)
  	    {
  	      error ("nonnull argument references non-pointer operand (argument %lu, operand %lu)",
  		   (unsigned long) attr_arg_num, (unsigned long) arg_num);
--- 5369,5375 ----
  	      return NULL_TREE;
  	    }
  
! 	  if (TREE_CODE (arg_type) != POINTER_TYPE)
  	    {
  	      error ("nonnull argument references non-pointer operand (argument %lu, operand %lu)",
  		   (unsigned long) attr_arg_num, (unsigned long) arg_num);



More information about the Gcc-patches mailing list