llvm-project/clang
Argyrios Kyrtzidis dd72aafffc Create proper Objective-C @encoding for C++ classes; fixes rdar://9357400.
Go through and expand the members of bases into the encoding string (and encode the VTable as well).
Unlike gcc which expands virtual bases as many times as they appear in the
hierarchy, clang will only expand them once at the end, to reflect the actual layout.

Note that there doesn't seem to be a way to indicate in the encoding that
packing/alignment of members is different that normal, in which case
the encoding will be out-of-sync with the real layout.
If the runtime switches to just consider the size of types without
taking into account alignment, we could easily make padding explicit in the
encoding (e.g. using arrays of chars). The encoding strings would be
longer then though.

Also encode a flexible array member as array of 0 size, like gcc, not as a pointer.

llvm-svn: 131365
2011-05-14 20:32:43 +00:00
..
INPUTS
bindings/python python bindings: Add support for different kind of completion chunks 2011-02-05 17:54:10 +00:00
clang.xcodeproj In the clang.xcodeproj modify the 'clang' target to do nothing, not try to build anything. 2011-02-23 00:15:56 +00:00
docs Introduce __has_extension macro 2011-05-13 20:54:45 +00:00
examples Fixes compilation with Visual Studio by replacing the non-standard vector::data() access. 2011-05-10 00:58:12 +00:00
include Create proper Objective-C @encoding for C++ classes; fixes rdar://9357400. 2011-05-14 20:32:43 +00:00
lib Create proper Objective-C @encoding for C++ classes; fixes rdar://9357400. 2011-05-14 20:32:43 +00:00
runtime Driver/Darwin: Change to use generic iOS runtime library, which we now always need. 2011-04-18 23:48:36 +00:00
test Create proper Objective-C @encoding for C++ classes; fixes rdar://9357400. 2011-05-14 20:32:43 +00:00
tools Add c-index-test printing and tests for static and virtual method 2011-05-13 15:54:42 +00:00
unittests Handle gcc-compatible compilers (such as clang) the same way we handle 2011-05-11 13:53:30 +00:00
utils fix a bunch of comment typos found by codespell. Patch by 2011-04-15 05:22:18 +00:00
www Eliminate old, useless tutorial page 2011-05-13 14:43:48 +00:00
CMakeLists.txt Handle gcc-compatible compilers (such as clang) the same way we handle 2011-05-11 13:53:30 +00:00
INSTALL.txt
LICENSE.TXT
Makefile Basic: Add support for a build variable to set the repository path that goes 2011-03-31 00:32:50 +00:00
ModuleInfo.txt
NOTES.txt A Release-Asserts build is now called a Release build. 2010-07-07 07:49:17 +00:00
README.txt
TODO.txt Test commit; added blank line to TODO.txt 2011-01-04 19:19:20 +00:00

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/