diff options
author | John McCall <rjmccall@apple.com> | 2010-12-15 04:00:32 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2010-12-15 04:00:32 +0000 |
commit | bfdcdc8e26097c9dbb4c40d78296f6ccc3e6684c (patch) | |
tree | 80b57258c03700b50172959830acf7fc36398940 /test/CodeGenCXX/inline-functions.cpp | |
parent | bebbe0d9b7568ce43a464286bee49429489ef483 (diff) |
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
Diffstat (limited to 'test/CodeGenCXX/inline-functions.cpp')
-rw-r--r-- | test/CodeGenCXX/inline-functions.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
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 <typename T> class ClassTemplate { + private: + friend void T::func(); + void g() {} + }; + + // CHECK: define linkonce_odr void @_ZN5test11C4funcEv( + + class C { + public: + void func() { + ClassTemplate<C> ct; + ct.g(); + } + }; + + void f() { + C c; + c.func(); + } +} |