]> granicus.if.org Git - clang/commit
Reapply "[analyzer] Remove constraints on dead symbols as part of removeDeadBindings."
authorJordan Rose <jordan_rose@apple.com>
Tue, 25 Sep 2012 19:03:06 +0000 (19:03 +0000)
committerJordan Rose <jordan_rose@apple.com>
Tue, 25 Sep 2012 19:03:06 +0000 (19:03 +0000)
commit0073a5c7ce38e98365c00921316030627b3d129f
treeb5d729236bb901d9a6003035dd66004b324e45e1
parent6e3bf21f20d4d744fdf5acd719e9f442f4a144fc
Reapply "[analyzer] Remove constraints on dead symbols as part of removeDeadBindings."

Previously, we'd just keep constraints around forever, which means we'd
never be able to merge paths that differed only in constraints on dead
symbols.

Because we now allow constraints on symbolic expressions, not just single
symbols, this requires changing SymExpr::symbol_iterator to include
intermediate symbol nodes in its traversal, not just the SymbolData leaf
nodes.

This depends on the previous commit to be correct. Originally applied in
r163444, reverted in r164275, now being re-applied.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164622 91177308-0d34-0410-b5e6-96231b3b80d8
lib/StaticAnalyzer/Core/ProgramState.cpp
lib/StaticAnalyzer/Core/SymbolManager.cpp
test/Analysis/traversal-path-unification.c [new file with mode: 0644]