diff options
| author | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-05-09 16:43:27 +0000 |
|---|---|---|
| committer | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-05-09 16:43:27 +0000 |
| commit | 4fa680c37ccfb7be51a72e981485df6deefc783c (patch) | |
| tree | bb9b7882752a4c7fd7ccc7af624ce9bf10c4bc5f | |
| parent | 0a2d5b658ea3b01e45f7b5009c293885d19a6619 (diff) | |
| download | ppe42-gcc-4fa680c37ccfb7be51a72e981485df6deefc783c.tar.gz ppe42-gcc-4fa680c37ccfb7be51a72e981485df6deefc783c.zip | |
* tree.c (build_constructor_va): New.
* tree.h: Declare it.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@198744 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/tree.c | 21 | ||||
| -rw-r--r-- | gcc/tree.h | 1 |
3 files changed, 27 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 34c83ac8558..e16316537bb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-05-09 Jason Merrill <jason@redhat.com> + + * tree.c (build_constructor_va): New. + * tree.h: Declare it. + 2013-05-09 Martin Jambor <mjambor@suse.cz> PR lto/57084 diff --git a/gcc/tree.c b/gcc/tree.c index 444c87673d7..55fa99bd091 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -1467,6 +1467,27 @@ build_constructor_from_list (tree type, tree vals) return build_constructor (type, v); } +/* Return a new CONSTRUCTOR node whose type is TYPE. NELTS is the number + of elements, provided as index/value pairs. */ + +tree +build_constructor_va (tree type, int nelts, ...) +{ + vec<constructor_elt, va_gc> *v = NULL; + va_list p; + + va_start (p, nelts); + vec_alloc (v, nelts); + while (nelts--) + { + tree index = va_arg (p, tree); + tree value = va_arg (p, tree); + CONSTRUCTOR_APPEND_ELT (v, index, value); + } + va_end (p); + return build_constructor (type, v); +} + /* Return a new FIXED_CST node whose type is TYPE and value is F. */ tree diff --git a/gcc/tree.h b/gcc/tree.h index 2b6f13b8f12..cd1d7613979 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -4763,6 +4763,7 @@ extern tree build_vector_from_val (tree, tree); extern tree build_constructor (tree, vec<constructor_elt, va_gc> *); extern tree build_constructor_single (tree, tree, tree); extern tree build_constructor_from_list (tree, tree); +extern tree build_constructor_va (tree, int, ...); extern tree build_real_from_int_cst (tree, const_tree); extern tree build_complex (tree, tree, tree); extern tree build_one_cst (tree); |

