diff options
author | Michael Matz <matz@gcc.gnu.org> | 2007-10-24 12:54:24 +0000 |
---|---|---|
committer | Michael Matz <matz@gcc.gnu.org> | 2007-10-24 12:54:24 +0000 |
commit | e56f9152862a75cde8a27bed0e743b244621070d (patch) | |
tree | 62936a60e52be73085ced39c491fef157eadc54f /gcc/var-tracking.c | |
parent | 32154c8905a704e01c328542f2d4cef627c21b81 (diff) | |
download | gcc-e56f9152862a75cde8a27bed0e743b244621070d.zip gcc-e56f9152862a75cde8a27bed0e743b244621070d.tar.gz gcc-e56f9152862a75cde8a27bed0e743b244621070d.tar.bz2 |
re PR debug/33868 (Gross memory usage of var-tracking)
PR debug/33868
* var-tracking.c (variable_union): Don't break after one loop
* iteration
but only when a difference is found.
(dump_variable): Also print DECL_UID.
From-SVN: r129602
Diffstat (limited to 'gcc/var-tracking.c')
-rw-r--r-- | gcc/var-tracking.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c index ea6981a..9599b5a 100644 --- a/gcc/var-tracking.c +++ b/gcc/var-tracking.c @@ -1221,9 +1221,11 @@ variable_union (void **slot, void *data) && REG_P (node->loc) && REGNO (node2->loc) == REGNO (node->loc)) || rtx_equal_p (node2->loc, node->loc))) - if (node2->init < node->init) - node2->init = node->init; - break; + { + if (node2->init < node->init) + node2->init = node->init; + break; + } } if (node || node2) dst = unshare_variable (set, dst, VAR_INIT_STATUS_UNKNOWN); @@ -2209,8 +2211,13 @@ dump_variable (void **slot, void *data ATTRIBUTE_UNUSED) int i; location_chain node; - fprintf (dump_file, " name: %s\n", + fprintf (dump_file, " name: %s", IDENTIFIER_POINTER (DECL_NAME (var->decl))); + if (dump_flags & TDF_UID) + fprintf (dump_file, " D.%u\n", DECL_UID (var->decl)); + else + fprintf (dump_file, "\n"); + for (i = 0; i < var->n_var_parts; i++) { fprintf (dump_file, " offset %ld\n", |