llvm-project/clang/lib/Frontend
Peter Collingbourne a8b2f7c0d7 Rework interface for bitset-using features to use a notion of LTO visibility.
Bitsets, and the compiler features they rely on (vtable opt, CFI),
only have visibility within the LTO'd part of the linkage unit. Therefore,
only enable these features for classes with hidden LTO visibility. This
notion is based on object file visibility or (on Windows)
dllimport/dllexport attributes.

We provide the [[clang::lto_visibility_public]] attribute to override the
compiler's LTO visibility inference in cases where the class is defined
in the non-LTO'd part of the linkage unit, or where the ABI supports
calling classes derived from abstract base classes with hidden visibility
in other linkage units (e.g. COM on Windows).

If the cross-DSO CFI mode is enabled, bitset checks are emitted even for
classes with public LTO visibility, as that mode uses a separate mechanism
to cause bitsets to be exported.

This mechanism replaces the whole-program-vtables blacklist, so remove the
-fwhole-program-vtables-blacklist flag.

Because __declspec(uuid()) now implies [[clang::lto_visibility_public]], the
support for the special attr:uuid blacklist entry is removed.

Differential Revision: http://reviews.llvm.org/D18635

llvm-svn: 267784
2016-04-27 20:39:53 +00:00
..
Rewrite Fix a couple assertions that can never fire because the condition ANDed with the string is just true or 1. 2016-04-24 02:08:22 +00:00
ASTConsumers.cpp Revert r240270 ("Fixed/added namespace ending comments using clang-tidy"). 2015-06-22 23:07:51 +00:00
ASTMerge.cpp [Frontend] Make the memory management of FrontendAction pointers explicit by using unique_ptr. 2016-02-07 19:28:36 +00:00
ASTUnit.cpp revert SVN r265702, r265640 2016-04-08 16:52:00 +00:00
CMakeLists.txt revert SVN r265702, r265640 2016-04-08 16:52:00 +00:00
CacheTokens.cpp Reduce the number of implicit StringRef->std::string conversions by threading StringRef through more APIs. 2016-02-13 13:42:54 +00:00
ChainedDiagnosticConsumer.cpp
ChainedIncludesSource.cpp revert SVN r265702, r265640 2016-04-08 16:52:00 +00:00
CodeGenOptions.cpp revert SVN r265702, r265640 2016-04-08 16:52:00 +00:00
CompilerInstance.cpp revert SVN r265702, r265640 2016-04-08 16:52:00 +00:00
CompilerInvocation.cpp Rework interface for bitset-using features to use a notion of LTO visibility. 2016-04-27 20:39:53 +00:00
CreateInvocationFromCommandLine.cpp Rename Action::begin() to Action::input_begin(). 2016-02-23 19:30:43 +00:00
DependencyFile.cpp Roll-back r250822. 2015-10-20 13:23:58 +00:00
DependencyGraph.cpp Revert r240270 ("Fixed/added namespace ending comments using clang-tidy"). 2015-06-22 23:07:51 +00:00
DiagnosticRenderer.cpp Fix -Wnull-conversion for long macros. 2016-01-26 02:51:55 +00:00
FrontendAction.cpp Make it possible for AST plugins to enable themselves by default 2016-03-15 12:51:40 +00:00
FrontendActions.cpp [modules] addHeaderInclude() can't fail. 2016-03-02 06:09:18 +00:00
FrontendOptions.cpp Ensure that we still parse preprocessed CUDA files as CUDA when we use 2015-03-19 17:32:06 +00:00
HeaderIncludeGen.cpp clang-cl: Fix remaining bugs in interaction of /Yc and /FI /showIncludes. 2016-03-23 18:46:57 +00:00
InitHeaderSearch.cpp [ptr-traits] Add #includes of headers rather than forward declarations 2015-12-30 03:40:23 +00:00
InitPreprocessor.cpp [OpenCL] Add predefined macros. 2016-04-26 19:25:46 +00:00
LangStandards.cpp [C++11] Use 'nullptr'. Frontend edition. 2014-05-22 04:46:25 +00:00
LayoutOverrideSource.cpp Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 19:38:18 +00:00
LogDiagnosticPrinter.cpp Replace double negation of !FileID.isInvalid() with FileID.isValid(). 2015-10-03 10:46:20 +00:00
ModuleDependencyCollector.cpp [CrashReproducer] Setup 'use-external-names' in YAML files. 2016-04-13 19:28:21 +00:00
MultiplexConsumer.cpp [OPENMP] Parsing and Sema support for 'omp declare target' directive 2016-04-06 11:38:59 +00:00
PCHContainerOperations.cpp Remove the egregious PCHContainer layering hack that doesn't seem to be necessary anymore. 2016-02-01 13:22:39 +00:00
PrintPreprocessedOutput.cpp [modules] Add a comment to explain why -E leaves some #includes in the preprocessed output. 2016-04-08 01:23:59 +00:00
SerializedDiagnosticPrinter.cpp Roll-back r250822. 2015-10-20 13:23:58 +00:00
SerializedDiagnosticReader.cpp Revert r240270 ("Fixed/added namespace ending comments using clang-tidy"). 2015-06-22 23:07:51 +00:00
TestModuleFileExtension.cpp Module file extensions: pass a Sema through to the extension writer. 2015-12-08 22:43:32 +00:00
TestModuleFileExtension.h Module file extensions: pass a Sema through to the extension writer. 2015-12-08 22:43:32 +00:00
TextDiagnostic.cpp clang-cl: With -fmsc-version=1900, use MSVS2015 diag formatting. 2016-03-23 22:57:55 +00:00
TextDiagnosticBuffer.cpp Replace push_back(Constructor(foo)) with emplace_back(foo) for non-trivial types 2015-05-29 19:42:19 +00:00
TextDiagnosticPrinter.cpp Remove uses of the redundant ".reset(nullptr)" of unique_ptr, in favor of ".reset()" 2014-07-19 01:06:45 +00:00
VerifyDiagnosticConsumer.cpp Refactor: Simplify boolean conditional return statements in lib/Frontend 2015-12-28 15:15:16 +00:00