diff options
author | Roman Lebedev <lebedev.ri@gmail.com> | 2020-08-08 17:57:32 +0300 |
---|---|---|
committer | Roman Lebedev <lebedev.ri@gmail.com> | 2020-08-08 20:00:28 +0300 |
commit | e492f0e03b01a5e4ec4b6333abb02d303c3e479e (patch) | |
tree | 070fbdb3cffc005f25dbdc051a3da2f14aae6cf9 /llvm/unittests/Support/FileCheckTest.cpp | |
parent | 1f452ac1d784dbeba983aed7986827e3a7cd9c59 (diff) | |
download | llvm-e492f0e03b01a5e4ec4b6333abb02d303c3e479e.zip llvm-e492f0e03b01a5e4ec4b6333abb02d303c3e479e.tar.gz llvm-e492f0e03b01a5e4ec4b6333abb02d303c3e479e.tar.bz2 |
[SimplifyCFG] Fix invoke->call fold w/ multiple invokes in presence of lifetime intrinsics
SimplifyCFG has two main folds for resumes - one when resume is directly
using the landingpad, and the other one where resume is using a PHI node.
While for the first case, we were already correctly ignoring all the
PHI nodes, and both the debug info intrinsics and lifetime intrinsics,
in the PHI-based-one, we weren't ignoring PHI's in the resume block,
and weren't ignoring lifetime intrinsics. That is clearly a bug.
On RawSpeed library, this results in +9.34% (+81) more invoke->call folds,
-0.19% (-39) landing pads, -0.24% (-81) invoke instructions
but +51 call instructions and -132 basic blocks.
Though, the run-time performance impact appears to be within the noise.
Diffstat (limited to 'llvm/unittests/Support/FileCheckTest.cpp')
0 files changed, 0 insertions, 0 deletions