llvm-project/clang/test/CodeGen/align-systemz.c
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

44 lines
874 B
C

// RUN: %clang_cc1 -triple s390x-linux-gnu -emit-llvm %s -o - | FileCheck %s
// SystemZ prefers to align all global variables to two bytes.
struct test {
signed char a;
};
char c;
// CHECK-DAG: @c = global i8 0, align 2
struct test s;
// CHECK-DAG: @s = global %struct.test zeroinitializer, align 2
extern char ec;
// CHECK-DAG: @ec = external global i8, align 2
extern struct test es;
// CHECK-DAG: @es = external global %struct.test, align 2
// Dummy function to make sure external symbols are used.
void func (void)
{
c = ec;
s = es;
}
// Alignment should be respected for coerced argument loads
struct arg { long y __attribute__((packed, aligned(4))); };
extern struct arg x;
void f(struct arg);
void test (void)
{
f(x);
}
// CHECK-LABEL: @test
// CHECK: load i64, i64* getelementptr inbounds (%struct.arg, %struct.arg* @x, i32 0, i32 0), align 4