]> granicus.if.org Git - clang/commit
Modular Codegen: Don't home/modularize static functions in headers
authorDavid Blaikie <dblaikie@gmail.com>
Thu, 2 Nov 2017 21:55:40 +0000 (21:55 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Thu, 2 Nov 2017 21:55:40 +0000 (21:55 +0000)
commit1c2e4e2c3a1f7f60e1378c11fbece9cace322697
tree7f37d33085b7fb4a6dc337f33747d60a58dce1d4
parentf86fcb268fec5ab278a4420af40bfd9e4f298b76
Modular Codegen: Don't home/modularize static functions in headers

Consistent with various workarounds in the backwards compatible modules
that allow static functions in headers to exist, be deduplicated to some
degree, and not generally fail right out of the gate... do the same with
modular codegen as there are enough cases (including in libstdc++ and in
LLVM itself - though I cleaned up the easy ones) that it's worth
supporting as a migration/backcompat step.

Simply create a separate, internal linkage function in each object that
needs it. If an available_externally/modularized function references a
static function, but the modularized function is eventually dropped and
not inlined, the static function will be dropped as unreferenced.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@317274 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Serialization/ASTWriterDecl.cpp
test/Modules/codegen-opt.test