aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/FrontendActions.cpp
diff options
context:
space:
mode:
authorAnna Zaks <ganna@apple.com>2012-01-04 23:54:01 +0000
committerAnna Zaks <ganna@apple.com>2012-01-04 23:54:01 +0000
commit8158ef0dec7e940c4e8dbe59ee688d1a044c7b95 (patch)
treecd66cdd5b2201760c07cfc7a2e08ea8fe4d714f0 /clang/lib/Frontend/FrontendActions.cpp
parent5acd9603da41e54d3d1a3a8f46cc196a7383eee5 (diff)
downloadllvm-8158ef0dec7e940c4e8dbe59ee688d1a044c7b95.zip
llvm-8158ef0dec7e940c4e8dbe59ee688d1a044c7b95.tar.gz
llvm-8158ef0dec7e940c4e8dbe59ee688d1a044c7b95.tar.bz2
[analyzer] Be less pessimistic about invalidation of global variables
as a result of a call. Problem: Global variables, which come in from system libraries should not be invalidated by all calls. Also, non-system globals should not be invalidated by system calls. Solution: The following solution to invalidation of globals seems flexible enough for taint (does not invalidate stdin) and should not lead to too many false positives. We split globals into 3 classes: * immutable - values are preserved by calls (unless the specific global is passed in as a parameter): A : Most system globals and const scalars * invalidated by functions defined in system headers: B: errno * invalidated by all other functions (note, these functions may in turn contain system calls): B: errno C: all other globals (which are not in A nor B) llvm-svn: 147569
Diffstat (limited to 'clang/lib/Frontend/FrontendActions.cpp')
0 files changed, 0 insertions, 0 deletions