summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>2013-05-09 16:43:27 +0000
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>2013-05-09 16:43:27 +0000
commit4fa680c37ccfb7be51a72e981485df6deefc783c (patch)
treebb9b7882752a4c7fd7ccc7af624ce9bf10c4bc5f
parent0a2d5b658ea3b01e45f7b5009c293885d19a6619 (diff)
downloadppe42-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/ChangeLog5
-rw-r--r--gcc/tree.c21
-rw-r--r--gcc/tree.h1
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);
OpenPOWER on IntegriCloud