From 27ccc9daf4d4a73c77e50d86af93355c97085813 Mon Sep 17 00:00:00 2001 From: Hans Wennborg Date: Tue, 13 Nov 2018 09:05:12 +0000 Subject: [PATCH] UserManual: Tweak the /Zc:dllexportInlines- docs some Addressing comments on https://reviews.llvm.org/D54319 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@346748 91177308-0d34-0410-b5e6-96231b3b80d8 --- docs/UsersManual.rst | 15 ++++++++------- include/clang/Driver/CLCompatOptions.td | 4 ++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/docs/UsersManual.rst b/docs/UsersManual.rst index a7f2f8145e..9317815efc 100644 --- a/docs/UsersManual.rst +++ b/docs/UsersManual.rst @@ -2947,8 +2947,8 @@ Execute ``clang-cl /?`` to see a list of supported options: /Yc Generate a pch file for all code up to and including /Yu Load a pch file and use it instead of all code up to and including /Z7 Enable CodeView debug information in object files - /Zc:dllexportInlines- Don't dllexport/import inline member functions of dllexport/import classes - /Zc:dllexportInlines dllexport/import inline member functions of dllexport/import classes (default) + /Zc:dllexportInlines- Don't dllexport/dllimport inline member functions of dllexport/import classes + /Zc:dllexportInlines dllexport/dllimport inline member functions of dllexport/import classes (default) /Zc:sizedDealloc- Disable C++14 sized global deallocation functions /Zc:sizedDealloc Enable C++14 sized global deallocation functions /Zc:strictStrings Treat string literals as const @@ -3101,10 +3101,10 @@ line. The /Zc:dllexportInlines- Option ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -This causes the class-level `dllexport` and `dllimport` attributes not to be -applied to inline member functions, as they otherwise would. For example, in -the code below `S::foo()` would normally be defined and exported by the DLL, -but when using the ``/Zc:dllexportInlines-`` flag it is not: +This causes the class-level `dllexport` and `dllimport` attributes to not apply +to inline member functions, as they otherwise would. For example, in the code +below `S::foo()` would normally be defined and exported by the DLL, but when +using the ``/Zc:dllexportInlines-`` flag it is not: .. code-block:: c @@ -3170,7 +3170,8 @@ different instance of that variable than in the DLL: } This could lead to very subtle bugs. Using ``-fvisibility-inlines-hidden`` can -lead to the same issue. +lead to the same issue. To avoid it in this case, make `S::foo()` or +`internal()` non-inline, or mark them `dllimport/dllexport` explicitly. The /fallback Option ^^^^^^^^^^^^^^^^^^^^ diff --git a/include/clang/Driver/CLCompatOptions.td b/include/clang/Driver/CLCompatOptions.td index f4a4488c72..3d64aa07ec 100644 --- a/include/clang/Driver/CLCompatOptions.td +++ b/include/clang/Driver/CLCompatOptions.td @@ -336,9 +336,9 @@ def _SLASH_Yu : CLJoined<"Yu">, def _SLASH_Y_ : CLFlag<"Y-">, HelpText<"Disable precompiled headers, overrides /Yc and /Yu">; def _SLASH_Zc_dllexportInlines : CLFlag<"Zc:dllexportInlines">, - HelpText<"dllexport/import inline member functions of dllexport/import classes (default)">; + HelpText<"dllexport/dllimport inline member functions of dllexport/import classes (default)">; def _SLASH_Zc_dllexportInlines_ : CLFlag<"Zc:dllexportInlines-">, - HelpText<"Don't dllexport/import inline member functions of dllexport/import classes">; + HelpText<"Don't dllexport/dllimport inline member functions of dllexport/import classes">; def _SLASH_Fp : CLJoined<"Fp">, HelpText<"Set pch filename (with /Yc and /Yu)">, MetaVarName<"">; -- 2.40.0