]> granicus.if.org Git - clang/commit
[analyzer] Don't invalidate globals when there's no call involved.
authorJordan Rose <jordan_rose@apple.com>
Wed, 20 Mar 2013 20:36:01 +0000 (20:36 +0000)
committerJordan Rose <jordan_rose@apple.com>
Wed, 20 Mar 2013 20:36:01 +0000 (20:36 +0000)
commitf8e2c06cea1548c437761cb65cfbf97d50a057a7
tree0c1705965385e119ef57f931d76739b565772b06
parent74f6982232c25ae723b1cc5abc59665a10867f21
[analyzer] Don't invalidate globals when there's no call involved.

This fixes some mistaken condition logic in RegionStore that caused
global variables to be invalidated when /any/ region was invalidated,
rather than only as part of opaque function calls. This was only
being used by CStringChecker, and so users will now see that strcpy()
and friends do not invalidate global variables.

Also, add a test case we don't handle properly: explicitly-assigned
global variables aren't being invalidated by opaque calls. This is
being tracked by <rdar://problem/13464044>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177572 91177308-0d34-0410-b5e6-96231b3b80d8
lib/StaticAnalyzer/Core/RegionStore.cpp
test/Analysis/global_region_invalidation.mm
test/Analysis/string.c