diff options
author | davek <davek@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-01-26 01:41:23 +0000 |
---|---|---|
committer | davek <davek@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-01-26 01:41:23 +0000 |
commit | 0675168d09abce3d05aa0a8de2df0cd2f130d5e1 (patch) | |
tree | 7791b2c5afa7301952887cfb93c353a67dacb1ce /gcc/cp | |
parent | f583ffd49d7d602e4d77bd3b4c2d31a100e7c27e (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 7 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 3 |
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); } |