@@ -3109,8 +3109,7 @@ as follows:
3109
3109
``S<size>``
3110
3110
Specifies the natural alignment of the stack in bits. Alignment
3111
3111
promotion of stack variables is limited to the natural stack
3112
- alignment to avoid dynamic stack realignment. The stack alignment
3113
- must be a multiple of 8-bits. If omitted, the natural stack
3112
+ alignment to avoid dynamic stack realignment. If omitted, the natural stack
3114
3113
alignment defaults to "unspecified", which does not prevent any
3115
3114
alignment promotions.
3116
3115
``P<address space>``
@@ -3136,8 +3135,8 @@ as follows:
3136
3135
Defaults to the default address space of 0.
3137
3136
``p[n]:<size>:<abi>[:<pref>][:<idx>]``
3138
3137
This specifies the *size* of a pointer and its ``<abi>`` and
3139
- ``<pref>``\erred alignments for address space ``n``. ``<pref>`` is optional
3140
- and defaults to ``<abi>``. The fourth parameter ``<idx>`` is the size of the
3138
+ ``<pref>``\erred alignments for address space ``n``.
3139
+ The fourth parameter ``<idx>`` is the size of the
3141
3140
index that used for address calculation, which must be less than or equal
3142
3141
to the pointer size. If not
3143
3142
specified, the default index size is equal to the pointer size. All sizes
@@ -3147,23 +3146,21 @@ as follows:
3147
3146
``i<size>:<abi>[:<pref>]``
3148
3147
This specifies the alignment for an integer type of a given bit
3149
3148
``<size>``. The value of ``<size>`` must be in the range [1,2^24).
3150
- ``<pref>`` is optional and defaults to ``<abi>``.
3151
3149
For ``i8``, the ``<abi>`` value must equal 8,
3152
3150
that is, ``i8`` must be naturally aligned.
3153
3151
``v<size>:<abi>[:<pref>]``
3154
3152
This specifies the alignment for a vector type of a given bit
3155
3153
``<size>``. The value of ``<size>`` must be in the range [1,2^24).
3156
- ``<pref>`` is optional and defaults to ``<abi>``.
3157
3154
``f<size>:<abi>[:<pref>]``
3158
3155
This specifies the alignment for a floating-point type of a given bit
3159
3156
``<size>``. Only values of ``<size>`` that are supported by the target
3160
3157
will work. 32 (float) and 64 (double) are supported on all targets; 80
3161
3158
or 128 (different flavors of long double) are also supported on some
3162
3159
targets. The value of ``<size>`` must be in the range [1,2^24).
3163
- ``<pref>`` is optional and defaults to ``<abi>``.
3164
3160
``a:<abi>[:<pref>]``
3165
3161
This specifies the alignment for an object of aggregate type.
3166
- ``<pref>`` is optional and defaults to ``<abi>``.
3162
+ In addition to the usual requirements for alignment values,
3163
+ the value of ``<abi>`` can also be zero, which means one byte alignment.
3167
3164
``F<type><abi>``
3168
3165
This specifies the alignment for function pointers.
3169
3166
The options for ``<type>`` are:
@@ -3202,6 +3199,9 @@ as follows:
3202
3199
as :ref:`Non-Integral Pointer Type <nointptrtype>` s. The ``0``
3203
3200
address space cannot be specified as non-integral.
3204
3201
3202
+ Unless explicitly stated otherwise, on every specification that specifies
3203
+ an alignment, the value of the alignment must be in the range [1,2^16)
3204
+ and must be a power of two times the width of a byte.
3205
3205
On every specification that takes a ``<abi>:<pref>``, specifying the
3206
3206
``<pref>`` alignment is optional. If omitted, the preceding ``:``
3207
3207
should be omitted too and ``<pref>`` will be equal to ``<abi>``.
0 commit comments