diff options
author | Nathan Froyd <froydnj@codesourcery.com> | 2011-05-06 01:39:32 +0000 |
---|---|---|
committer | Nathan Froyd <froydnj@gcc.gnu.org> | 2011-05-06 01:39:32 +0000 |
commit | d7d058c58a02241c63e6c3cc0099bc5d7f68a153 (patch) | |
tree | d0e3b28d94d444177d67f138a799899a7a7ffe5d /gcc/ada/gcc-interface/decl.c | |
parent | 6174da1b28176c4879ec55581325b4648fc72096 (diff) | |
download | gcc-d7d058c58a02241c63e6c3cc0099bc5d7f68a153.zip gcc-d7d058c58a02241c63e6c3cc0099bc5d7f68a153.tar.gz gcc-d7d058c58a02241c63e6c3cc0099bc5d7f68a153.tar.bz2 |
don't use TYPE_ARG_TYPES in the Ada frontend
don't use TYPE_ARG_TYPES in the Ada frontend
* gcc-interface/decl.c (intrin_arglists_compatible_p): Use iterators
instead of accessing TYPE_ARG_TYPES directly.
* gcc-interface/utils.c (handle_nonnull_attribute): Likewise.
From-SVN: r173466
Diffstat (limited to 'gcc/ada/gcc-interface/decl.c')
-rw-r--r-- | gcc/ada/gcc-interface/decl.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index b5406e9..e014d04 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -8330,23 +8330,27 @@ intrin_types_incompatible_p (tree t1, tree t2) static bool intrin_arglists_compatible_p (intrin_binding_t * inb) { - tree ada_args = TYPE_ARG_TYPES (inb->ada_fntype); - tree btin_args = TYPE_ARG_TYPES (inb->btin_fntype); + function_args_iterator ada_iter, btin_iter; + + function_args_iter_init (&ada_iter, inb->ada_fntype); + function_args_iter_init (&btin_iter, inb->btin_fntype); /* Sequence position of the last argument we checked. */ int argpos = 0; - while (ada_args != 0 || btin_args != 0) + while (1) { - tree ada_type, btin_type; + tree ada_type = function_args_iter_cond (&ada_iter); + tree btin_type = function_args_iter_cond (&btin_iter); + + /* If we've exhausted both lists simultaneously, we're done. */ + if (ada_type == NULL_TREE && btin_type == NULL_TREE) + break; /* If one list is shorter than the other, they fail to match. */ - if (ada_args == 0 || btin_args == 0) + if (ada_type == NULL_TREE || btin_type == NULL_TREE) return false; - ada_type = TREE_VALUE (ada_args); - btin_type = TREE_VALUE (btin_args); - /* If we're done with the Ada args and not with the internal builtin args, or the other way around, complain. */ if (ada_type == void_type_node @@ -8373,8 +8377,9 @@ intrin_arglists_compatible_p (intrin_binding_t * inb) return false; } - ada_args = TREE_CHAIN (ada_args); - btin_args = TREE_CHAIN (btin_args); + + function_args_iter_next (&ada_iter); + function_args_iter_next (&btin_iter); } return true; |