llvm-project/clang/test/CIR/CodeGen/if-consteval.cpp
Andres-Salamanca ccf22848da
[CIR] Add if statement support (#134333)
This patch adds support for if statements in the CIR dialect
Additionally, multiple RUN lines were introduced to improve codegen test
coverage
2025-04-08 17:50:53 -07:00

51 lines
1.4 KiB
C++

// RUN: %clang_cc1 -std=c++23 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir %s -o %t.cir
// RUN: FileCheck --input-file=%t.cir %s --check-prefix=CIR
// RUN: %clang_cc1 -std=c++23 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t-cir.ll
// RUN: FileCheck --input-file=%t-cir.ll %s --check-prefix=LLVM
// RUN: %clang_cc1 -std=c++23 -triple x86_64-unknown-linux-gnu -emit-llvm %s -o %t.ll
// RUN: FileCheck --input-file=%t.ll %s --check-prefix=OGCG
void f() {
int result = 0;
if consteval {
result = 10;
// CIR-NOT: cir.const #cir.int<10> : !s32i
// LLVM-NOT: store i32 10
// OGCG-NOT: store i32 10
} else {
result = 20;
// CHECK: cir.const #cir.int<20> : !s32i
// LLVM: store i32 20, ptr %1, align 4
// OGCG: store i32 20, ptr %result, align 4
}
if !consteval {
result = 30;
// CIR: cir.const #cir.int<30> : !s32i
// LLVM: store i32 30, ptr %1, align 4
// OGCG: store i32 30, ptr %result, align 4
} else {
result = 40;
// CIR-NOT: cir.const #cir.int<40> : !s32i
// LLVM-NOT: store i32 40
// OGCG-NOT: store i32 40
}
if consteval {
result = 50;
// CIR-NOT: cir.const #cir.int<50> : !s32i
// LLVM-NOT: store i32 50
// OGCG-NOT: store i32 50
}
if !consteval {
result = 60;
// CIR: cir.const #cir.int<60> : !s32i
// LLVM: store i32 60, ptr %1, align 4
// OGCG: store i32 60, ptr %result, align 4
}
}