[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