summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86FrameLowering.cpp
diff options
context:
space:
mode:
authorManuel Klimek <klimek@google.com>2014-08-07 10:42:17 +0000
committerManuel Klimek <klimek@google.com>2014-08-07 10:42:17 +0000
commitb5616c9f8d0b1e2efc91e791d5e3a10535161bb1 (patch)
tree98bcb017ee0af004b1f406b1aeb6e534281821bf /llvm/lib/Target/X86/X86FrameLowering.cpp
parent4e8fcbd3fd6f64d43dbebc6fa6b29dfa4143eddf (diff)
downloadbcm5719-llvm-b5616c9f8d0b1e2efc91e791d5e3a10535161bb1.tar.gz
bcm5719-llvm-b5616c9f8d0b1e2efc91e791d5e3a10535161bb1.zip
Re-applying r214962.
Changes to the original patch: - model the CFG for temporary destructors in conditional operators so that the destructors of the true and false branch are always exclusive. This is necessary because we must not have impossible paths for the path based analysis to work. - add multiple regression tests with ternary operators Original description: Fix modelling of non-lifetime-extended temporary destructors in the analyzer. Changes to the CFG: When creating the CFG for temporary destructors, we create a structure that mirrors the branch structure of the conditionally executed temporary constructors in a full expression. The branches we create use a CXXBindTemporaryExpr as terminator which corresponds to the temporary constructor which must have been executed to enter the destruction branch. 2. Changes to the Analyzer: When we visit a CXXBindTemporaryExpr we mark the CXXBindTemporaryExpr as executed in the state; when we reach a branch that contains the corresponding CXXBindTemporaryExpr as terminator, we branch out depending on whether the corresponding CXXBindTemporaryExpr was marked as executed. llvm-svn: 215096
Diffstat (limited to 'llvm/lib/Target/X86/X86FrameLowering.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud