MS ABI: Stick internal vftables in a comdat if they have RTTI data
authorDavid Majnemer <david.majnemer@gmail.com>
Sun, 13 Jul 2014 05:19:56 +0000 (05:19 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Sun, 13 Jul 2014 05:19:56 +0000 (05:19 +0000)
commitb2615aa44d0cabd821b7afe5acdc847af9937c76
treee966034f9df7a73558b796f2bb13c8cbcb1337ef
parentebc741168bc0bd25666282979b318370477bd405
MS ABI: Stick internal vftables in a comdat if they have RTTI data

Previously, we would have a private backing variable and an internal
alias pointing at it.

However, -fdata-sections only fires if a global variable has non-private
linkage.  This means that an unreferenced vftable wouldn't get
discarded, bloating the object file.

Instead, stick the backing variable in a comdat even if the alias has
internal linkage.  This will allow the linker to drop the vftable if it
is unused.

llvm-svn: 212901
clang/lib/CodeGen/MicrosoftCXXABI.cpp
clang/test/CodeGenCXX/microsoft-abi-vftables.cpp