aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Object/Object.cpp
diff options
context:
space:
mode:
authorArtem Dergachev <artem.dergachev@gmail.com>2018-02-15 03:26:43 +0000
committerArtem Dergachev <artem.dergachev@gmail.com>2018-02-15 03:26:43 +0000
commit9af0ed4aeb7abb9a2dc262f380e48387de4cff43 (patch)
tree539527b4f5c91e980fe30bb51c33318d3dbfe516 /llvm/lib/Object/Object.cpp
parent1f68d9d39ea3c095063d5bab0f13c28bff367c79 (diff)
downloadllvm-9af0ed4aeb7abb9a2dc262f380e48387de4cff43.zip
llvm-9af0ed4aeb7abb9a2dc262f380e48387de4cff43.tar.gz
llvm-9af0ed4aeb7abb9a2dc262f380e48387de4cff43.tar.bz2
[analyzer] Inline constructors for destroyable temporaries.
Since r325210, in cfg-temporary-dtors mode, we can rely on the CFG to tell us that we're indeed constructing a temporary, so we can trivially construct a temporary region and inline the constructor. Much like r325202, this is only done under the off-by-default cfg-temporary-dtors flag because the temporary destructor, even if available, will not be inlined and won't have the correct object value (target region). Unless this is fixed, it is quite unsafe to inline the constructor. If the temporary is lifetime-extended, the destructor would be an automatic destructor, which would be evaluated with a "correct" target region - modulo the series of incorrect relocations performed during the lifetime extension. It means that at least, values within the object are guaranteed to be properly escaped or invalidated. Differential Revision: https://reviews.llvm.org/D43062 llvm-svn: 325211
Diffstat (limited to 'llvm/lib/Object/Object.cpp')
0 files changed, 0 insertions, 0 deletions