Method who have definitions in structs/classes are semantically inline.
Per the FIXME, it might be interesting to track whether the inline keyword
was also used on the method, but for now we don't do this. Testcase pending.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71589 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp
index c778ca6..d8b6f45 100644
--- a/lib/Sema/SemaDecl.cpp
+++ b/lib/Sema/SemaDecl.cpp
@@ -2067,6 +2067,13 @@
}
// This is a C++ method declaration.
+
+ // FIXME: All inline method declarations are semantically inline. We
+ // should add a new bit to keep track of whether they were declared with an
+ // inline keyword as well.
+ if (CurContext == DC && IsFunctionDefinition)
+ isInline = true;
+
NewFD = CXXMethodDecl::Create(Context, cast<CXXRecordDecl>(DC),
D.getIdentifierLoc(), Name, R,
(SC == FunctionDecl::Static), isInline);