diff options
author | Jakub Jelinek <jakub@redhat.com> | 2015-03-30 23:56:02 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2015-03-30 23:56:02 +0200 |
commit | 00a0ea64eec42da418a111bb4585b2ea007358dc (patch) | |
tree | 4a2145b3fd570aa231e78ea5f2d8819866f798a9 /gcc/ipa-utils.h | |
parent | ef4bac7802534e52d3031dccf0cdfb2c53b2d836 (diff) | |
download | gcc-00a0ea64eec42da418a111bb4585b2ea007358dc.zip gcc-00a0ea64eec42da418a111bb4585b2ea007358dc.tar.gz gcc-00a0ea64eec42da418a111bb4585b2ea007358dc.tar.bz2 |
re PR ipa/65610 (Compare debug failure with -g3 -fsanitize=undefined -fno-sanitize=vptr -O3)
PR ipa/65610
* ipa-utils.h (inlined_polymorphic_ctor_dtor_block_p): Declare.
* ipa-polymorphic-call.c (inlined_polymorphic_ctor_dtor_block_p): New
function.
(decl_maybe_in_construction_p, noncall_stmt_may_be_vtbl_ptr_store):
Use it.
* ipa-prop.c (param_type_may_change_p): Likewise.
* tree-ssa-live.c: Include ipa-utils.h and its dependencies.
(remove_unused_scope_block_p): Add in_ctor_dtor_block
argument. Before inlining, preserve
inlined_polymorphic_ctor_dtor_block_p blocks and the outermost block
with FUNCTION_DECL BLOCK_ABSTRACT_ORIGIN inside of them. Adjust
recursive calls.
(remove_unused_locals): Adjust remove_unused_scope_block_p caller.
* g++.dg/ubsan/pr65610.C: New test.
From-SVN: r221781
Diffstat (limited to 'gcc/ipa-utils.h')
-rw-r--r-- | gcc/ipa-utils.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/ipa-utils.h b/gcc/ipa-utils.h index d302456..0cf6541 100644 --- a/gcc/ipa-utils.h +++ b/gcc/ipa-utils.h @@ -70,6 +70,7 @@ bool possible_polymorphic_call_target_p (tree, HOST_WIDE_INT, const ipa_polymorphic_call_context &, struct cgraph_node *); tree method_class_type (const_tree); +tree inlined_polymorphic_ctor_dtor_block_p (tree, bool); bool decl_maybe_in_construction_p (tree, tree, gimple, tree); tree vtable_pointer_value_to_binfo (const_tree); bool vtable_pointer_value_to_vtable (const_tree, tree *, unsigned HOST_WIDE_INT *); |