diff options
author | Jeremy Morse <jeremy.morse@sony.com> | 2022-04-27 09:40:31 +0100 |
---|---|---|
committer | Jeremy Morse <jeremy.morse@sony.com> | 2022-04-27 09:54:50 +0100 |
commit | a15b66e76d1ecff625a4bbb4a46ff83a43138f49 (patch) | |
tree | 9fa88d232504a616028cea89f22b35449d3383d4 /flang/lib/Frontend/CompilerInvocation.cpp | |
parent | 4a8c13a6f42e9c58af64421790509cc58208859b (diff) | |
download | llvm-a15b66e76d1ecff625a4bbb4a46ff83a43138f49.zip llvm-a15b66e76d1ecff625a4bbb4a46ff83a43138f49.tar.gz llvm-a15b66e76d1ecff625a4bbb4a46ff83a43138f49.tar.bz2 |
[DebugInfo][InstrRef] Describe value sizes when spilt to stack
InstrRefBasedLDV can track and describe variable values that are spilt to
the stack -- however it does not current describe the size of the value on
the stack. This can cause uninitialized bytes to be read from the stack if
a small register is spilt for a larger variable, or theoretically on
big-endian machines if a large value on the stack is used for a small
variable.
Fix this by using DW_OP_deref_size to specify the amount of data to load
from the stack, if there's any possibility for ambiguity. There are a few
scenarios where this can be omitted (such as when using DW_OP_piece and a
non-DW_OP_stack_value location), see deref-spills-with-size.mir for an
explicit table of inputs flavours and output expressions.
Differential Revision: https://reviews.llvm.org/D123599
Diffstat (limited to 'flang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions