Go to file
Bruno Ricci b619883c76 [AST] Remove unnecessary indirections in DeclarationNameTable
DeclarationNameTable currently hold 3 "void *" to
FoldingSet<CXXSpecialName>, FoldingSet<CXXLiteralOperatorIdName>
and FoldingSet<CXXDeductionGuideNameExtra>.

CXXSpecialName, CXXLiteralOperatorIdName and
CXXDeductionGuideNameExtra are private classes holding extra
information about a "special" declaration name and are in
AST/DeclarationName.cpp. The original intent seems to have
been to keep these classes private and only expose
DeclarationNameExtra and DeclarationName (the code dates from
2008 and has not been significantly changed since).

However this make the code less straightforward than necessary
because of the need to have "void *" in DeclarationNameTable
(with 1 of 3 comments wrong) and to manually allocate/deallocate
the FoldingSets.

Moreover removing the extra indirections reduce the run-time of
an fsyntax-only on all of Boost by 2.3% which is not totally
unexpected given how frequently this data structure is used
(especially for C++).

A concern raised by erichkeane during the review was that
including Type.h would increase the compile time unreasonably.
However test builds (both clean and incremental) showed that
this patch did not result in any compile time increase.

Reviewed By: erichkeane

Differential Revision: https://reviews.llvm.org/D50261

llvm-svn: 339030
2018-08-06 16:47:31 +00:00
clang [AST] Remove unnecessary indirections in DeclarationNameTable 2018-08-06 16:47:31 +00:00
clang-tools-extra [clangd] Index Interfaces for Xrefs 2018-08-06 13:14:32 +00:00
compiler-rt [CMake] Allow building builtins standalone out of tree without any llvm-config available 2018-08-03 05:50:33 +00:00
debuginfo-tests Disable the asan-deque.cpp integration test for AppleLLDB < v1000 2018-08-04 00:02:48 +00:00
libclc amdgcn: Use __constant AS for amdgcn builtins. 2018-08-03 15:14:08 +00:00
libcxx [libc++] Add the _LIBCPP_HIDE_FROM_ABI_AFTER_V1 macro 2018-08-06 14:11:50 +00:00
libcxxabi [itanium demangler] Support dot suffixes on block invocation functions 2018-08-02 17:45:01 +00:00
libunwind [CMake] Allow building standalone without any llvm-config available 2018-08-03 05:51:31 +00:00
lld [ELF] - Remove dead code from LinkerScript::assignOffsets(). NFC-ihope. 2018-08-06 10:44:17 +00:00
lldb Fix Mangled::Compare() 2018-08-06 14:15:21 +00:00
llgo Update copyright year to 2018. 2018-06-18 12:22:17 +00:00
llvm Fix typo in the MSVC Visualizer for SmallVector class 2018-08-06 16:47:24 +00:00
openmp [OpenMP] Fix doacross testing for gcc 2018-08-02 19:13:07 +00:00
parallel-libs Update copyright year to 2018. 2018-06-18 12:22:17 +00:00
polly [JSONExporter] Print instead of ignoring parser error. 2018-08-02 00:11:14 +00:00
README.md

README.md

Low Level Virtual Machine (LLVM)

This directory and its subdirectories contain source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and runtime environments.