From 3210ebe5a66517f2ccdddb3d626cbaaf1d1a87b4 Mon Sep 17 00:00:00 2001 From: hubicka Date: Thu, 9 Sep 2010 00:09:07 +0000 Subject: [PATCH] * lto.c (real_file_count, real_file_decl_data): New static vars. (read_cgraph_and_symbols): Use it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164037 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/lto/ChangeLog | 5 +++++ gcc/lto/lto.c | 12 ++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index 1d5aa14..d719217 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,3 +1,8 @@ +2010-09-08 Jan Hubicka + + * lto.c (real_file_count, real_file_decl_data): New static vars. + (read_cgraph_and_symbols): Use it. + 2010-09-08 Richard Guenther * lto.c (read_cgraph_and_symbols): Collect again after each diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index 4d66a94..7478213 100644 --- a/gcc/lto/lto.c +++ b/gcc/lto/lto.c @@ -1726,6 +1726,11 @@ lto_flatten_files (struct lto_file_decl_data **orig, int count, int last_file_ix gcc_assert (k == count); } +/* Input file data before flattening (i.e. splitting them to subfiles to support + incremental linking. */ +static int real_file_count; +static GTY((length ("real_file_count + 1"))) struct lto_file_decl_data **real_file_decl_data; + /* Read all the symbols from the input files FNAMES. NFILES is the number of files requested in the command line. Instantiate a global call graph by aggregating all the sub-graphs found in each @@ -1744,7 +1749,9 @@ read_cgraph_and_symbols (unsigned nfiles, const char **fnames) timevar_push (TV_IPA_LTO_DECL_IN); - decl_data = (struct lto_file_decl_data **)xmalloc (sizeof(*decl_data) * (nfiles+1)); + real_file_decl_data + = decl_data = ggc_alloc_cleared_vec_lto_file_decl_data_ptr (nfiles + 1); + real_file_count = nfiles; /* Read the resolution file. */ resolution = NULL; @@ -1794,7 +1801,8 @@ read_cgraph_and_symbols (unsigned nfiles, const char **fnames) lto_flatten_files (decl_data, count, last_file_ix); lto_stats.num_input_files = count; - free(decl_data); + ggc_free(decl_data); + real_file_decl_data = NULL; if (resolution_file_name) fclose (resolution); -- 2.7.4