diff options
| author | Jeremy Morse <jeremy.morse.llvm@gmail.com> | 2019-08-16 10:04:17 +0000 |
|---|---|---|
| committer | Jeremy Morse <jeremy.morse.llvm@gmail.com> | 2019-08-16 10:04:17 +0000 |
| commit | 8b593480d33f8e8f5c4ec1f921a2c692bd0b7f45 (patch) | |
| tree | 741faaa26c7e9e099459d1dc1d852670ccf3c9b5 /clang/lib/Basic | |
| parent | 22970d66be7856693ea56e7395909351d0885e57 (diff) | |
| download | bcm5719-llvm-8b593480d33f8e8f5c4ec1f921a2c692bd0b7f45.tar.gz bcm5719-llvm-8b593480d33f8e8f5c4ec1f921a2c692bd0b7f45.zip | |
[DebugInfo] Handle complex expressions with spills in LiveDebugValues
In r369026 we disabled spill-recognition in LiveDebugValues for anything
that has a complex expression. This is because it's hard to recover the
complex expression once the spill location is baked into it.
This patch re-enables spill-recognition and slightly adjusts the DBG_VALUE
insts that LiveDebugValues tracks: instead of tracking the last DBG_VALUE
for a variable, it tracks the last _unspilt_ DBG_VALUE. The spill-restore
code is then able to access and copy the original complex expression; but
the rest of LiveDebugValues has to be aware of the slight semantic shift,
and produce a new spilt location if a spilt location is propagated between
blocks.
The test added produces an incorrect variable location (see FIXME), which
will be the subject of future work.
Differential Revision: https://reviews.llvm.org/D65368
llvm-svn: 369092
Diffstat (limited to 'clang/lib/Basic')
0 files changed, 0 insertions, 0 deletions

