Jason Merrill <ja...@redhat.com> writes:

> If you have a patch like this that fixes a major regression, go ahead
> and check it in without waiting for approval; we can adjust it as
> necessary after build is working again.

OK.

>>   size_t num_expanded_macros;
>
>> -  fprintf (stderr, "Number of expanded macros:                     %5lu\n",
>> -           s.num_expanded_macros);
>> +  fprintf (stderr, "Number of expanded macros:                     %5ld\n",
>> +           (long)s.num_expanded_macros);
>
> If we're going to use %l in printf, we should use long rather than
> size_t in linemap_stats; that way we don't need the cast.

OK, I have checked the below in.
    
    libcpp/
    
        * include/line-map.h (struct linemap_stats): Change the type of
        the members from size_t to long.
        * macro.c (macro_arg_token_iter_init): Unconditionally initialize
        iter->location_ptr.
    
    gcc/c-family/
    
        * c-lex.c (fe_file_change): Use LINEMAP_SYSP when
        !NO_IMPLICIT_EXTERN_C.
    
    gcc/
        * input.c (dump_line_table_statistics): Use long, not size_t.
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180124 
138bc75d-0d04-0410-961f-82ee72b054a4

diff --git a/gcc/c-family/c-lex.c b/gcc/c-family/c-lex.c
index be83b61..b151564 100644
--- a/gcc/c-family/c-lex.c
+++ b/gcc/c-family/c-lex.c
@@ -211,7 +211,7 @@ fe_file_change (const struct line_map *new_map)
 #ifndef NO_IMPLICIT_EXTERN_C
          if (c_header_level)
            ++c_header_level;
