summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/expression_command/call-function/main.cpp
diff options
context:
space:
mode:
authorArtem Dergachev <artem.dergachev@gmail.com>2018-02-27 19:47:49 +0000
committerArtem Dergachev <artem.dergachev@gmail.com>2018-02-27 19:47:49 +0000
commit308e27ee9df861a219f62acb5452969fd161cecc (patch)
tree9a387f2a1119700777e9059243406727f1b21cb0 /lldb/packages/Python/lldbsuite/test/expression_command/call-function/main.cpp
parentca4a24eb72aab56419ec41970fc1880d8bf22638 (diff)
downloadbcm5719-llvm-308e27ee9df861a219f62acb5452969fd161cecc.tar.gz
bcm5719-llvm-308e27ee9df861a219f62acb5452969fd161cecc.zip
[analyzer] Introduce correct lifetime extension behavior in simple cases.
This patch uses the reference to MaterializeTemporaryExpr stored in the construction context since r326014 in order to model that expression correctly. When modeling MaterializeTemporaryExpr, instead of copying the raw memory contents from the sub-expression's rvalue to a completely new temporary region, that we conjure up for the lack of better options, we now have the better option to recall the region into which the object was originally constructed and declare that region to be the value of the expression, which is semantically correct. This only works when the construction context is available, which is worked on independently. The temporary region's liveness (in the sense of removeDeadBindings) is extended until the MaterializeTemporaryExpr is resolved, in order to keep the store bindings around, because it wouldn't be referenced from anywhere else in the program state. Differential Revision: https://reviews.llvm.org/D43497 llvm-svn: 326236
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/expression_command/call-function/main.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud