In clang-3.8, I'm trying to have some data types aligned on 8-bit
boundaries, which works for everything except long long.

In my target, I've used:

IntAlign = 8;
LongAlign = 8;
LongLongAlign = 8;
FloatAlign = 8;
DataLayoutString =
"E-p:16:8:8-i1:8:8-i8:8:8-i16:8:8-i32:8:8-i64:8:8-f32:8:8-a:8:8";

If I compile this test.c

int i;
long l;
long long ll;
float f;

I get the following test.ll:

; ModuleID = 'test.c'
target datalayout =
"E-p:16:8:8-i1:8:8-i8:8:8-i16:8:8-i32:8:8-i64:8:8-f32:8:8-a:8:8"
target triple = "sdcc-stm8"

@i = common global i16 0, align 1
@l = common global i32 0, align 1
@ll = common global i64 0, align 8
@f = common global float 0.000000e+00, align 1

!llvm.ident = !{!0}

!0 = !{!"clang version 3.8.1 "}

So the alignment is wrong for long long only.

It seems someone else had such a problem in January
(http://lists.llvm.org/pipermail/llvm-dev/2016-January/094000.html), but
I don't see a solution there.

Philipp
_______________________________________________
cfe-users mailing list
cfe-users@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users

Reply via email to