mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-17 21:29:20 +00:00
Fix PR212 - Bytecode reader misreads 'long -9223372036854775808'!
Fix testcase test/Regression/Assembler/2004-01-20-MaxLongLong.llx git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10928 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
78c146ffc5
commit
62f8bf0566
@ -59,9 +59,13 @@ namespace llvm {
|
|||||||
static inline int64_t read_vbr_int64(const unsigned char *&Buf,
|
static inline int64_t read_vbr_int64(const unsigned char *&Buf,
|
||||||
const unsigned char *EndBuf) {
|
const unsigned char *EndBuf) {
|
||||||
uint64_t R = read_vbr_uint64(Buf, EndBuf);
|
uint64_t R = read_vbr_uint64(Buf, EndBuf);
|
||||||
if (R & 1)
|
if (R & 1) {
|
||||||
|
if (R != 1)
|
||||||
return -(int64_t)(R >> 1);
|
return -(int64_t)(R >> 1);
|
||||||
else
|
else // There is no such thing as -0 with integers. "-0" really means
|
||||||
|
// 0x8000000000000000.
|
||||||
|
return 1LL << 63;
|
||||||
|
} else
|
||||||
return (int64_t)(R >> 1);
|
return (int64_t)(R >> 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user