From: Mark Mitchell Date: Fri, 26 May 2000 16:54:18 +0000 (+0000) Subject: decl2.c (grokclassfn): Set DECL_LANGUAGE here. X-Git-Tag: prereleases/libstdc++-2.92~6163 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cab8bde98e943c8bd7b01ea71848ceb24ec60b45;p=thirdparty%2Fgcc.git decl2.c (grokclassfn): Set DECL_LANGUAGE here. * decl2.c (grokclassfn): Set DECL_LANGUAGE here. * method.c (implicitly_declare_fn): Not here. From-SVN: r34194 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 83224d8daf69..1bccc3602980 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2000-05-26 Mark Mitchell + + * decl2.c (grokclassfn): Set DECL_LANGUAGE here. + * method.c (implicitly_declare_fn): Not here. + 2000-05-26 Nathan Sidwell * cp-tree.h (CPTI_PTMD_DESC_TYPE): Rename to ... diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 315e3c86e7b4..11250e7a02f2 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -1034,6 +1034,10 @@ grokclassfn (ctype, function, flags, quals) tree fn_name = DECL_NAME (function); int this_quals = TYPE_UNQUALIFIED; + /* Even within an `extern "C"' block, members get C++ linkage. See + [dcl.link] for details. */ + DECL_LANGUAGE (function) = lang_cplusplus; + if (fn_name == NULL_TREE) { error ("name missing for member function"); diff --git a/gcc/cp/method.c b/gcc/cp/method.c index 53b51536bb94..6d34795fe9aa 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -2581,9 +2581,6 @@ implicitly_declare_fn (kind, type, const_p) DECL_NOT_REALLY_EXTERN (fn) = 1; DECL_THIS_INLINE (fn) = 1; DECL_INLINE (fn) = 1; - /* Even within an `extern "C"' block, members get C++ linkage. See - [dcl.link] for details. */ - DECL_LANGUAGE (fn) = lang_cplusplus; defer_fn (fn); return fn; diff --git a/gcc/testsuite/g++.old-deja/g++.other/externC2.C b/gcc/testsuite/g++.old-deja/g++.other/externC2.C new file mode 100644 index 000000000000..86d3736947a3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/externC2.C @@ -0,0 +1,16 @@ +// Build don't link: +// Origin: Boris Zentner + +extern "C" +{ +struct xx +{ + int x; + xx(); +}; + +xx::xx() +{ + x = 0; +} +}