This is only a cleanup; build_constructor_va is much more convenient
than build_constructor when we know the number of elements in
a constructor.

Tested x86_64-pc-linux-gnu, applying to ubsan branch.

diff --git a/gcc/ChangeLog.ubsan b/gcc/ChangeLog.ubsan
index 47f81b4..311a15c 100644
--- a/gcc/ChangeLog.ubsan
+++ b/gcc/ChangeLog.ubsan
@@ -1,3 +1,9 @@
+2013-07-30  Marek Polacek  <pola...@redhat.com>
+
+       * ubsan.c (ubsan_source_location): Use build_constructor_va
+       instead of build_constructor.
+       (ubsan_type_descriptor): Likewise.
+
 2013-07-29  Marek Polacek  <pola...@redhat.com>
 
        * common.opt (static-libubsan): New option.
diff --git a/gcc/ubsan.c b/gcc/ubsan.c
index 0bd1b96..1996225 100644
--- a/gcc/ubsan.c
+++ b/gcc/ubsan.c
@@ -254,13 +254,10 @@ ubsan_source_location (location_t loc)
 {
   expanded_location xloc;
   tree type = ubsan_source_location_type ();
-  vec<constructor_elt, va_gc> *v;
 
   xloc = expand_location (loc);
 
   /* Fill in the values from LOC.  */
-  vec_alloc (v, 3);
-  tree ctor = build_constructor (type, v);
   size_t len = strlen (xloc.file);
   tree str = build_string (len + 1, xloc.file);
   TREE_TYPE (str) = build_array_type (char_type_node,
@@ -268,11 +265,11 @@ ubsan_source_location (location_t loc)
   TREE_READONLY (str) = 1;
   TREE_STATIC (str) = 1;
   str = build_fold_addr_expr_loc (loc, str);
-  CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, str);
-  CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, build_int_cst (unsigned_type_node,
-                                                      xloc.line));
-  CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, build_int_cst (unsigned_type_node,
-                                                      xloc.column));
+  tree ctor = build_constructor_va (type, 3, NULL_TREE, str, NULL_TREE,
+                                   build_int_cst (unsigned_type_node,
+                                                  xloc.line), NULL_TREE,
+                                   build_int_cst (unsigned_type_node,
+                                                  xloc.column));
   TREE_CONSTANT (ctor) = 1;
   TREE_STATIC (ctor) = 1;
 
@@ -312,7 +309,6 @@ ubsan_type_descriptor (tree type)
     return (*slot)->decl;
 
   tree dtype = ubsan_type_descriptor_type ();
-  vec<constructor_elt, va_gc> *v;
   const char *tname;
   unsigned short tkind, tinfo;
 
@@ -346,20 +342,17 @@ ubsan_type_descriptor (tree type)
   DECL_IGNORED_P (decl) = 1;
   DECL_EXTERNAL (decl) = 0;
 
-  vec_alloc (v, 3);
-  tree ctor = build_constructor (dtype, v);
   size_t len = strlen (tname);
   tree str = build_string (len + 1, tname);
   TREE_TYPE (str) = build_array_type (char_type_node,
                                      build_index_type (size_int (len)));
   TREE_READONLY (str) = 1;
   TREE_STATIC (str) = 1;
-  CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, build_int_cst 
(short_unsigned_type_node,
-                                                      tkind));
-  CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, build_int_cst 
(short_unsigned_type_node,
-                                                      tinfo));
-  CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, str);
-
+  tree ctor = build_constructor_va (dtype, 3, NULL_TREE,
+                                   build_int_cst (short_unsigned_type_node,
+                                                  tkind), NULL_TREE,
+                                   build_int_cst (short_unsigned_type_node,
+                                                  tinfo), NULL_TREE, str);
   TREE_CONSTANT (ctor) = 1;
   TREE_STATIC (ctor) = 1;
   DECL_INITIAL (decl) = ctor;

        Marek

Reply via email to