[PATCH] D36712: Emit section information for extern variables
Elizabeth Andrews via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Aug 16 11:44:08 PDT 2017
eandrews updated this revision to Diff 111388.
eandrews added a comment.
Updated the patch to include Krzysztof's comment about explicitly stating undefined behavior for section information mismatch in global variable declaration and definition. This should cover the case where section is explicitly specified in definition but not declaration.
@@ -579,7 +579,9 @@
case they don't have an initializer.
Either global variable definitions or declarations may have an explicit section
-to be placed in and may have an optional explicit alignment specified.
+to be placed in and may have an optional explicit alignment specified. A
+mismatch between section information in the variable declaration and its
+definition is undefined behavior.
A variable may be defined as a global ``constant``, which indicates that
the contents of the variable will **never** be modified (enabling better
@@ -622,6 +624,12 @@
Additionally, the global can placed in a comdat if the target has the necessary
+External declarations may have an explicit section specified. Section
+information is retained in LLVM IR for targets that make use of this
+information. Attaching section information to an external declaration is an
+assertion that its definition is located in the specified section. If the
+definition is located in a different section, the behavior is undefined.
By default, global initializers are optimized by assuming that global
variables defined within the module are not modified from their
initial values before the start of the global initializer. This is
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 1376 bytes
Desc: not available
More information about the cfe-commits