mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-27 14:45:50 +00:00
Fix a serious bug in the double constant reader. In particular, because
(At[3] << 24) is an int type and it is being coerced to uint64_t, it was getting sign extended, causing us to get FFFFFFFFxxxxxxxx constants all of the time. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15224 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a9d790c831
commit
1d78516c65
@ -175,7 +175,8 @@ inline void BytecodeReader::read_double(double& DoubleVal) {
|
||||
double d;
|
||||
uint64_t i;
|
||||
} DoubleUnion;
|
||||
DoubleUnion.i = At[0] | (At[1] << 8) | (At[2] << 16) | (At[3] << 24) |
|
||||
DoubleUnion.i = (uint64_t(At[0]) << 0) | (uint64_t(At[1]) << 8) |
|
||||
(uint64_t(At[2]) << 16) | (uint64_t(At[3]) << 24) |
|
||||
(uint64_t(At[4]) << 32) | (uint64_t(At[5]) << 40) |
|
||||
(uint64_t(At[6]) << 48) | (uint64_t(At[7]) << 56);
|
||||
At+=sizeof(uint64_t);
|
||||
|
Loading…
Reference in New Issue
Block a user