blob: 368b0e1bd18d65f421edebb5f25cb90e59986bbb [file] [log] [blame] [edit]
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -Wno-unused-value -emit-cir %s -o %t.cir
// RUN: FileCheck --input-file=%t.cir %s
int c0() {
int a = 1;
int b = 2;
return b + 1, a;
}
// CHECK: cir.func @_Z2c0v() -> !s32i
// CHECK: %[[#RET:]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"]
// CHECK: %[[#A:]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["a", init]
// CHECK: %[[#B:]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["b", init]
// CHECK: %[[#LOADED_B:]] = cir.load %[[#B]] : !cir.ptr<!s32i>, !s32i
// CHECK: %[[#]] = cir.binop(add, %[[#LOADED_B]], %[[#]]) nsw : !s32i
// CHECK: %[[#LOADED_A:]] = cir.load %[[#A]] : !cir.ptr<!s32i>, !s32i
// CHECK: cir.store %[[#LOADED_A]], %[[#RET]] : !s32i, !cir.ptr<!s32i>
int &foo1();
int &foo2();
void c1() {
int &x = (foo1(), foo2());
}
// CHECK: cir.func @_Z2c1v()
// CHECK: %0 = cir.alloca !cir.ptr<!s32i>, !cir.ptr<!cir.ptr<!s32i>>
// CHECK: %1 = cir.call @_Z4foo1v() : () -> !cir.ptr<!s32i>
// CHECK: %2 = cir.call @_Z4foo2v() : () -> !cir.ptr<!s32i>
// CHECK: cir.store %2, %0 : !cir.ptr<!s32i>, !cir.ptr<!cir.ptr<!s32i>>