// 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()