aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2023-12-14 13:59:15 -0800
committerGitHub <noreply@github.com>2023-12-14 13:59:15 -0800
commit23ccb02c59d2ad6c1e8c79b7bf0e98c2afc36fb9 (patch)
tree4646faf4eb921f73b42853944969d6ba04b8afb6 /llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
parentf34325307eb36d6032ccea3773e3e0c1746b7f98 (diff)
downloadllvm-23ccb02c59d2ad6c1e8c79b7bf0e98c2afc36fb9.zip
llvm-23ccb02c59d2ad6c1e8c79b7bf0e98c2afc36fb9.tar.gz
llvm-23ccb02c59d2ad6c1e8c79b7bf0e98c2afc36fb9.tar.bz2
CodeGen: add a missing check for bit-slice overlap in CV (#75504)
Type dereferenced fragments are specified by offset and length in bits. The representation in CodeView is defined in terms of byte offsets. If the bit slice overlaps at a byte that is included, we would create invalid definition ranges. Consider the following scenario: ~~~ 01234567 01234567 ---------+--------- ==== ====== ~~~ Here bits 1-4 are marked as defined as well as bits 7-9. The byte range for the second portion overlaps and so we would say that bytes 1 and 2 are valid though there is potentially a hole. There is no way to represent this in the defined range for the local variable in CodeView. We simply can drop the fragment definition in such a scenario with the variables are "optimized out". Thanks to @rnk and @hjyamauchi for the discussion around this.
Diffstat (limited to 'llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp')
0 files changed, 0 insertions, 0 deletions