[PATCH] D78952: [LangRef] Describe linkage types, allocation size of declarations for global variables
Matthias Schiffer via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 28 11:50:45 PDT 2020
NeoRaider updated this revision to Diff 260712.
NeoRaider added a comment.
- Changed wording as suggested by review
- Mention overlap
- Mention alignment
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D78952/new/
https://reviews.llvm.org/D78952
Files:
llvm/docs/LangRef.rst
Index: llvm/docs/LangRef.rst
===================================================================
--- llvm/docs/LangRef.rst
+++ llvm/docs/LangRef.rst
@@ -272,8 +272,8 @@
visible, meaning that it participates in linkage and can be used to
resolve external symbol references.
-It is illegal for a function *declaration* to have any linkage type
-other than ``external`` or ``extern_weak``.
+It is illegal for a global variable or function *declaration* to have any
+linkage type other than ``external`` or ``extern_weak``.
.. _callingconv:
@@ -615,6 +615,8 @@
Global variables in other translation units can also be declared, in which
case they don't have an initializer.
+Global variables can optionally specify a :ref:`linkage type <linkage>`.
+
Either global variable definitions or declarations may have an explicit section
to be placed in and may have an optional explicit alignment specified. If there
is a mismatch between the explicit or inferred section information for the
@@ -686,6 +688,13 @@
iterate over them as an array, alignment padding would break this
iteration. The maximum alignment is ``1 << 29``.
+For global variables declarations, as well as definitions that may be
+replaced at link time (``linkonce``, ``weak``, ``extern_weak`` and ``common``
+linkage types), LLVM makes no assumptions about the allocation size of the
+variables, except that they may not overlap. The alignment of a global variable
+declaration or replaceable definition must not be greater than the alignment of
+the definition it resolves to.
+
Globals can also have a :ref:`DLL storage class <dllstorageclass>`,
an optional :ref:`runtime preemption specifier <runtime_preemption_model>`,
an optional :ref:`global attributes <glattrs>` and
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D78952.260712.patch
Type: text/x-patch
Size: 1764 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200428/96fd392b/attachment.bin>
More information about the llvm-commits
mailing list