Commit 3ecce8a1 by Richard Biener Committed by Richard Biener

re PR lto/55660 (ICE instead of some warning during lto build with supplied…

re PR lto/55660 (ICE instead of some warning during lto build with supplied different options (-funsigned-char vs none))

2012-12-13  Richard Biener  <rguenther@suse.de>

	PR lto/55660
	* tree-streamer.c (record_common_node): Check that we are not
	recursively pre-loading nodes we want to skip.  Handle
	char_type_node appearing as part of va_list_type_node.

	* gcc.dg/lto/pr55660_0.c: New testcase.
	* gcc.dg/lto/pr55660_1.c: Likewise.

From-SVN: r194473
parent af50fec7
2012-12-13 Richard Biener <rguenther@suse.de>
PR lto/55660
* tree-streamer.c (record_common_node): Check that we are not
recursively pre-loading nodes we want to skip. Handle
char_type_node appearing as part of va_list_type_node.
2012-12-13 Jakub Jelinek <jakub@redhat.com>
PR gcov-profile/55650
2012-12-13 Richard Biener <rguenther@suse.de>
PR lto/55660
* gcc.dg/lto/pr55660_0.c: New testcase.
* gcc.dg/lto/pr55660_1.c: Likewise.
2012-12-13 Jakub Jelinek <jakub@redhat.com>
PR gcov-profile/55650
......
/* { dg-lto-do run } */
/* { dg-extra-ld-options { -funsigned-char } } */
char n[3] = {'a','b','c'};
int foo(char *x)
{
if (*x == 'b')
return (int)*x;
*x = 'y';
return 0;
}
extern int foo (char*);
extern void abort (void);
extern char n[3];
int main ()
{
int i, m = 0;
for (i = 0; i < 3; i++)
m += foo(&n[i]);
if (m != 'b')
abort ();
return 0;
}
......@@ -237,6 +237,16 @@ streamer_tree_cache_lookup (struct streamer_tree_cache_d *cache, tree t,
static void
record_common_node (struct streamer_tree_cache_d *cache, tree node)
{
/* If we recursively end up at nodes we do not want to preload simply don't.
??? We'd want to verify that this doesn't happen, or alternatively
do not recurse at all. */
if (node == char_type_node)
return;
gcc_checking_assert (node != boolean_type_node
&& node != boolean_true_node
&& node != boolean_false_node);
/* We have to make sure to fill exactly the same number of
elements for all frontends. That can include NULL trees.
As our hash table can't deal with zero entries we'll simply stream
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment