From bfdcdc8e26097c9dbb4c40d78296f6ccc3e6684c Mon Sep 17 00:00:00 2001 From: John McCall Date: Wed, 15 Dec 2010 04:00:32 +0000 Subject: Set the "implicitly inline" bit on a method as soon as we see a definition within the class. Teach IR gen to look for function definitions in record lexical contexts when deciding whether to emit a function whose address was taken. Fixes PR8789. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121833 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CodeGenCXX/inline-functions.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'test/CodeGenCXX/inline-functions.cpp') diff --git a/test/CodeGenCXX/inline-functions.cpp b/test/CodeGenCXX/inline-functions.cpp index 63a523a9de..69dfe0db98 100644 --- a/test/CodeGenCXX/inline-functions.cpp +++ b/test/CodeGenCXX/inline-functions.cpp @@ -29,3 +29,27 @@ inline void f1(int); void f1(int) { } void test_f1() { f1(17); } + +// PR8789 +namespace test1 { + template class ClassTemplate { + private: + friend void T::func(); + void g() {} + }; + + // CHECK: define linkonce_odr void @_ZN5test11C4funcEv( + + class C { + public: + void func() { + ClassTemplate ct; + ct.g(); + } + }; + + void f() { + C c; + c.func(); + } +} -- cgit v1.2.3-70-g09d2