mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
Improve documentation of the 'a' specifier and the '<abi>:<pref>' align pair.
llvm-svn: 198636
This commit is contained in:
parent
5f69fecf82
commit
858e3503c4
@ -1141,10 +1141,9 @@ as follows:
|
||||
``p[n]:<size>:<abi>:<pref>``
|
||||
This specifies the *size* of a pointer and its ``<abi>`` and
|
||||
``<pref>``\erred alignments for address space ``n``. All sizes are in
|
||||
bits. Specifying the ``<pref>`` alignment is optional. If omitted, the
|
||||
preceding ``:`` should be omitted too. The address space, ``n`` is
|
||||
optional, and if not specified, denotes the default address space 0.
|
||||
The value of ``n`` must be in the range [1,2^23).
|
||||
bits. The address space, ``n`` is optional, and if not specified,
|
||||
denotes the default address space 0. The value of ``n`` must be
|
||||
in the range [1,2^23).
|
||||
``i<size>:<abi>:<pref>``
|
||||
This specifies the alignment for an integer type of a given bit
|
||||
``<size>``. The value of ``<size>`` must be in the range [1,2^23).
|
||||
@ -1157,9 +1156,8 @@ as follows:
|
||||
will work. 32 (float) and 64 (double) are supported on all targets; 80
|
||||
or 128 (different flavors of long double) are also supported on some
|
||||
targets.
|
||||
``a<size>:<abi>:<pref>``
|
||||
This specifies the alignment for an aggregate type of a given bit
|
||||
``<size>``.
|
||||
``a:<abi>:<pref>``
|
||||
This specifies the alignment for an object of aggregate type.
|
||||
``m:<mangling>``
|
||||
If prerest, specifies that llvm names are mangled in the output. The
|
||||
options are
|
||||
@ -1176,6 +1174,10 @@ as follows:
|
||||
this set are considered to support most general arithmetic operations
|
||||
efficiently.
|
||||
|
||||
On every specification that takes a ``<abi>:<pref>``, specifying the
|
||||
``<pref>`` alignment is optional. If omitted, the preceding ``:``
|
||||
should be omitted too and ``<pref>`` will be equal to ``<abi>``.
|
||||
|
||||
When constructing the data layout for a given target, LLVM starts with a
|
||||
default set of specifications which are then (possibly) overridden by
|
||||
the specifications in the ``datalayout`` keyword. The default
|
||||
|
@ -287,6 +287,9 @@ void DataLayout::parseSpecifier(StringRef Desc) {
|
||||
// Bit size.
|
||||
unsigned Size = Tok.empty() ? 0 : getInt(Tok);
|
||||
|
||||
assert((AlignType != AGGREGATE_ALIGN || Size == 0) &&
|
||||
"These specifications don't have a size");
|
||||
|
||||
// ABI alignment.
|
||||
Split = split(Rest, ':');
|
||||
unsigned ABIAlign = inBytes(getInt(Tok));
|
||||
|
Loading…
Reference in New Issue
Block a user