Andy Kaylor ea3c225786
[CIR] Add alignment support for global, store, and load ops (#141163)
This adds alignment support for GlobalOp, LoadOp, and StoreOp.

Tests which failed because cir.store/cir.load now print alignment were
updated with wildcard matches, except where the alignment was relevant
to the test. Tests which check for cir.store/cir.load in cases that
don't have explicit alignment were not updated.

New tests for alignment are alignment.c, align-load.c, and
align-store.c.
2025-05-23 15:34:59 -07:00

27 lines
1.2 KiB
C

// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -Wno-unused-value -fclangir -emit-cir %s -o %t.cir
// RUN: FileCheck --input-file=%t.cir %s -check-prefix=CIR
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -Wno-unused-value -fclangir -emit-llvm %s -o %t-cir.ll
// RUN: FileCheck --input-file=%t-cir.ll %s -check-prefix=LLVM
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -Wno-unused-value -emit-llvm %s -o %t.ll
// RUN: FileCheck --input-file=%t.ll %s -check-prefix=OGCG
__attribute((aligned(32))) float a[128];
union {int a[4]; __attribute((aligned(32))) float b[4];} b;
// CIR: @a = #cir.zero {{.*}}alignment = 32
// CIR: @b = #cir.zero{{.*}}alignment = 32
// LLVM: @a = {{.*}}zeroinitializer, align 32
// LLVM: @b = {{.*}}zeroinitializer, align 32
// OGCG: @a = {{.*}}zeroinitializer, align 32
// OGCG: @b = {{.*}}zeroinitializer, align 32
long long int test5[1024];
// CIR: @test5 = #cir.zero {{.*}}alignment = 16
// LLVM: @test5 = {{.*}}global [1024 x i64] zeroinitializer, align 16
// OGCG: @test5 = {{.*}}global [1024 x i64] zeroinitializer, align 16
// TODO: Add more test cases from clang/test/CodeGen/alignment.c when we have
// implemented compound literal expression support.