[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