diff options
author | Jason Merrill <jason@redhat.com> | 2011-04-21 00:28:25 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2011-04-21 00:28:25 -0400 |
commit | f70292772476f1ccc341a69bfb0ab264bc9954bf (patch) | |
tree | 3997386648fb82d975dbfaaef3e0e2ee7e135014 | |
parent | 31603723a0c32e9540b963298e8c95c294eb36dc (diff) | |
download | gcc-f70292772476f1ccc341a69bfb0ab264bc9954bf.zip gcc-f70292772476f1ccc341a69bfb0ab264bc9954bf.tar.gz gcc-f70292772476f1ccc341a69bfb0ab264bc9954bf.tar.bz2 |
* call.c (build_over_call): Handle trivial dtor.
From-SVN: r172809
-rw-r--r-- | gcc/cp/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/cp/call.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/init/dtor4.C | 9 |
4 files changed, 20 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 879f863..dcfa7e6 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,7 @@ 2011-04-20 Jason Merrill <jason@redhat.com> + * call.c (build_over_call): Handle trivial dtor. + * search.c (lookup_fnfields_slot): Call complete_type. PR c++/48594 diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 78104b1..cf8e1a5 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -6411,7 +6411,11 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain) return val; } - /* FIXME handle trivial default constructor and destructor, too. */ + else if (DECL_DESTRUCTOR_P (fn) + && trivial_fn_p (fn) + && !DECL_DELETED_FN (fn)) + return fold_convert (void_type_node, argarray[0]); + /* FIXME handle trivial default constructor, too. */ if (!already_used) mark_used (fn); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index becce40..8fd0216 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2011-04-20 Jason Merrill <jason@redhat.com> + + * g++.dg/init/dtor4.C: New. + 2011-04-20 Uros Bizjak <ubizjak@gmail.com> PR target/48678 diff --git a/gcc/testsuite/g++.dg/init/dtor4.C b/gcc/testsuite/g++.dg/init/dtor4.C new file mode 100644 index 0000000..4bca69e --- /dev/null +++ b/gcc/testsuite/g++.dg/init/dtor4.C @@ -0,0 +1,9 @@ +// { dg-final { scan-assembler-not "_ZN1AD2Ev" } } + +struct A { }; + +int main() +{ + A a; + a.~A(); +} |