-         else if (new_map->sysp == 2)
+         else if (LINEMAP_SYSP (new_map) == 2)
            {
              c_header_level = 1;
              ++pending_lang_change;
@@ -224,7 +224,7 @@ fe_file_change (const struct line_map *new_map)
 #ifndef NO_IMPLICIT_EXTERN_C
       if (c_header_level && --c_header_level == 0)
        {
-         if (new_map->sysp == 2)
+         if (LINEMAP_SYSP (new_map) == 2)
            warning (0, "badly nested C headers from preprocessor");
          --pending_lang_change;
        }
diff --git a/gcc/input.c b/gcc/input.c
index 41842b7..a780f5c 100644
--- a/gcc/input.c
+++ b/gcc/input.c
@@ -80,7 +80,7 @@ void
 dump_line_table_statistics (void)
 {
   struct linemap_stats s;
-  size_t total_used_map_size,
+  long total_used_map_size,
     macro_maps_size,
     total_allocated_map_size;
 
@@ -99,45 +99,45 @@ dump_line_table_statistics (void)
     + s.macro_maps_used_size
     + s.macro_maps_locations_size;
 
-  fprintf (stderr, "Number of expanded macros:                     %5lu\n",
+  fprintf (stderr, "Number of expanded macros:                     %5ld\n",
            s.num_expanded_macros);
   if (s.num_expanded_macros != 0)
-    fprintf (stderr, "Average number of tokens per macro expansion:  %5lu\n",
+    fprintf (stderr, "Average number of tokens per macro expansion:  %5ld\n",
              s.num_macro_tokens / s.num_expanded_macros);
   fprintf (stderr,
            "\nLine Table allocations during the "
            "compilation process\n");
-  fprintf (stderr, "Number of ordinary maps used:        %5lu%c\n",
+  fprintf (stderr, "Number of ordinary maps used:        %5ld%c\n",
            SCALE (s.num_ordinary_maps_used),
            STAT_LABEL (s.num_ordinary_maps_used));
-  fprintf (stderr, "Ordinary map used size:              %5lu%c\n",
+  fprintf (stderr, "Ordinary map used size:              %5ld%c\n",
            SCALE (s.ordinary_maps_used_size),
            STAT_LABEL (s.ordinary_maps_used_size));
-  fprintf (stderr, "Number of ordinary maps allocated:   %5lu%c\n",
+  fprintf (stderr, "Number of ordinary maps allocated:   %5ld%c\n",
            SCALE (s.num_ordinary_maps_allocated),
            STAT_LABEL (s.num_ordinary_maps_allocated));
-  fprintf (stderr, "Ordinary maps allocated size:        %5lu%c\n",
+  fprintf (stderr, "Ordinary maps allocated size:        %5ld%c\n",
            SCALE (s.ordinary_maps_allocated_size),
            STAT_LABEL (s.ordinary_maps_allocated_size));
-  fprintf (stderr, "Number of macro maps used:           %5lu%c\n",
+  fprintf (stderr, "Number of macro maps used:           %5ld%c\n",
            SCALE (s.num_macro_maps_used),
            STAT_LABEL (s.num_macro_maps_used));
-  fprintf (stderr, "Macro maps used size:                %5lu%c\n",
+  fprintf (stderr, "Macro maps used size:                %5ld%c\n",
            SCALE (s.macro_maps_used_size),
            STAT_LABEL (s.macro_maps_used_size));
-  fprintf (stderr, "Macro maps locations size:           %5lu%c\n",
+  fprintf (stderr, "Macro maps locations size:           %5ld%c\n",
            SCALE (s.macro_maps_locations_size),
            STAT_LABEL (s.macro_maps_locations_size));
-  fprintf (stderr, "Macro maps size:                     %5lu%c\n",
+  fprintf (stderr, "Macro maps size:                     %5ld%c\n",
            SCALE (macro_maps_size),
            STAT_LABEL (macro_maps_size));
-  fprintf (stderr, "Duplicated maps locations size:      %5lu%c\n",
+  fprintf (stderr, "Duplicated maps locations size:      %5ld%c\n",
            SCALE (s.duplicated_macro_maps_locations_size),
            STAT_LABEL (s.duplicated_macro_maps_locations_size));
-  fprintf (stderr, "Total allocated maps size:           %5lu%c\n",
+  fprintf (stderr, "Total allocated maps size:           %5ld%c\n",
            SCALE (total_allocated_map_size),
            STAT_LABEL (total_allocated_map_size));
-  fprintf (stderr, "Total used maps size:                %5lu%c\n",
+  fprintf (stderr, "Total used maps size:                %5ld%c\n",
            SCALE (total_used_map_size),
            STAT_LABEL (total_used_map_size));
   fprintf (stderr, "\n");
diff --git a/libcpp/include/line-map.h b/libcpp/include/line-map.h
index 1e2a148..ef98f59 100644
--- a/libcpp/include/line-map.h
+++ b/libcpp/include/line-map.h
@@ -687,17 +687,17 @@ expanded_location linemap_expand_location_full (struct 
line_maps *,
    linemap_get_statistics.  */
 struct linemap_stats
 {
-  size_t num_ordinary_maps_allocated;
-  size_t num_ordinary_maps_used;
-  size_t ordinary_maps_allocated_size;
-  size_t ordinary_maps_used_size;
-  size_t num_expanded_macros;
-  size_t num_macro_tokens;
-  size_t num_macro_maps_used;
-  size_t macro_maps_allocated_size;
-  size_t macro_maps_used_size;
-  size_t macro_maps_locations_size;
-  size_t duplicated_macro_maps_locations_size;
+  long num_ordinary_maps_allocated;
+  long num_ordinary_maps_used;
+  long ordinary_maps_allocated_size;
+  long ordinary_maps_used_size;
+  long num_expanded_macros;
+  long num_macro_tokens;
+  long num_macro_maps_used;
+  long macro_maps_allocated_size;
+  long macro_maps_used_size;
+  long macro_maps_locations_size;
+  long duplicated_macro_maps_locations_size;
 };
 
 /* Compute and return statistics about the memory consumption of some
diff --git a/libcpp/line-map.c b/libcpp/line-map.c
index 43e2856..fb3be3a 100644
--- a/libcpp/line-map.c
+++ b/libcpp/line-map.c
@@ -1180,7 +1180,7 @@ void
 linemap_get_statistics (struct line_maps *set,
                        struct linemap_stats *s)
 {
-  size_t ordinary_maps_allocated_size, ordinary_maps_used_size,
+  long ordinary_maps_allocated_size, ordinary_maps_used_size,
     macro_maps_allocated_size, macro_maps_used_size,
     macro_maps_locations_size = 0, duplicated_macro_maps_locations_size = 0;
 
diff --git a/libcpp/macro.c b/libcpp/macro.c
index 2d0eeaa..f313959 100644
--- a/libcpp/macro.c
+++ b/libcpp/macro.c
@@ -1278,6 +1278,10 @@ macro_arg_token_iter_init (macro_arg_token_iter *iter,
   iter->track_macro_exp_p = track_macro_exp_p;
   iter->kind = kind;
   iter->token_ptr = token_ptr;
+  /* Unconditionally initialize this so that the compiler doesn't warn
+     about iter->location_ptr being possibly uninitialized later after
+     this code has been inlined somewhere.  */
+  iter->location_ptr = NULL;
   if (track_macro_exp_p)
     iter->location_ptr = get_arg_token_location (arg, kind);
 #ifdef ENABLE_CHECKING

-- 
                Dodji

Reply via email to