mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-26 21:32:10 +00:00
Fix bug: TableGen/BitsInitOverflow.td
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7524 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b77eb78afc
commit
d19c2cf5d2
@ -53,10 +53,19 @@ Init *BitsRecTy::convertValue(BitInit *UI) {
|
||||
//
|
||||
Init *BitsRecTy::convertValue(IntInit *II) {
|
||||
int Value = II->getValue();
|
||||
// Make sure this bitfield is large enough to hold the integer value...
|
||||
if (Value >= 0) {
|
||||
if (Value & ~((1 << Size)-1))
|
||||
return 0;
|
||||
} else {
|
||||
if ((Value >> Size) != -1 || ((Value & (1 << Size-1)) == 0))
|
||||
return 0;
|
||||
}
|
||||
|
||||
BitsInit *Ret = new BitsInit(Size);
|
||||
for (unsigned i = 0; i != Size; ++i)
|
||||
Ret->setBit(i, new BitInit(Value & (1 << i)));
|
||||
|
||||
return Ret;
|
||||
}
|
||||
|
||||
|
@ -53,10 +53,19 @@ Init *BitsRecTy::convertValue(BitInit *UI) {
|
||||
//
|
||||
Init *BitsRecTy::convertValue(IntInit *II) {
|
||||
int Value = II->getValue();
|
||||
// Make sure this bitfield is large enough to hold the integer value...
|
||||
if (Value >= 0) {
|
||||
if (Value & ~((1 << Size)-1))
|
||||
return 0;
|
||||
} else {
|
||||
if ((Value >> Size) != -1 || ((Value & (1 << Size-1)) == 0))
|
||||
return 0;
|
||||
}
|
||||
|
||||
BitsInit *Ret = new BitsInit(Size);
|
||||
for (unsigned i = 0; i != Size; ++i)
|
||||
Ret->setBit(i, new BitInit(Value & (1 << i)));
|
||||
|
||||
return Ret;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user