aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2017-04-12 06:54:51 +0200
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2017-05-15 18:33:58 +0200
commitcdf306bbb0efccfe9c75d9042b40452478d2e06e (patch)
tree12b0281c8080d921e90f5915dcd7c321a5d3dd70
parent85e298bdb392e959566856f88c89b7ffdb1ca034 (diff)
downloadsparse-dev-cdf306bbb0efccfe9c75d9042b40452478d2e06e.tar.gz
use -fmem-report to report allocation stats
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r--lib.h1
-rw-r--r--sparse-llvm.c1
-rw-r--r--sparse.15
-rw-r--r--sparse.c2
-rw-r--r--stats.c6
-rw-r--r--test-linearize.c2
-rw-r--r--test-unssa.c1
7 files changed, 18 insertions, 0 deletions
diff --git a/lib.h b/lib.h
index 0fa684fa..5362cd21 100644
--- a/lib.h
+++ b/lib.h
@@ -147,6 +147,7 @@ extern struct symbol_list *sparse_initialize(int argc, char **argv, struct strin
extern struct symbol_list *__sparse(char *filename);
extern struct symbol_list *sparse_keep_tokens(char *filename);
extern struct symbol_list *sparse(char *filename);
+extern void report_stats(void);
static inline int symbol_list_size(struct symbol_list *list)
{
diff --git a/sparse-llvm.c b/sparse-llvm.c
index 9f362b3e..29fb65f1 100644
--- a/sparse-llvm.c
+++ b/sparse-llvm.c
@@ -1166,5 +1166,6 @@ int main(int argc, char **argv)
LLVMDisposeModule(module);
+ report_stats();
return 0;
}
diff --git a/sparse.1 b/sparse.1
index 85d6e646..d55ba7bd 100644
--- a/sparse.1
+++ b/sparse.1
@@ -344,6 +344,11 @@ Look for system headers in the multiarch subdirectory \fIdir\fR.
The \fIdir\fR name would normally take the form of the target's
normalized GNU triplet. (e.g. i386-linux-gnu).
.
+.SH DEBUG OPTIONS
+.TP
+.B \-fmem-report
+Report some statistics about memory allocation used by the tool.
+.
.SH OTHER OPTIONS
.TP
.B \-ftabstop=WIDTH
diff --git a/sparse.c b/sparse.c
index 6b3324cf..02ab9774 100644
--- a/sparse.c
+++ b/sparse.c
@@ -302,5 +302,7 @@ int main(int argc, char **argv)
FOR_EACH_PTR_NOTAG(filelist, file) {
check_symbols(sparse(file));
} END_FOR_EACH_PTR_NOTAG(file);
+
+ report_stats();
return 0;
}
diff --git a/stats.c b/stats.c
index 5f268573..cda18fca 100644
--- a/stats.c
+++ b/stats.c
@@ -54,3 +54,9 @@ void show_allocation_stats(void)
show_stats(NULL, &tot);
}
+
+void report_stats(void)
+{
+ if (fmem_report)
+ show_allocation_stats();
+}
diff --git a/test-linearize.c b/test-linearize.c
index dd2eaeca..fe0673be 100644
--- a/test-linearize.c
+++ b/test-linearize.c
@@ -61,5 +61,7 @@ int main(int argc, char **argv)
FOR_EACH_PTR_NOTAG(filelist, file) {
clean_up_symbols(sparse(file));
} END_FOR_EACH_PTR_NOTAG(file);
+
+ report_stats();
return 0;
}
diff --git a/test-unssa.c b/test-unssa.c
index f7a5c3a1..240d9960 100644
--- a/test-unssa.c
+++ b/test-unssa.c
@@ -82,5 +82,6 @@ int main(int argc, char **argv)
compile(sparse(file));
} END_FOR_EACH_PTR_NOTAG(file);
+ report_stats();
return 0;
}