aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGenCXX/inline-functions.cpp
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2010-12-15 04:00:32 +0000
committerJohn McCall <rjmccall@apple.com>2010-12-15 04:00:32 +0000
commitbfdcdc8e26097c9dbb4c40d78296f6ccc3e6684c (patch)
tree80b57258c03700b50172959830acf7fc36398940 /test/CodeGenCXX/inline-functions.cpp
parentbebbe0d9b7568ce43a464286bee49429489ef483 (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.cpp24
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();
+ }
+}