Sjoerd Meijer 3d9a0445cc Recommit #2 "[Driver] Default to -fno-common for all targets"
After a first attempt to fix the test-suite failures, my first recommit
caused the same failures again. I had updated CMakeList.txt files of
tests that needed -fcommon, but it turns out that there are also
Makefiles which are used by some bots, so I've updated these Makefiles
now too.

See the original commit message for more details on this change:
0a9fc9233e172601e26381810d093e02ef410f65
2020-03-09 19:57:03 +00:00

70 lines
2.0 KiB
C

// RUN: %clang_cc1 -triple i386-unknown-linux-gnu -emit-llvm %s -o - | FileCheck %s
__attribute((aligned(16))) float a[128];
union {int a[4]; __attribute((aligned(16))) float b[4];} b;
// CHECK: @a = {{.*}}zeroinitializer, align 16
// CHECK: @b = {{.*}}zeroinitializer, align 16
long long int test5[1024];
// CHECK-DAG: @test5 = global [1024 x i64] zeroinitializer, align 8
// PR5279 - Reduced alignment on typedef.
typedef int myint __attribute__((aligned(1)));
void test1(myint *p) {
*p = 0;
}
// CHECK: @test1(
// CHECK: store i32 0, i32* {{.*}}, align 1
// CHECK: ret void
int test1a(myint *p) {
return *p;
}
// CHECK: @test1a(
// CHECK: load i32, i32* {{.*}}, align 1
// CHECK: ret i32
// PR5279 - Reduced alignment on typedef.
typedef float __attribute__((vector_size(16), aligned(4))) packedfloat4;
void test2(packedfloat4 *p) {
*p = (packedfloat4) { 3.2f, 2.3f, 0.1f, 0.0f };
}
// CHECK: @test2(
// CHECK: store <4 x float> {{.*}}, align 4
// CHECK: ret void
// PR5279 - Reduced alignment on typedef.
typedef float __attribute__((ext_vector_type(3), aligned(4))) packedfloat3;
void test3(packedfloat3 *p) {
*p = (packedfloat3) { 3.2f, 2.3f, 0.1f };
}
// CHECK: @test3(
// CHECK: %{{.*}} = bitcast <3 x float>* %{{.*}} to <4 x float>*
// CHECK: store <4 x float> {{.*}}, align 4
// CHECK: ret void
typedef float __attribute__((vector_size(16), aligned(64))) float4align64;
// rdar://10639962 - Typedef alignment lost in p[]-style dereferencing
void test4(float4align64 *p) {
p[0] = (float4align64){ 3.2f, 2.3f, 0.1f, 0.0f };
}
// CHECK: @test4(
// CHECK: store <4 x float> {{.*}}, <4 x float>* {{.*}}, align 64
// PR24944 - Typedef alignment not honored on no-op cast.
typedef float __attribute__((vector_size(16), aligned(16))) float4align16;
typedef float __attribute__((vector_size(16), aligned(2))) float4align2;
void test6(float4align64 *p) {
float4align64 vec = *(float4align2*) p;
}
// CHECK-LABEL: @test6
// CHECK: load <4 x float>, <4 x float>* {{.*}}, align 2