hanchenye-llvm-project/clang
Reid Kleckner 5f08094106 [ms-cxxabi] Improve vbtable name mangling accuracy
Summary:
This makes us more compatible with MSVC 2012+ and fixes PR17748 where we
would give two tables the same name.

Rather than doing a fresh depth-first traversal of the inheritance graph
for every record's vbtables, now we memoize vbtable paths for each
record.  By doing memoization, we end up considering virtual bases of
subobjects that come later in the depth-first traversal.  Where
previously we would have ignored a virtual base that we'd already seen,
we now consider it for name mangling purposes without emitting a
duplicate vbtable for it.

Reviewers: majnemer

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D2509

llvm-svn: 198462
2014-01-03 23:42:00 +00:00
..
INPUTS
bindings [libclang/python] Add CompilationDatabase.getAllCompileCommands to the python bindings. 2013-12-20 01:34:00 +00:00
docs Update the copyright credits -- Happy new year 2014! 2014-01-01 08:27:31 +00:00
examples Don't use PrintFunctionNames.exports on Windows. 2013-12-30 00:05:56 +00:00
include [ms-cxxabi] Improve vbtable name mangling accuracy 2014-01-03 23:42:00 +00:00
lib [ms-cxxabi] Improve vbtable name mangling accuracy 2014-01-03 23:42:00 +00:00
runtime Only build ARM-specific runtimes if ARM is enabled 2013-12-11 12:01:21 +00:00
test [ms-cxxabi] Improve vbtable name mangling accuracy 2014-01-03 23:42:00 +00:00
tools CMake separate projects: finish output-directory changes. 2014-01-02 18:37:47 +00:00
unittests clang-format: Recognize single-line macro usages inside macros. 2014-01-03 11:50:46 +00:00
utils CMake separate projects: finish output-directory changes. 2014-01-02 18:37:47 +00:00
www Regenerate DR status page. 2013-12-10 08:26:19 +00:00
.arcconfig
.clang-format Switch the default mode for clang-format to '-file'. Make 'LLVM' the 2013-09-02 07:42:02 +00:00
.gitignore
CMakeLists.txt [CMake] Add missing set_output_directory after Takumi's change in r198205. 2014-01-02 18:28:32 +00:00
CODE_OWNERS.TXT Update contact information. 2013-11-15 17:35:53 +00:00
INSTALL.txt
LICENSE.TXT Update the copyright credits -- Happy new year 2014! 2014-01-01 08:27:31 +00:00
Makefile
ModuleInfo.txt
NOTES.txt
README.txt

README.txt

//===----------------------------------------------------------------------===//
// C Language Family Front-end
//===----------------------------------------------------------------------===//

Welcome to Clang.  This is a compiler front-end for the C family of languages
(C, C++, Objective-C, and Objective-C++) which is built as part of the LLVM
compiler infrastructure project.

Unlike many other compiler frontends, Clang is useful for a number of things
beyond just compiling code: we intend for Clang to be host to a number of
different source level tools.  One example of this is the Clang Static Analyzer.

If you're interested in more (including how to build Clang) it is best to read
the relevant web sites.  Here are some pointers:

Information on Clang:              http://clang.llvm.org/
Building and using Clang:          http://clang.llvm.org/get_started.html
Clang Static Analyzer:             http://clang-analyzer.llvm.org/
Information on the LLVM project:   http://llvm.org/

If you have questions or comments about Clang, a great place to discuss them is
on the Clang development mailing list:
  http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev

If you find a bug in Clang, please file it in the LLVM bug tracker:
  http://llvm.org/bugs/