39 lines
1.1 KiB
C++
39 lines
1.1 KiB
C++
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir %s -o %t.cir
|
|
// RUN: FileCheck --input-file=%t.cir %s --check-prefix=CIR --implicit-check-not=externNotCalled \
|
|
// RUN: --implicit-check-not=internalNotCalled --implicit-check-not=inlineNotCalled
|
|
|
|
extern int externCalled();
|
|
extern int externNotCalled();
|
|
|
|
namespace {
|
|
int internalCalled() { return 1; }
|
|
int internalNotCalled() { return 2; }
|
|
}
|
|
|
|
struct S {
|
|
int inlineCalled() { return 3; }
|
|
int inlineNotCalled() { return 4; }
|
|
};
|
|
|
|
void use() {
|
|
S s;
|
|
externCalled();
|
|
internalCalled();
|
|
s.inlineCalled();
|
|
}
|
|
|
|
// CIR: cir.func{{.*}} @_Z12externCalledv
|
|
// This shouldn't have a body.
|
|
// CIR-NOT: cir.return
|
|
|
|
// CIR: cir.func{{.*}} @_ZN12_GLOBAL__N_114internalCalledEv
|
|
// CIR: %[[ONE:.*]] = cir.const #cir.int<1>
|
|
// CIR: cir.store %[[ONE]], %[[RET_ADDR:.*]]
|
|
|
|
// CIR: cir.func{{.*}} @_ZN1S12inlineCalledEv
|
|
// CIR: %[[THIS:.*]] = cir.alloca !cir.ptr<!rec_S>, !cir.ptr<!cir.ptr<!rec_S>>, ["this", init]
|
|
// CIR: %[[THREE:.*]] = cir.const #cir.int<3>
|
|
// CIR: cir.store %[[THREE]], %[[RET_ADDR:.*]]
|
|
|
|
// CIR: cir.func{{.*}} @_Z3usev()
|