[lto] Use num_parm_types and nth_parm_type in type_requires_array_cookie.
Kazu Hirata
kazu@codesourcery.com
Mon Jun 26 06:52:00 GMT 2006
Hi,
Tested on x86_64-pc-linux-gnu. Committed to the LTO branch as
obvious.
Kazu Hirata
2006-06-25 Kazu Hirata <kazu@codesourcery.com>
* class.c (type_requires_array_cookie): Use num_parm_types and
nth_parm_type.
Index: cp/class.c
===================================================================
--- cp/class.c (revision 114997)
+++ cp/class.c (working copy)
@@ -3972,20 +3972,22 @@ type_requires_array_cookie (tree type)
for (fns = BASELINK_FUNCTIONS (fns); fns; fns = OVL_NEXT (fns))
{
tree fn;
- tree second_parm;
+ tree parm_types;
/* Select the current function. */
fn = OVL_CURRENT (fns);
/* See if this function is a one-argument delete function. If
it is, then it will be the usual deallocation function. */
- second_parm = TREE_CHAIN (TYPE_ARG_TYPES (TREE_TYPE (fn)));
- if (second_parm == void_list_node)
+ parm_types = TYPE_ARG_TYPES (TREE_TYPE (fn));
+ if (num_parm_types (parm_types) == 2
+ && nth_parm_type (parm_types, 1) == void_type_node)
return false;
/* Otherwise, if we have a two-argument function and the second
argument is `size_t', it will be the usual deallocation
function -- unless there is one-argument function, too. */
- if (TREE_CHAIN (second_parm) == void_list_node
- && same_type_p (TREE_VALUE (second_parm), sizetype))
+ if (num_parm_types (parm_types) == 3
+ && nth_parm_type (parm_types, 2) == void_type_node
+ && same_type_p (nth_parm_type (parm_types, 1), sizetype))
has_two_argument_delete_p = true;
}
More information about the Gcc-patches
mailing list