]> granicus.if.org Git - clang/commitdiff
UserManual: Tweak the /Zc:dllexportInlines- docs some
authorHans Wennborg <hans@hanshq.net>
Tue, 13 Nov 2018 09:05:12 +0000 (09:05 +0000)
committerHans Wennborg <hans@hanshq.net>
Tue, 13 Nov 2018 09:05:12 +0000 (09:05 +0000)
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
include/clang/Driver/CLCompatOptions.td

index a7f2f8145e87fa8ef945131b8c38c2acc240def3..9317815efca6873e374ed512d8a5fb73ddd0ad00 100644 (file)
@@ -2947,8 +2947,8 @@ Execute ``clang-cl /?`` to see a list of supported options:
       /Yc<filename>           Generate a pch file for all code up to and including <filename>
       /Yu<filename>           Load a pch file and use it instead of all code up to and including <filename>
       /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
 ^^^^^^^^^^^^^^^^^^^^
index f4a4488c72ac1ac613f7a36eac1982fbd590f3cf..3d64aa07ec11e58232dab0d0b531d71f761b84a1 100644 (file)
@@ -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<"<filename>">;