[LLVMdev] A Question about LLVM structures - alignment of data members

Eli Friedman eli.friedman at gmail.com
Wed Dec 14 13:06:06 PST 2011


On Wed, Dec 14, 2011 at 12:44 PM, Ouriel, Boaz <boaz.ouriel at intel.com> wrote:
> Hi All,
>
>
>
> Today, LLVM IR doesn’t include a description for alignment for specific data
> members inside structures.
>
> The implies that LLVM IR Generators need to do the padding themselves in
> order to achieve the requested alignment.

If the alignment required is higher than native alignment, yes.

> Since the information is not represented explicitly by the LLVM IR,
> optimization passes might unintentionally break the required alignment and
> lead to unexpected results when executing the generated program.

I don't see how this follows: you can explicitly specify alignment for
every operation where it matters. If some operation requires a
specific alignment specified in the IR, the optimizers won't break it.

> What is the reason for disallowing alignment of data members inside structs
> in LLVM IR? What were the design considerations?

We have a perfectly usable design for handling explicitly specifying
alignment.  Allowing explicit alignment on struct types would make the
IR more complicated, and making the IR more complicated requires a
strong justification.

-Eli




More information about the llvm-dev mailing list