Change use to type-based pool allocator in c-format.c.
authorMartin Liska <mliska@suse.cz>
Mon, 1 Jun 2015 12:37:49 +0000 (14:37 +0200)
committerMartin Liska <marxin@gcc.gnu.org>
Mon, 1 Jun 2015 12:37:49 +0000 (12:37 +0000)
* c-format.c (check_format_arg):Use new type-based pool allocator.
(check_format_info_main) Likewise.

From-SVN: r223949

gcc/c-family/ChangeLog
gcc/c-family/c-format.c

index abcc2a746744fbc492882893a353481c4811151c..1af4e1521c56e26e25d8be3f4ce6d1bc851a15c2 100644 (file)
@@ -1,3 +1,8 @@
+2015-06-01  Martin Liska  <mliska@suse.cz>
+
+       * c-format.c (check_format_arg):Use new type-based pool allocator.
+       (check_format_info_main) Likewise.
+
 2015-05-31  Eric Botcazou  <ebotcazou@adacore.com>
 
        * c-ada-spec.c (is_tagged_type): Test for TYPE_METHODS on main variant.
index 145bbfd393f09f18d28acfea3bbc6e17825162e0..a6c2500e16e5de30df118597b2a651e87e3b2dd3 100644 (file)
@@ -191,7 +191,7 @@ handle_format_arg_attribute (tree *node, tree ARG_UNUSED (name),
   if (prototype_p (type))
     {
       /* The format arg can be any string reference valid for the language and
-         target.  We cannot be more specific in this case.  */
+       target.  We cannot be more specific in this case.  */
       if (!check_format_string (type, format_num, flags, no_add_attrs, -1))
        return NULL_TREE;
     }
@@ -1031,7 +1031,8 @@ static void check_format_arg (void *, tree, unsigned HOST_WIDE_INT);
 static void check_format_info_main (format_check_results *,
                                    function_format_info *,
                                    const char *, int, tree,
-                                    unsigned HOST_WIDE_INT, alloc_pool);
+                                   unsigned HOST_WIDE_INT,
+                                   pool_allocator<format_wanted_type> &);
 
 static void init_dollar_format_checking (int, tree);
 static int maybe_read_dollar_number (const char **, int,
@@ -1518,7 +1519,6 @@ check_format_arg (void *ctx, tree format_tree,
   const char *format_chars;
   tree array_size = 0;
   tree array_init;
-  alloc_pool fwt_pool;
 
   if (TREE_CODE (format_tree) == VAR_DECL)
     {
@@ -1587,7 +1587,7 @@ check_format_arg (void *ctx, tree format_tree,
     {
       bool objc_str = (info->format_type == gcc_objc_string_format_type);
       /* We cannot examine this string here - but we can check that it is
-         a valid type.  */
+        a valid type.  */
       if (TREE_CODE (format_tree) != CONST_DECL
          || !((objc_str && objc_string_ref_type_p (TREE_TYPE (format_tree)))
                || (*targetcm.string_object_ref_type_p) 
@@ -1605,9 +1605,9 @@ check_format_arg (void *ctx, tree format_tree,
          ++arg_num;
        }
       /* So, we have a valid literal string object and one or more params.
-         We need to use an external helper to parse the string into format
-         info.  For Objective-C variants we provide the resource within the
-         objc tree, for target variants, via a hook.  */
+        We need to use an external helper to parse the string into format
+        info.  For Objective-C variants we provide the resource within the
+        objc tree, for target variants, via a hook.  */
       if (objc_str)
        objc_check_format_arg (format_tree, params);
       else if (targetcm.check_string_object_format_arg)
@@ -1694,11 +1694,9 @@ check_format_arg (void *ctx, tree format_tree,
      will decrement it if it finds there are extra arguments, but this way
      need not adjust it for every return.  */
   res->number_other++;
-  fwt_pool = create_alloc_pool ("format_wanted_type pool",
-                                sizeof (format_wanted_type), 10);
+  pool_allocator <format_wanted_type> fwt_pool ("format_wanted_type pool", 10);
   check_format_info_main (res, info, format_chars, format_length,
-                          params, arg_num, fwt_pool);
-  free_alloc_pool (fwt_pool);
+                         params, arg_num, fwt_pool);
 }
 
 
@@ -1713,7 +1711,8 @@ static void
 check_format_info_main (format_check_results *res,
                        function_format_info *info, const char *format_chars,
                        int format_length, tree params,
-                        unsigned HOST_WIDE_INT arg_num, alloc_pool fwt_pool)
+                       unsigned HOST_WIDE_INT arg_num,
+                       pool_allocator<format_wanted_type> &fwt_pool)
 {
   const char *orig_format_chars = format_chars;
   tree first_fillin_param = params;
@@ -2424,8 +2423,7 @@ check_format_info_main (format_check_results *res,
              fci = fci->chain;
              if (fci)
                {
-                  wanted_type_ptr = (format_wanted_type *)
-                      pool_alloc (fwt_pool);
+                 wanted_type_ptr = fwt_pool.allocate ();
                  arg_num++;
                  wanted_type = *fci->types[length_chars_val].type;
                  wanted_type_name = fci->types[length_chars_val].name;