diff options
| author | David Spickett <david.spickett@linaro.org> | 2025-10-10 11:08:50 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-10 10:08:50 +0000 |
| commit | 6f1ce2b25b56d0fac317d93e7b59a22afbb54931 (patch) | |
| tree | fea403f1261c81f513c0b2e87d8d76e284148cb7 /lldb/source/Plugins/ScriptInterpreter/Python | |
| parent | 8ad5a217906db80c6d6502246b70947f26de9bbd (diff) | |
| download | llvm-6f1ce2b25b56d0fac317d93e7b59a22afbb54931.zip llvm-6f1ce2b25b56d0fac317d93e7b59a22afbb54931.tar.gz llvm-6f1ce2b25b56d0fac317d93e7b59a22afbb54931.tar.bz2 | |
[llvm][ADT] Fix uint64_t array BitSet construction on 32-bit systems (#162814)
When the underlying storage element is 32-bit, we may only need half of
the last value in the uint64_t array. I've adjusted the constructor to
account for that.
For example, if you construct a 65 bit bitset you will need both 32-bit
halves of the first array value but only the bottom half of the second
value. The storage will only have 3 elements, so attempting to assign
the top 32-bits into the storage will fail.
This happened on our buildbot:
https://lab.llvm.org/buildbot/#/builders/154/builds/22555
(though the traceback is not useful)
Then added tests for < 32 bit sizes, and assertions for the number of
elements we decide to use. Given that the only member of BitSet is a
std::array, I think the size will be consistent across systems.
Tested on 32 and 64-bit Arm machines.
Follow up to #162703.
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python')
0 files changed, 0 insertions, 0 deletions
