]> granicus.if.org Git - clang/commit
ProgramPoint:
authorTed Kremenek <kremenek@apple.com>
Tue, 16 Dec 2008 22:02:27 +0000 (22:02 +0000)
committerTed Kremenek <kremenek@apple.com>
Tue, 16 Dec 2008 22:02:27 +0000 (22:02 +0000)
commit8c354758c2d39db87c77c723d81e34b4d967f762
tree8dce26abb08e379017a229ec49091d4b122c9774
parent72b505b7904b3c9320a1312998800ba76e4f5841
ProgramPoint:
- Added four new ProgramPoint types that subclass PostStmt for use in
  GRExprEngine::EvalLocation:
  - PostOutOfBoundsCheckFailed
  - PostUndefLocationCheckFailed
  - PostNullCheckFailed
  - PostLocationChecksSucceed
  These were created because of a horribly subtle caching bug in EvalLocation
  where a node representing an "bug condition" in EvalLocation (e.g. a null
  dereference) could be re-used as the "non-bug condition" because the Store did
  not contain any information to differentiate between the two. The extra
  program points just disables any accidental caching between EvalLocation and
  its callers.

GRExprEngine:
- EvalLocation now returns a NodeTy* instead of GRState*.  This should be used as the "vetted" predecessor for EvalLoad/EvalStore.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61105 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Analysis/PathSensitive/GRExprEngine.h
include/clang/Analysis/ProgramPoint.h
lib/Analysis/GRExprEngine.cpp