aboutsummaryrefslogtreecommitdiff
path: root/gcc/lto/lto.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2018-11-23 00:00:43 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2018-11-22 23:00:43 +0000
commitd7dce787ebe0df76e9811d3565ad3ce113bfee78 (patch)
treee57d69830ef043039768cda98f04fccd89675f7c /gcc/lto/lto.c
parent95e3eb80a8148663288821987ffab98e0b30062b (diff)
downloadgcc-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.c42
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");