summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ExecutionEngine/JIT/JITMemoryManager.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2013-05-17 09:41:40 +0000
committerTed Kremenek <kremenek@apple.com>2013-05-17 09:41:40 +0000
commit35de14540f1c7d4743483f90aab791cbe515b4bb (patch)
tree3b9052d3c077643e2cd8fe8f894078ae7b51a313 /llvm/lib/ExecutionEngine/JIT/JITMemoryManager.cpp
parent473c62c4850ffbf8615e0937c4bd292a12225180 (diff)
downloadbcm5719-llvm-35de14540f1c7d4743483f90aab791cbe515b4bb.tar.gz
bcm5719-llvm-35de14540f1c7d4743483f90aab791cbe515b4bb.zip
[analyzer; alternate edges] improve support for edges with PseudoObjectExprs.
This optimizes some spurious edges resulting from PseudoObjectExprs. This required far more changes than I anticipated. The current ParentMap does not record any hierarchy information between a PseudoObjectExpr and its *semantic* expressions that may be wrapped in OpaqueValueExprs, which are the expressions actually laid out in the CFG. This means the arrow pruning logic could not map from an expression to its containing PseudoObjectExprs. To solve this, this patch adds a variant of ParentMap that returns the "semantic" parentage of expressions (essentially as they are viewed by the CFG). This alternate ParentMap is then used by the arrow reducing logic to identify edges into pseudo object expressions, and then eliminate them. llvm-svn: 182083
Diffstat (limited to 'llvm/lib/ExecutionEngine/JIT/JITMemoryManager.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud