re PR lto/42762 (ICE in get_resolution() when compiling a C++ program with -flto -fuse-linker-plugin)

2010-02-05  Richard Guenther  <rguenther@suse.de>

	PR lto/42762
	* lto-streamer-in.c (get_resolution): Deal with references
	to undefined functions.

From-SVN: r156520
This commit is contained in:
Richard Guenther 2010-02-05 15:31:15 +00:00 committed by Richard Biener
parent 5c95f07b61
commit 532df90460
2 changed files with 12 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2010-02-05 Richard Guenther <rguenther@suse.de>
PR lto/42762
* lto-streamer-in.c (get_resolution): Deal with references
to undefined functions.
2010-02-05 Richard Guenther <rguenther@suse.de>
* tree-ssa-ccp.c (get_symbol_constant_value): Strip all

View File

@ -1515,12 +1515,15 @@ get_resolution (struct data_in *data_in, unsigned index)
if (data_in->globals_resolution)
{
ld_plugin_symbol_resolution_t ret;
gcc_assert (index < VEC_length (ld_plugin_symbol_resolution_t,
data_in->globals_resolution));
/* We can have references to not emitted functions in
DECL_FUNCTION_PERSONALITY at least. So we can and have
to indeed return LDPR_UNKNOWN in some cases. */
if (VEC_length (ld_plugin_symbol_resolution_t,
data_in->globals_resolution) <= index)
return LDPR_UNKNOWN;
ret = VEC_index (ld_plugin_symbol_resolution_t,
data_in->globals_resolution,
index);
gcc_assert (ret != LDPR_UNKNOWN);
return ret;
}
else