llvm-project/clang
Jordan Rose 0a0aa84da3 [analyzer] Use the common evalBind infrastructure for initializers.
This allows checkers (like the MallocChecker) to process the effects of the
bind. Previously, using a memory-allocating function (like strdup()) in an
initializer would result in a leak warning.

This does bend the expectations of checkBind a bit; since there is no
assignment expression, the statement being used is the initializer value.
In most cases this shouldn't matter because we'll use a PostInitializer
program point (rather than PostStmt) for any checker-generated nodes, though
we /will/ generate a PostStore node referencing the internal statement.
(In theory this could have funny effects if someone actually does an
assignment within an initializer; in practice, that seems like it would be
very rare.)

<rdar://problem/12171711>

llvm-svn: 162637
2012-08-25 01:06:23 +00:00
..
INPUTS all-std-headers.cpp: Include the C++11 headers when building with clang 2012-04-13 03:39:16 +00:00
bindings [cindex.py] Cache the number of chunks in CompletionString 2012-08-20 10:38:16 +00:00
docs Stub out a release notes section on -fcatch-undefined-behavior. 2012-08-25 00:47:19 +00:00
examples libclang, examples: [CMake] Add dependencies to tblgen'd headers. 2012-07-27 06:17:56 +00:00
include [analyzer] Use the common evalBind infrastructure for initializers. 2012-08-25 01:06:23 +00:00
lib [analyzer] Use the common evalBind infrastructure for initializers. 2012-08-25 01:06:23 +00:00
runtime build/compiler-rt: Companion commit to r159172. 2012-06-25 23:02:25 +00:00
test [analyzer] Use the common evalBind infrastructure for initializers. 2012-08-25 01:06:23 +00:00
tools [ms-inline asm] As part of a larger refactoring, rename AsmStmt to GCCAsmStmt. 2012-08-25 00:11:56 +00:00
unittests ASTTests: Suppress TestCXXConstructorDecl11 on msvc for now. It seems incompatible. 2012-08-25 00:05:56 +00:00
utils [analyzer] Ted fixed the plist-html issue, so the assert can go away. 2012-08-24 21:07:49 +00:00
www Small change to avoid confusion on what "used by" means for a compiler. 2012-08-14 21:58:29 +00:00
.gitignore Teach Git to ignore the tools/extra directory. 2012-08-13 17:45:30 +00:00
CMakeLists.txt Fix capitalization of LibXml2 for CMake on case-sensitive file systems 2012-08-07 20:42:31 +00:00
INSTALL.txt
LICENSE.TXT Happy new year 2012! 2012-01-01 08:16:56 +00:00
Makefile
ModuleInfo.txt
NOTES.txt Add a note about a missing optimization in the case of virtual 2012-03-30 04:25:03 +00:00
README.txt commit access verified, revert change 2012-03-06 22:55:51 +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/