summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2013-02-14 19:06:11 +0000
committerJordan Rose <jordan_rose@apple.com>2013-02-14 19:06:11 +0000
commitba4a6d10e0d6cf703d4beedc57bdb5e30abf0181 (patch)
treec947f0c40e437aa01bf9bc22ee956fc0a884e771 /lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp
parente9bb18b555f954dd2128e4e5bf6f2ac8bd5f052b (diff)
downloadbcm5719-llvm-ba4a6d10e0d6cf703d4beedc57bdb5e30abf0181.tar.gz
bcm5719-llvm-ba4a6d10e0d6cf703d4beedc57bdb5e30abf0181.zip
[analyzer] Try constant-evaluation for all variables, not just globals.
In C++, constants captured by lambdas (and blocks) are not actually stored in the closure object, since they can be expanded at compile time. In this case, they will have no binding when we go to look them up. Previously, RegionStore thought they were uninitialized stack variables; now, it checks to see if they are a constant we know how to evaluate, using the same logic as r175026. This particular code path is only for scalar variables. Constant arrays and structs are still unfortunately unhandled; we'll need a stronger solution for those. This may have a small performance impact, but only for truly-undefined local variables, captures in a non-inlined block, and non-constant globals. Even then, in the non-constant case we're only doing a quick type check. <rdar://problem/13105553> llvm-svn: 175194
Diffstat (limited to 'lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud