
When creating a global variable with a type of a struct with bitfields, we must forcibly set the alignment of the global from the RecordDecl. We must do this so that the proper bitfield alignment makes its way down to LLVM, since clang will mangle the bitfields into one large type. llvm-svn: 235976
16 lines
407 B
C
16 lines
407 B
C
// RUN: %clang_cc1 -triple arm-none-eabi -ffreestanding -emit-llvm -o - -O3 %s | FileCheck %s
|
|
// RUN: %clang_cc1 -triple aarch64 -ffreestanding -emit-llvm -o - -O3 %s | FileCheck %s
|
|
|
|
extern struct T {
|
|
int b0 : 8;
|
|
int b1 : 24;
|
|
int b2 : 1;
|
|
} g;
|
|
|
|
int func() {
|
|
return g.b1;
|
|
}
|
|
|
|
// CHECK: @g = external global %struct.T, align 4
|
|
// CHECK: %{{.*}} = load i64, i64* bitcast (%struct.T* @g to i64*), align 4
|