Improve documentation of the 'a' specifier and the '<abi>:<pref>' align pair.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198636 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2014-01-06 21:40:24 +00:00
parent 7397426509
commit 177648336a
2 changed files with 12 additions and 7 deletions

View File

@ -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

View File

@ -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));