]> granicus.if.org Git - clang/commit
Generating available_externally vtables for outline virtual functions
authorPiotr Padlewski <prazek@google.com>
Fri, 24 Jul 2015 04:04:49 +0000 (04:04 +0000)
committerPiotr Padlewski <prazek@google.com>
Fri, 24 Jul 2015 04:04:49 +0000 (04:04 +0000)
commitfb648ca93bf6af17035d611f5baab6fde7da08d6
treea6ba93f00f559ea93af8f159ca8e90400be09d05
parent9009e71d2e2339410442c0b99818cad4996ce0fb
Generating available_externally vtables for outline virtual functions

Generating available_externally vtables for optimizations purposes.
Unfortunatelly ItaniumABI doesn't guarantee that we will be able to
refer to virtual inline method by name.
But when we don't have any inline virtual methods, and key function is
not defined in this TU, we can generate that there will be vtable and
mark it as available_externally.

This is patch will help devirtualize better.
Differential Revision: http://reviews.llvm.org/D11441

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243090 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/AST/VTableBuilder.h
lib/CodeGen/CGCXXABI.h
lib/CodeGen/CGVTables.cpp
lib/CodeGen/ItaniumCXXABI.cpp
lib/CodeGen/MicrosoftCXXABI.cpp
test/CodeGenCXX/vtable-available-externally.cpp
test/CodeGenCXX/vtable-linkage.cpp