blob: e7088ba35eca79639c1229199355c6438d0f8d15 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
// 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()
|