diff options
author | Jan Hubicka <jh@suse.cz> | 2010-09-10 11:42:20 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2010-09-10 09:42:20 +0000 |
commit | eafedef3836563374ab1c4509e2a386c8156af7f (patch) | |
tree | cc03f40c9dd200f078a8f820d2b736f5fd7ae542 /gcc/cp | |
parent | 292beb8fdadb4b8846c87ddd51e91e0427a583fa (diff) | |
download | gcc-eafedef3836563374ab1c4509e2a386c8156af7f.zip gcc-eafedef3836563374ab1c4509e2a386c8156af7f.tar.gz gcc-eafedef3836563374ab1c4509e2a386c8156af7f.tar.bz2 |
re PR tree-optimization/45605 (Missed devirtualization)
PR tree-optimization/45605
* cp/class.c (build_vtbl_initializer): Avoid wrong type conversion in ADDR_EXPR
From-SVN: r164148
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/class.c | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index f2c7faa..54d0ef6 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2010-09-10 Jan Hubicka <jh@suse.cz> + + PR tree-optimization/45605 + * cp/class.c (build_vtbl_initializer): Avoid wrong type conversion in ADDR_EXPR + 2010-09-08 Jakub Jelinek <jakub@redhat.com> PR c++/45588 diff --git a/gcc/cp/class.c b/gcc/cp/class.c index 35b6db13..4823fa2 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -7797,7 +7797,7 @@ build_vtbl_initializer (tree binfo, { fn = abort_fndecl; if (abort_fndecl_addr == NULL) - abort_fndecl_addr = build1 (ADDR_EXPR, vfunc_ptr_type_node, fn); + abort_fndecl_addr = fold_convert (vfunc_ptr_type_node, build_fold_addr_expr (fn)); init = abort_fndecl_addr; } else @@ -7810,7 +7810,7 @@ build_vtbl_initializer (tree binfo, } /* Take the address of the function, considering it to be of an appropriate generic type. */ - init = build1 (ADDR_EXPR, vfunc_ptr_type_node, fn); + init = fold_convert (vfunc_ptr_type_node, build_fold_addr_expr (fn)); } } |