diff options
author | Nathan Sidwell <nathan@acm.org> | 2020-05-13 13:11:36 -0700 |
---|---|---|
committer | Nathan Sidwell <nathan@acm.org> | 2020-05-13 13:11:36 -0700 |
commit | 833c7b4b5ef071bc3c5c79108baff55f2bcaaac3 (patch) | |
tree | 0c49b9f6880d5b7422120645c1d2dd8e307bfab0 /gcc | |
parent | 7e6a72cb2eba764e88fa8df1ae8b75827281c92b (diff) | |
download | gcc-833c7b4b5ef071bc3c5c79108baff55f2bcaaac3.zip gcc-833c7b4b5ef071bc3c5c79108baff55f2bcaaac3.tar.gz gcc-833c7b4b5ef071bc3c5c79108baff55f2bcaaac3.tar.bz2 |
c++: Simplify canonical_type_parameter
Use a single vec_safe_grow_cleared, rather than that or a vec_alloc.
Use a for loop that returns early.
* pt.c (canonical_type_parameter): Simplify.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/cp/pt.c | 24 |
2 files changed, 10 insertions, 16 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index b75025f..10f212f 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,7 @@ 2020-05-13 Nathan Sidwell <nathan@acm.org> + * pt.c (canonical_type_parameter): Simplify. + Formatting fixups & some simplifications. * pt.c (spec_hash_table): New typedef. (decl_specializations, type_specializations): Use it. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index a732ced..ec2ca3e 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -4417,29 +4417,21 @@ build_template_parm_index (int index, static tree canonical_type_parameter (tree type) { - tree list; int idx = TEMPLATE_TYPE_IDX (type); gcc_assert (TREE_CODE (type) != TEMPLATE_TEMPLATE_PARM); - if (!canonical_template_parms) - vec_alloc (canonical_template_parms, idx + 1); - - if (canonical_template_parms->length () <= (unsigned) idx) + if (vec_safe_length (canonical_template_parms) <= (unsigned) idx) vec_safe_grow_cleared (canonical_template_parms, idx + 1); - list = (*canonical_template_parms)[idx]; - while (list && !comptypes (type, TREE_VALUE (list), COMPARE_STRUCTURAL)) - list = TREE_CHAIN (list); + for (tree list = (*canonical_template_parms)[idx]; + list; list = TREE_CHAIN (list)) + if (comptypes (type, TREE_VALUE (list), COMPARE_STRUCTURAL)) + return TREE_VALUE (list); - if (list) - return TREE_VALUE (list); - else - { - (*canonical_template_parms)[idx] - = tree_cons (NULL_TREE, type, (*canonical_template_parms)[idx]); - return type; - } + (*canonical_template_parms)[idx] + = tree_cons (NULL_TREE, type, (*canonical_template_parms)[idx]); + return type; } /* Return a TEMPLATE_PARM_INDEX, similar to INDEX, but whose |