hanchenye-llvm-project/clang
Jordan Rose 9eb409ace9 [analyzer] When invalidating symbolic offset regions, take fields into account.
Previously, RegionStore was being VERY conservative in saying that because
p[i].x and p[i].y have a concrete base region of 'p', they might overlap.
Now, we check the chain of fields back up to the base object and check if
they match.

This only kicks in when dealing with symbolic offset regions because
RegionStore's "base+offset" representation of concrete offset regions loses
all information about fields. In cases where all offsets are concrete
(s.x and s.y), RegionStore will already do the right thing, but mixing
concrete and symbolic offsets can cause bindings to be invalidated that
are known to not overlap (e.g. p[0].x and p[i].y).
This additional refinement is tracked by <rdar://problem/12676180>.

<rdar://problem/12530149>

llvm-svn: 167654
2012-11-10 01:40:08 +00:00
..
INPUTS Revert 'Fix a typo 'iff' => 'if''. iff is an abreviation of if and only if. See: http://en.wikipedia.org/wiki/If_and_only_if Commit 164766 2012-09-27 10:16:10 +00:00
bindings [clang.py] Add Cursor.get_arguments() 2012-11-01 05:46:30 +00:00
docs Updates to user's manual and release notes for -fsanitize= options. 2012-11-06 19:23:14 +00:00
examples analyzer-plugin/MainCallChecker.cpp: Fixup corresponding to r167275. 2012-11-02 02:04:01 +00:00
include Diagnostic circular inheritance involving dependent base classes. We 2012-11-10 01:18:17 +00:00
lib [analyzer] When invalidating symbolic offset regions, take fields into account. 2012-11-10 01:40:08 +00:00
runtime Pass LLVM_ANDROID_TOOLCHAIN_DIR if set. 2012-10-24 14:05:29 +00:00
test [analyzer] When invalidating symbolic offset regions, take fields into account. 2012-11-10 01:40:08 +00:00
tools Force C89 for c-index-test.c 2012-11-07 23:52:25 +00:00
unittests Fix a source range regression in C++ new expressions with call initializers. 2012-11-08 22:53:48 +00:00
utils Remove leftover code. 2012-11-09 23:02:10 +00:00
www [analyzer] Check that the argument to CFMakeCollectable is non-NULL. 2012-11-07 17:12:37 +00:00
.gitignore Add extra vim swap file pattern 2012-10-09 23:48:58 +00:00
CMakeLists.txt CMake: Fix public header search for generating Xcode/MSVC projects. 2012-10-23 21:54:03 +00:00
INSTALL.txt
LICENSE.TXT
Makefile The top-level clang Makefile is #included into other Makefiles. (sigh) So we 2012-10-03 08:39:19 +00:00
ModuleInfo.txt
NOTES.txt Fix typo (test commit) 2012-10-18 15:24:46 +00:00
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/