blob: eb733f72c7ed8f4ef434d072e9346423c3460bac (
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
|
// Test alwaysinline definitions w/o any non-direct-call uses.
// None of the declarations are emitted. Stub are only emitted when the original
// function can not be discarded.
// RUN: %clang_cc1 -disable-llvm-optzns -emit-llvm %s -o - | FileCheck %s
void __attribute__((__always_inline__)) f1() {}
inline void __attribute__((__always_inline__)) f2() {}
static inline void __attribute__((__always_inline__)) f3() {}
inline void __attribute__((gnu_inline, __always_inline__)) f4() {}
static inline void __attribute__((gnu_inline, __always_inline__)) f5() {}
inline void __attribute__((visibility("hidden"), __always_inline__)) f6() {}
inline void __attribute__((visibility("hidden"), gnu_inline, __always_inline__)) f7() {}
void g() {
f1();
f2();
f3();
f4();
f5();
f6();
f7();
}
// CHECK: define void @f1()
// CHECK-NOT: void @f2()
// CHECK-NOT: void @f3()
// CHECK: define void @f4()
// CHECK-NOT: void @f5()
// CHECK-NOT: void @f6()
// CHECK: define hidden void @f7()
|