[llvm-dev] A struct {i8, i64} has size == 12, clang says size 16

edA-qa mort-ora-y via llvm-dev llvm-dev at lists.llvm.org
Wed Apr 18 13:47:36 PDT 2018


I think I see a potential issue. My ExecutionEngine setup may not be
using the same target as my object code emitting, and in this test case
I'm running in the ExecutionEngine.  I'll go over this code to ensure
I'm creating the same triple and see if that helps -- I'm assuming it
will, since I can't imagine the exact same triple with clang would
produce a different layout.


On 18/04/18 21:37, Reid Kleckner wrote:
> It sounds like your DataLayout may not match clang's for x86_64-linux. What
> does it say about the alignment of i64?
> On Wed, Apr 18, 2018 at 12:05 PM edA-qa mort-ora-y via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>> I'm creating a struct of `{i8,i64}` and `DataLayout::getTypeAllocSize`
>> is returning `12`. `getStructLayout` also gives an `4` offset for the
>> second element.
>> The native ABI, and clang, for the same type are producing a size of 16,
>> with an alignment of 8, for the second element.
>> This is for the system triple "x86_64-linux-gnu"
>> What could be causing this difference in alignment and how can I fix it?
>
>> I'm verifying the native ABI with:
>>      // clang -emit-llvm ll_struct_arg.c -S -o /dev/tty
>>      #include <stddef.h>
>>      typedef struct vpt_data {
>>          _Bool c;
>>          long int b;
>>      } vpt_data;
>>      int main() {
>>          vpt_data v;
>>          vpt_test(v);
>>          auto a = sizeof(v);
>>          auto off = offsetof(vpt_data,b);
>>      }
>
>> 16 is stored to `a` and 8 to `off`.
>> --
>> edA-qa mort-ora-y
>>          http://mortoray.com/
>> Creator of the Leaf language
>>          http://leaflang.org/
>> Streaming algorithms, AI, and design on Twitch
>>          https://www.twitch.tv/mortoray
>> Twitter
>>          edaqa
>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev


-- 
edA-qa mort-ora-y  
	http://mortoray.com/

Creator of the Leaf language
	http://leaflang.org/

Streaming algorithms, AI, and design on Twitch
	https://www.twitch.tv/mortoray

Twitter
	edaqa
	



More information about the llvm-dev mailing list