diff options
author | burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-09-20 21:49:12 +0000 |
---|---|---|
committer | burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-09-20 21:49:12 +0000 |
commit | c9c81ef3c667aaa14c498a5449ec6d134b4b66ff (patch) | |
tree | 0ac440db6513ee01deb5e5dc6142769d1e5b7b2d /gcc/cp/tree.c | |
parent | 12cdcb9d74f55c165366ca1b1eeec013a0ce72ef (diff) | |
parent | 891196d7325e4c55d92d5ac5cfe7161c4f36c0ce (diff) | |
download | gcc-fortran-dev.tar.gz |
Merge from trunk (r239915 to r240230)fortran-dev
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/fortran-dev@240290 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp/tree.c')
-rw-r--r-- | gcc/cp/tree.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 6d254ddbf14..bd2e8f66739 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -2920,6 +2920,30 @@ build_min_non_dep_op_overload (enum tree_code op, return call; } +/* Return a new tree vec copied from VEC, with ELT inserted at index IDX. */ + +vec<tree, va_gc> * +vec_copy_and_insert (vec<tree, va_gc> *old_vec, tree elt, unsigned idx) +{ + unsigned len = vec_safe_length (old_vec); + gcc_assert (idx <= len); + + vec<tree, va_gc> *new_vec = NULL; + vec_alloc (new_vec, len + 1); + + unsigned i; + for (i = 0; i < len; ++i) + { + if (i == idx) + new_vec->quick_push (elt); + new_vec->quick_push ((*old_vec)[i]); + } + if (i == idx) + new_vec->quick_push (elt); + + return new_vec; +} + tree get_type_decl (tree t) { |