data layout string questions.

in the language reference manual there is no definition for the prefix “s” (only for large “S” which has to do with the stack).

BTW for x86, I get

Not sure what this means.

The form:

Seems to mean that llvm type i and then abi == the number of bits.

what is the acronym here for abi or does this mean that the ABI specified size?

for “a”, the definition is

But if I compile a program with x86 on a 64 bit machine I get:


So this means that as long as the number of bits is greater than 0, the alignment is 64.
0 is like a wildcard in this case and the field is not relevant?

In any case, the syntax is incorrect since there is no size field.

BTW, it seems that S0 means the natural alignment is unspecified, which not in the document.
Also, the absence of S means unspecified also.



Looks like it’s dead:

void DataLayout::parseSpecifier(StringRef Desc) {

switch (Specifier) {
case ‘s’:
// Ignored for backward compatibility.
// FIXME: remove this on LLVM 4.0.
case ‘E’:
BigEndian = true;
case ‘e’:
BigEndian = false;