From: jason Date: Thu, 10 Sep 2009 21:40:06 +0000 (+0000) Subject: * tree.c (chain_index): New fn. X-Git-Url: http://git.sourceforge.jp/view?a=commitdiff_plain;h=7616de9318924405c384cf6a2d451abbb42f521c;p=pf3gnuchains%2Fgcc-fork.git * tree.c (chain_index): New fn. * tree.h: Declare it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151618 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e8eb477aa04..c97ff8a79b9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2009-09-10 Jason Merrill + + * tree.c (chain_index): New fn. + * tree.h: Declare it. + 2009-09-10 Rainer Orth * config/sol2-c.c (cmn_err_length_specs): Initialize diff --git a/gcc/tree.c b/gcc/tree.c index 2f0e03c8e22..27ab46cdd93 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -1905,6 +1905,17 @@ purpose_member (const_tree elem, tree list) return NULL_TREE; } +/* Returns element number IDX (zero-origin) of chain CHAIN, or + NULL_TREE. */ + +tree +chain_index (int idx, tree chain) +{ + for (; chain && idx > 0; --idx) + chain = TREE_CHAIN (chain); + return chain; +} + /* Return nonzero if ELEM is part of the chain CHAIN. */ int diff --git a/gcc/tree.h b/gcc/tree.h index 98810900ab5..7b431af6199 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -3914,6 +3914,7 @@ extern bool range_in_array_bounds_p (tree); extern tree value_member (tree, tree); extern tree purpose_member (const_tree, tree); +extern tree chain_index (int, tree); extern int attribute_list_equal (const_tree, const_tree); extern int attribute_list_contained (const_tree, const_tree);