From a3e14f367c292f053515b5244bf0b7fb11a4e0bc Mon Sep 17 00:00:00 2001 From: jason Date: Wed, 25 May 2011 01:08:16 +0000 Subject: [PATCH] PR c++/47544 * pt.c (instantiate_decl): Handle =default. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174159 138bc75d-0d04-0410-961f-82ee72b054a4 index 8646f08..c8eb1d5 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -17210,7 +17210,8 @@ instantiate_decl (tree d, int defer_ok, args = gen_args; if (TREE_CODE (d) == FUNCTION_DECL) - pattern_defined = (DECL_SAVED_TREE (code_pattern) != NULL_TREE); + pattern_defined = (DECL_SAVED_TREE (code_pattern) != NULL_TREE + || DECL_DEFAULTED_OUTSIDE_CLASS_P (code_pattern)); else pattern_defined = ! DECL_IN_AGGR_P (code_pattern); @@ -17405,6 +17406,8 @@ instantiate_decl (tree d, int defer_ok, cp_finish_decl (d, init, const_init, NULL_TREE, 0); pop_nested_class (); } + else if (TREE_CODE (d) == FUNCTION_DECL && DECL_DEFAULTED_FN (code_pattern)) + synthesize_method (d); else if (TREE_CODE (d) == FUNCTION_DECL) { htab_t saved_local_specializations; new file mode 100644 index 0000000..7d9139d --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/defaulted27.C @@ -0,0 +1,19 @@ +// PR c++/47544 +// { dg-options -std=c++0x } +// { dg-final { scan-assembler "_ZN1sIiEC2Ev" } } +// { dg-final { scan-assembler-not "_ZN1sIiED2Ev" } } + +template +struct s { + s(); + ~s() = default; +}; + +extern template struct s; + +template +s::s() = default; + +template struct s; + +s a; -- 1.7.0.4