mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-25 16:24:23 +00:00
further clarify alignment of globals, fix instcombine
to not increase the alignment of globals with an assigned alignment and section. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102476 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -855,10 +855,11 @@ define i32 @main() { <i>; i32()* </i>
|
||||
of 2. If not present, or if the alignment is set to zero, the alignment of
|
||||
the global is set by the target to whatever it feels convenient. If an
|
||||
explicit alignment is specified, the global is forced to have exactly that
|
||||
alignment. Targets are not allowed to over-align the global in cases where
|
||||
it is observable: for example, overaligning a global is observable if it has
|
||||
an assigned section and higher alignment could cause holes between
|
||||
consequtive globals.</p>
|
||||
alignment. Targets and optimizers are not allowed to over-align the global
|
||||
if the global has an assigned section. In this case, the extra alignment
|
||||
could be observable: for example, code could assume that the globals are
|
||||
densely packed in their section and try to iterate over them as an array,
|
||||
alignment padding would break this iteration.</p>
|
||||
|
||||
<p>For example, the following defines a global in a numbered address space with
|
||||
an initializer, section, and alignment:</p>
|
||||
|
Reference in New Issue
Block a user