diff options
author | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-03-15 21:22:38 +0000 |
---|---|---|
committer | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-03-15 21:22:38 +0000 |
commit | b4f6d117da53188bb7f540d3d8933662b580227c (patch) | |
tree | 46ff5482e597a1da8507c2252ca4739cd023af48 /gcc | |
parent | f5fdea8087307a3315215cfad6c21412630039ec (diff) | |
download | gcc-b4f6d117da53188bb7f540d3d8933662b580227c.tar.gz |
PR c++/52582
* method.c (implicitly_declare_fn): Set DECL_EXTERNAL.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@185443 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/method.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/torture/pr52582.C | 23 |
4 files changed, 33 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index f4f46fec4a0..cf4d453597f 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2012-03-15 Jason Merrill <jason@redhat.com> + + PR c++/52582 + * method.c (implicitly_declare_fn): Set DECL_EXTERNAL. + 2012-03-15 Manuel López-Ibáñez <manu@gcc.gnu.org> PR c++/44783 diff --git a/gcc/cp/method.c b/gcc/cp/method.c index 07189168d1f..0d4793eb23b 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -1593,6 +1593,7 @@ implicitly_declare_fn (special_function_kind kind, tree type, bool const_p) DECL_DELETED_FN (fn) = deleted_p; DECL_DECLARED_CONSTEXPR_P (fn) = constexpr_p; } + DECL_EXTERNAL (fn) = true; DECL_NOT_REALLY_EXTERN (fn) = 1; DECL_DECLARED_INLINE_P (fn) = 1; gcc_assert (!TREE_USED (fn)); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f54a307a398..10c87e10200 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2012-03-15 Jason Merrill <jason@redhat.com> + + * g++.dg/torture/pr52582.C: New. + 2012-03-15 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> * lib/fortran-modules.exp: New file which was forgotten in r185430. diff --git a/gcc/testsuite/g++.dg/torture/pr52582.C b/gcc/testsuite/g++.dg/torture/pr52582.C new file mode 100644 index 00000000000..1b93fc490bd --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr52582.C @@ -0,0 +1,23 @@ +// PR c++/52582 + +inline void *operator new (__SIZE_TYPE__, void *p) throw () +{ + return p; +} +struct B +{ + virtual ~B (); + B (); +}; +struct A : B +{ + A () : B () {} + virtual void bar (); +}; +void +foo () +{ + char a[64]; + B *b = new (&a) A (); + b->~B (); +} |