diff options
author | Jan Hubicka <jh@suse.cz> | 2018-11-23 00:00:43 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2018-11-22 23:00:43 +0000 |
commit | d7dce787ebe0df76e9811d3565ad3ce113bfee78 (patch) | |
tree | e57d69830ef043039768cda98f04fccd89675f7c /gcc/lto/lto.c | |
parent | 95e3eb80a8148663288821987ffab98e0b30062b (diff) | |
download | gcc-d7dce787ebe0df76e9811d3565ad3ce113bfee78.zip gcc-d7dce787ebe0df76e9811d3565ad3ce113bfee78.tar.gz gcc-d7dce787ebe0df76e9811d3565ad3ce113bfee78.tar.bz2 |
lto.c (cmp_type_location): Remove.
* lto.c (cmp_type_location): Remove.
(lto_read_decls): Do not allocate odr_types.
From-SVN: r266395
Diffstat (limited to 'gcc/lto/lto.c')
-rw-r--r-- | gcc/lto/lto.c | 42 |
1 files changed, 1 insertions, 41 deletions
diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index 2d52d4a..a5195fd 100644 --- a/gcc/lto/lto.c +++ b/gcc/lto/lto.c @@ -1712,36 +1712,6 @@ unify_scc (struct data_in *data_in, unsigned from, } -/* Compare types based on source file location. */ - -static int -cmp_type_location (const void *p1_, const void *p2_) -{ - tree *p1 = (tree*)(const_cast<void *>(p1_)); - tree *p2 = (tree*)(const_cast<void *>(p2_)); - if (*p1 == *p2) - return 0; - - tree tname1 = TYPE_NAME (*p1); - tree tname2 = TYPE_NAME (*p2); - expanded_location xloc1 = expand_location (DECL_SOURCE_LOCATION (tname1)); - expanded_location xloc2 = expand_location (DECL_SOURCE_LOCATION (tname2)); - - const char *f1 = lbasename (xloc1.file); - const char *f2 = lbasename (xloc2.file); - int r = strcmp (f1, f2); - if (r == 0) - { - int l1 = xloc1.line; - int l2 = xloc2.line; - if (l1 != l2) - return l1 - l2; - return xloc1.column - xloc2.column; - } - else - return r; -} - /* Read all the symbols from buffer DATA, using descriptors in DECL_DATA. RESOLUTIONS is the set of symbols picked by the linker (read from the resolution file when the linker plugin is being used). */ @@ -1758,7 +1728,6 @@ lto_read_decls (struct lto_file_decl_data *decl_data, const void *data, unsigned int i; const uint32_t *data_ptr, *data_end; uint32_t num_decl_states; - auto_vec<tree> odr_types; lto_input_block ib_main ((const char *) data + main_offset, header->main_size, decl_data->mode_table); @@ -1828,7 +1797,7 @@ lto_read_decls (struct lto_file_decl_data *decl_data, const void *data, if (!TYPE_CANONICAL (t)) gimple_register_canonical_type (t); if (TYPE_MAIN_VARIANT (t) == t && odr_type_p (t)) - odr_types.safe_push (t); + register_odr_type (t); } /* Link shared INTEGER_CSTs into TYPE_CACHED_VALUEs of its type which is also member of this SCC. */ @@ -1890,15 +1859,6 @@ lto_read_decls (struct lto_file_decl_data *decl_data, const void *data, *slot = state; } - /* Sort types for the file before registering in ODR machinery. */ - if (lto_location_cache::current_cache) - lto_location_cache::current_cache->apply_location_cache (); - odr_types.qsort (cmp_type_location); - - /* Register ODR types. */ - for (unsigned i = 0; i < odr_types.length (); i++) - register_odr_type (odr_types[i]); - if (data_ptr != data_end) internal_error ("bytecode stream: garbage at the end of symbols section"); |