[llvm] r196300 - Teach the internalize pass to skip dllexported symbols because they could be

Gao, Yunzhong yunzhong_gao at playstation.sony.com
Wed Dec 4 14:16:49 PST 2013


Hi,
Many thanks to Rafael for pointing this out and researching on the exported symbols. Please
review the doc changes below, which I plan to submit against LangRef.rst.
- Gao.

Index: llvm/docs/LangRef.rst
===================================================================
--- llvm/docs/LangRef.rst	(revision 196419)
+++ llvm/docs/LangRef.rst	(working copy)
@@ -289,7 +289,9 @@
     pointer to a pointer in a DLL, so that it can be referenced with the
     ``dllimport`` attribute. On Microsoft Windows targets, the pointer
     name is formed by combining ``__imp_`` and the function or variable
-    name.
+    name. Since this linkage exists for defining a dll interface, the
+    compiler, assembler and linker know it is externally referenced and
+    must refrain from deleting the symbol.
 
 It is illegal for a function *declaration* to have any linkage type
 other than ``external``, ``dllimport`` or ``extern_weak``.
@@ -501,8 +503,8 @@
 initial values before the start of the global initializer.  This is
 true even for variables potentially accessible from outside the
 module, including those with external linkage or appearing in
-``@llvm.used``. This assumption may be suppressed by marking the
-variable with ``externally_initialized``.
+``@llvm.used`` or dllexported variables. This assumption may be suppressed
+by marking the variable with ``externally_initialized``.
 
 An explicit alignment may be specified for a global, which must be a
 power of 2. If not present, or if the alignment is set to zero, the





More information about the llvm-commits mailing list