blob: 289a2b97a8a065513d2d6c467581a1d9be803f24 [file] [edit]
// RUN: %clang_cc1 -std=c++17 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir %s -o %t.cir
// RUN: FileCheck --check-prefix=CIR --input-file=%t.cir %s
// RUN: %clang_cc1 -std=c++17 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t-cir.ll
// RUN: FileCheck --check-prefix=LLVM --input-file=%t-cir.ll %s
// RUN: %clang_cc1 -std=c++17 -triple x86_64-unknown-linux-gnu -emit-llvm %s -o %t.ll
// RUN: FileCheck --check-prefix=LLVM --input-file=%t.ll %s
struct alignas(32) Big {
char data[80];
};
void f() {
Big *p = new Big;
delete p;
}
// CIR-LABEL: cir.func{{.*}}@_Z1fv
// CIR: %[[SIZE_NEW:[0-9]+]] = cir.const #cir.int<96> : !u64i
// CIR: %[[ALIGN_NEW:[0-9]+]] = cir.const #cir.int<32> : !u64i
// CIR: cir.call @_ZnwmSt11align_val_t(%[[SIZE_NEW]], %[[ALIGN_NEW]])
// CIR: %[[SIZE_DEL:[0-9]+]] = cir.const #cir.int<96> : !u64i
// CIR: %[[ALIGN_DEL:[0-9]+]] = cir.const #cir.int<32> : !u64i
// CIR: cir.call @_ZdlPvmSt11align_val_t(%{{.+}}, %[[SIZE_DEL]], %[[ALIGN_DEL]])
// LLVM-LABEL: define{{.*}}void @_Z1fv
// LLVM: call {{.*}}ptr @_ZnwmSt11align_val_t(i64 {{[^,]*}}96, i64 {{[^,]*}}32)
// LLVM: call void @_ZdlPvmSt11align_val_t(ptr {{[^,]*%[^,]+}}, i64 {{[^,]*}}96, i64 {{[^,]*}}32)