mirror of
https://github.com/intel/llvm.git
synced 2026-01-20 01:58:44 +08:00
[lldb] Fix UB in half2float and add some more tests.
The added DumpDataExtractorTest uncovered that this is lshifting a negative integer which upsets ubsan and breaks the sanitizer bot. This patch just changes the variable we shift to be unsigned and adds a bunch of tests to make sure this function does what it promises.
This commit is contained in:
@@ -52,7 +52,9 @@ static float half2float(uint16_t half) {
|
||||
float f;
|
||||
uint32_t u;
|
||||
} u;
|
||||
int32_t v = (int16_t)half;
|
||||
// Sign extend to 4 byte.
|
||||
int32_t sign_extended = static_cast<int16_t>(half);
|
||||
uint32_t v = static_cast<uint32_t>(sign_extended);
|
||||
|
||||
if (0 == (v & 0x7c00)) {
|
||||
u.u = v & 0x80007FFFU;
|
||||
|
||||
Reference in New Issue
Block a user