Files
clang-p2996/clang/test/CodeGenCXX/inline-functions.cpp
Douglas Gregor ff76cb9727 When an "inline" declaration was followed by a definition not marked
"inline", we weren't giving the definition weak linkage because the
"inline" bit wasn't propagated. This was a longstanding FIXME that,
somehow, hadn't triggered a bug in the wild. Fix this problem by
tracking whether any declaration was marked "inline", and clean up the
semantics of GNU's "extern inline" semantics calculation based on this
change.

Fixes <rdar://problem/8740363>.

llvm-svn: 121373
2010-12-09 16:59:22 +00:00

32 lines
549 B
C++

// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
// CHECK: ; ModuleID
struct A {
inline void f();
};
// CHECK-NOT: define void @_ZN1A1fEv
void A::f() { }
template<typename> struct B { };
template<> struct B<char> {
inline void f();
};
// CHECK-NOT: _ZN1BIcE1fEv
void B<char>::f() { }
// We need a final CHECK line here.
// CHECK: define void @_Z1fv
void f() { }
// <rdar://problem/8740363>
inline void f1(int);
// CHECK: define linkonce_odr void @_Z2f1i
void f1(int) { }
void test_f1() { f1(17); }