+2016-02-23 Richard Biener <rguenther@suse.de>
+
+ * mem-stats.h (struct mem_usage): Use PRIu64 for printing size_t.
+ * bitmap.h (struct bitmap_usage): Likewise.
+ (bitmap_move): Declare.
+ * bitmap.c (register_overhead): Take size_t argument.
+ (bitmap_move): New function.
+ * df-problems.c (df_rd_transfer_function): Use bitmap_move
+ to properly account overhead.
+ * tree.c (free_node): Use tree_size.
+
2016-02-23 Jakub Jelinek <jakub@redhat.com>
PR c++/69902
/* Account the overhead. */
static void
-register_overhead (bitmap b, int amount)
+register_overhead (bitmap b, size_t amount)
{
if (bitmap_mem_desc.contains_descriptor_for_instance (b))
bitmap_mem_desc.register_instance_overhead (amount, b);
to_ptr = to_elt;
}
}
+
+/* Move a bitmap to another bitmap. */
+
+void
+bitmap_move (bitmap to, bitmap from)
+{
+ gcc_assert (to->obstack == from->obstack);
+
+ bitmap_clear (to);
+
+ *to = *from;
+
+ if (GATHER_STATISTICS)
+ {
+ size_t sz = 0;
+ for (bitmap_element *e = to->first; e; e = e->next)
+ sz += sizeof (bitmap_element);
+ register_overhead (to, sz);
+ register_overhead (from, -sz);
+ }
+}
\f
/* Find a bitmap element that would hold a bitmap's bit.
Update the `current' field even if we can't find an element that
{
char *location_string = loc->to_string ();
- fprintf (stderr, "%-48s %10li:%5.1f%%%10li%10li:%5.1f%%%12li%12li%10s\n",
- location_string,
- (long)m_allocated, get_percent (m_allocated, total.m_allocated),
- (long)m_peak, (long)m_times,
+ fprintf (stderr, "%-48s %10" PRIu64 ":%5.1f%%"
+ "%10" PRIu64 "%10" PRIu64 ":%5.1f%%"
+ "%12" PRIu64 "%12" PRIu64 "%10s\n",
+ location_string, (uint64_t)m_allocated,
+ get_percent (m_allocated, total.m_allocated),
+ (uint64_t)m_peak, (uint64_t)m_times,
get_percent (m_times, total.m_times),
- (long)m_nsearches, (long)m_search_iter,
+ m_nsearches, m_search_iter,
loc->m_ggc ? "ggc" : "heap");
free (location_string);
/* Copy a bitmap to another bitmap. */
extern void bitmap_copy (bitmap, const_bitmap);
+/* Move a bitmap to another bitmap. */
+extern void bitmap_move (bitmap, bitmap);
+
/* True if two bitmaps are identical. */
extern bool bitmap_equal_p (const_bitmap, const_bitmap);
bitmap_ior_into (&tmp, gen);
changed = !bitmap_equal_p (&tmp, out);
if (changed)
- {
- bitmap_clear (out);
- bb_info->out = tmp;
- }
+ bitmap_move (out, &tmp);
else
bitmap_clear (&tmp);
}
{
char *location_string = loc->to_string ();
- fprintf (stderr, "%-48s %10li:%5.1f%%%10li%10li:%5.1f%%%10s\n",
- location_string,
- (long)m_allocated, get_percent (m_allocated, total.m_allocated),
- (long)m_peak, (long)m_times,
+ fprintf (stderr, "%-48s %10" PRIu64 ":%5.1f%%"
+ "%10" PRIu64 "%10" PRIu64 ":%5.1f%%%10s\n",
+ location_string, (uint64_t)m_allocated,
+ get_percent (m_allocated, total.m_allocated),
+ (uint64_t)m_peak, (uint64_t)m_times,
get_percent (m_times, total.m_times), loc->m_ggc ? "ggc" : "heap");
free (location_string);
dump_footer () const
{
print_dash_line ();
- fprintf (stderr, "%s%54li%27li\n", "Total", (long)m_allocated,
- (long)m_times);
+ fprintf (stderr, "%s%54" PRIu64 "%27" PRIu64 "\n", "Total",
+ (uint64_t)m_allocated, (uint64_t)m_times);
print_dash_line ();
}
{
tree_code_counts[(int) TREE_CODE (node)]--;
tree_node_counts[(int) t_kind]--;
- tree_node_sizes[(int) t_kind] -= tree_code_size (TREE_CODE (node));
+ tree_node_sizes[(int) t_kind] -= tree_size (node);
}
if (CODE_CONTAINS_STRUCT (code, TS_CONSTRUCTOR))
vec_free (CONSTRUCTOR_ELTS (node));