[modules] Don't require the 'inline' specifier when merging an inline function;
any source of the inline nature is sufficient.
llvm-svn: 241146
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index 1dec6fc..6508d6f 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -10385,7 +10385,7 @@
// through a deduced return type, or instantiate templates with local types.
if (!hasVisibleDefinition(Definition) &&
(Definition->getFormalLinkage() == InternalLinkage ||
- Definition->isInlineSpecified() ||
+ Definition->isInlined() ||
Definition->getDescribedFunctionTemplate() ||
Definition->getNumTemplateParameterLists()))
return;
diff --git a/clang/test/Modules/Inputs/submodules-merge-defs/defs.h b/clang/test/Modules/Inputs/submodules-merge-defs/defs.h
index 247b05c..8b6fec6 100644
--- a/clang/test/Modules/Inputs/submodules-merge-defs/defs.h
+++ b/clang/test/Modules/Inputs/submodules-merge-defs/defs.h
@@ -74,3 +74,9 @@
template<typename, int, template<typename> class> friend struct D;
};
}
+
+namespace SeparateInline {
+ inline void f();
+ void f() {}
+ constexpr int g() { return 0; }
+}