summaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authordavek <davek@138bc75d-0d04-0410-961f-82ee72b054a4>2011-01-26 01:41:23 +0000
committerdavek <davek@138bc75d-0d04-0410-961f-82ee72b054a4>2011-01-26 01:41:23 +0000
commit0675168d09abce3d05aa0a8de2df0cd2f130d5e1 (patch)
tree7791b2c5afa7301952887cfb93c353a67dacb1ce /gcc/cp
parentf583ffd49d7d602e4d77bd3b4c2d31a100e7c27e (diff)
downloadgcc-0675168d09abce3d05aa0a8de2df0cd2f130d5e1.tar.gz
gcc/c-family/ChangeLog:
* c.opt (-fkeep-inline-dllexport): New switch. gcc/ChangeLog: * tree.c (handle_dll_attribute): Handle it. * doc/extend.texi (@item dllexport): Mention it. * doc/invoke.texi (@item -fno-keep-inline-dllexport): Document it. gcc/cp/ChangeLog: * semantics.c (expand_or_defer_fn_1): Handle it. * decl2.c (decl_needed_p): Likewise. gcc/testsuite/ChangeLog: * gcc.dg/dll-9a.c: New test file. * gcc.dg/dll-11.c: Likewise. * gcc.dg/dll-12.c: Likewise. * gcc.dg/dll-12a.c: Likewise. * gcc.dg/dll-11a.c: Likewise. * gcc.dg/dll-9.c: Likewise. * gcc.dg/dll-10.c: Likewise. * gcc.dg/dll-10a.c: Likewise. * g++.dg/ext/dllexport4a.cc: Likewise. * g++.dg/ext/dllexport4.C: Likewise. * g++.dg/ext/dllexport5.C: Likewise. * g++.dg/ext/dllexport5a.cc: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@169268 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/decl2.c7
-rw-r--r--gcc/cp/semantics.c3
3 files changed, 11 insertions, 4 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 81e44573032..d6113a2146a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2011-01-26 Dave Korn <dave.korn.cygwin@gmail.com>
+
+ * semantics.c (expand_or_defer_fn_1): Handle it.
+ * decl2.c (decl_needed_p): Likewise.
+
2011-01-21 Jason Merrill <jason@redhat.com>
PR c++/47041
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 288552880a7..a4b7dfa9bee 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -1,7 +1,7 @@
/* Process declarations and variables for C++ compiler.
Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010,
+ 2011 Free Software Foundation, Inc.
Hacked by Michael Tiemann (tiemann@cygnus.com)
This file is part of GCC.
@@ -1781,7 +1781,8 @@ decl_needed_p (tree decl)
return true;
/* Functions marked "dllexport" must be emitted so that they are
visible to other DLLs. */
- if (lookup_attribute ("dllexport", DECL_ATTRIBUTES (decl)))
+ if (flag_keep_inline_dllexport
+ && lookup_attribute ("dllexport", DECL_ATTRIBUTES (decl)))
return true;
/* Otherwise, DECL does not need to be emitted -- yet. A subsequent
reference to DECL might cause it to be emitted later. */
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index dc29c7a9a71..ea8a7ae8669 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -3482,7 +3482,8 @@ expand_or_defer_fn_1 (tree fn)
if ((flag_keep_inline_functions
&& DECL_DECLARED_INLINE_P (fn)
&& !DECL_REALLY_EXTERN (fn))
- || lookup_attribute ("dllexport", DECL_ATTRIBUTES (fn)))
+ || (flag_keep_inline_dllexport
+ && lookup_attribute ("dllexport", DECL_ATTRIBUTES (fn))))
mark_needed (fn);
}