re PR lto/48954 (ICE: SIGSEGV in bitmap_count_bits (bitmap.c:719) with -O2 -flto -fno-early-inlining -fkeep-inline-functions)
PR lto/48954 * lto-cgraph.c (output_node_opt_summary): Handle NULL skip args bitmaps. * g++.dg/torture/pr48954.C: New testcase. From-SVN: r174644
This commit is contained in:
parent
014ab419ef
commit
26740835ec
|
@ -1,3 +1,8 @@
|
|||
2011-06-04 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
PR lto/48954
|
||||
* lto-cgraph.c (output_node_opt_summary): Handle NULL skip args bitmaps.
|
||||
|
||||
2011-06-04 Jonathan Wakely <jwakely.gcc@gmail.com>
|
||||
|
||||
* doc/invoke.texi: Document -Wdelete-non-virtual-dtor.
|
||||
|
|
|
@ -1598,14 +1598,24 @@ output_node_opt_summary (struct output_block *ob,
|
|||
int i;
|
||||
struct cgraph_edge *e;
|
||||
|
||||
lto_output_uleb128_stream (ob->main_stream,
|
||||
bitmap_count_bits (node->clone.args_to_skip));
|
||||
EXECUTE_IF_SET_IN_BITMAP (node->clone.args_to_skip, 0, index, bi)
|
||||
lto_output_uleb128_stream (ob->main_stream, index);
|
||||
lto_output_uleb128_stream (ob->main_stream,
|
||||
bitmap_count_bits (node->clone.combined_args_to_skip));
|
||||
EXECUTE_IF_SET_IN_BITMAP (node->clone.combined_args_to_skip, 0, index, bi)
|
||||
lto_output_uleb128_stream (ob->main_stream, index);
|
||||
if (node->clone.args_to_skip)
|
||||
{
|
||||
lto_output_uleb128_stream (ob->main_stream,
|
||||
bitmap_count_bits (node->clone.args_to_skip));
|
||||
EXECUTE_IF_SET_IN_BITMAP (node->clone.args_to_skip, 0, index, bi)
|
||||
lto_output_uleb128_stream (ob->main_stream, index);
|
||||
}
|
||||
else
|
||||
lto_output_uleb128_stream (ob->main_stream, 0);
|
||||
if (node->clone.combined_args_to_skip)
|
||||
{
|
||||
lto_output_uleb128_stream (ob->main_stream,
|
||||
bitmap_count_bits (node->clone.combined_args_to_skip));
|
||||
EXECUTE_IF_SET_IN_BITMAP (node->clone.combined_args_to_skip, 0, index, bi)
|
||||
lto_output_uleb128_stream (ob->main_stream, index);
|
||||
}
|
||||
else
|
||||
lto_output_uleb128_stream (ob->main_stream, 0);
|
||||
lto_output_uleb128_stream (ob->main_stream,
|
||||
VEC_length (ipa_replace_map_p, node->clone.tree_map));
|
||||
FOR_EACH_VEC_ELT (ipa_replace_map_p, node->clone.tree_map, i, map)
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2011-06-04 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
PR lto/48954
|
||||
* g++.dg/torture/pr48954.C: New testcase.
|
||||
|
||||
2011-06-04 Jonathan Wakely <jwakely.gcc@gmail.com>
|
||||
|
||||
* testsuite/g++.dg/warn/delete-non-virtual-dtor.C: New.
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -flto -fno-early-inlining -fkeep-inline-functions" } */
|
||||
struct A
|
||||
{
|
||||
virtual void foo () = 0;
|
||||
};
|
||||
|
||||
struct B : A {};
|
||||
struct C : A {};
|
||||
|
||||
struct D: C, B
|
||||
{
|
||||
void foo () {}
|
||||
};
|
||||
|
||||
static inline void
|
||||
bar (B *b)
|
||||
{
|
||||
b->foo ();
|
||||
}
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
D d;
|
||||
for (;;)
|
||||
bar (&d);
|
||||
}
|
Loading…
Reference in New Issue