[LLVMdev] Proposed: first class packed structures

Andrew Lenharth andrewl at lenharth.org
Fri Dec 8 06:27:18 PST 2006


On 12/8/06, Chris Lattner <clattner at apple.com> wrote:
> This patch isn't sufficient for two reasons: 1) it will turn structs that
> don't need to be packed into packed llvm structs.  2) it won't turn some
> that should be packed llvm structs into packed structs (e.g. strange ABI
> considerations force a field to be unaligned, not an attribute at the source
> level).
>
> Here's an example of #1:
>   extern struct { int x;  int y;  int z; } __attribute((packed)) foos;;
> This should just be {int,int,int}, not <{int,int,int}>.

no, consider
struct foo { int x;  int y;  int z; } __attribute((packed));
struct {char c; struct foo f;} bar;

sizeof(bar) == 13
if struct foo wasn't packed it's allignment would force a larger size for bar;

Andrew



More information about the llvm-dev mailing list