llvm-project/clang
Craig Silverstein 60f8b286ad Move traverseunqualifiedtypeloc over to the 'main' typeloc tree.
Note that this is a move -- we pretend that we were really looking
at the unqualified typeloc all along -- rather than a recursion, so
we don't follow the normal CRTP plan of going through
getDerived().TraverseTypeLoc.  If we did, we'd be traversing twice
for the same type (once as a QualifiedTypeLoc version of the type,
once as an UnqualifiedTypeLoc version of the type), which in effect
means we'd call VisitTypeLoc twice with the 'same' type.  This
solves that problem, at the cost of never seeing the qualified
version of the type (unless the client subclasses
TraverseQualifiedTypeLoc themselves).  It's not a perfect solution.
A perfect solution probably requires making QualifiedTypeLoc a
wrapper around TypeLoc -- like QualType is a wrapper around Type*
-- rather than being its own class in the type hierarchy.

Reviewed by wan.

llvm-svn: 107973
2010-07-09 15:19:34 +00:00
..
INPUTS Add an input file that includes all standard C++ headers 2009-09-29 03:26:11 +00:00
bindings/python Rename 'CIndex' to 'libclang', since it has basically become our stable public 2010-04-30 21:51:10 +00:00
clang.xcodeproj Nasty rewriter bug which turns out to have an easy fix in 2010-06-30 16:31:08 +00:00
docs Some preparatory work for chained PCH. No functionality change. 2010-07-08 22:01:51 +00:00
examples Add skeleton code to make wpa call the analysis engine. 2010-07-06 09:18:02 +00:00
include Move traverseunqualifiedtypeloc over to the 'main' typeloc tree. 2010-07-09 15:19:34 +00:00
lib Revert 107953, remove comma ignoring from PPC constraints. 2010-07-09 04:53:08 +00:00
runtime Runtime: Always build compiler-rt using the Clang we just built, instead of the 2010-06-30 22:10:41 +00:00
test Cleanup in CStringChecker. Now properly bifurcates the state for zero/nonzero sizes. 2010-07-08 23:57:29 +00:00
tools Reinstate the fix for PR7556. A silly use of isTrivial() was 2010-07-08 06:14:04 +00:00
utils FuzzTest: Add support for reading list of replacements from a file. 2010-05-30 22:27:55 +00:00
www Add missing whitespace. 2010-07-08 19:43:08 +00:00
CMakeLists.txt clang: Derive version name from LLVM unless specified explicitly. This means 2010-06-25 23:34:47 +00:00
INSTALL.txt
LICENSE.TXT 2010 is here. 2010-01-09 18:40:42 +00:00
Makefile Move lib/Runtime to runtime/, and build after everything else. 2010-06-30 22:10:38 +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 Fix typo (test commit) 2010-06-17 12:39:05 +00:00
TODO.txt switch -Werror/-Wfatal-errors error conditions to use diagnostics instead 2009-12-23 18:53:37 +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/