Changes in directory llvm/lib/AsmParser:
llvmAsmParser.y updated: 1.289 -> 1.290 --- Log message: Allow negative constants for unsigned integers and unsigned constants greater than MAX_INT64 for signed integers. This is now valid and is just waiting for the distinction between signed and unsigned to go away. --- Diffs of the changes: (+13 -11) llvmAsmParser.y | 24 +++++++++++++----------- 1 files changed, 13 insertions(+), 11 deletions(-) Index: llvm/lib/AsmParser/llvmAsmParser.y diff -u llvm/lib/AsmParser/llvmAsmParser.y:1.289 llvm/lib/AsmParser/llvmAsmParser.y:1.290 --- llvm/lib/AsmParser/llvmAsmParser.y:1.289 Fri Dec 8 12:06:15 2006 +++ llvm/lib/AsmParser/llvmAsmParser.y Wed Dec 20 11:20:09 2006 @@ -926,7 +926,6 @@ // EUINT64VAL - A positive number within uns. long long range %token <UInt64Val> EUINT64VAL -%type <SInt64Val> EINT64VAL %token <SIntVal> SINTVAL // Signed 32 bit ints... %token <UIntVal> UINTVAL // Unsigned 32 bit ints... @@ -995,15 +994,6 @@ CHECK_FOR_ERROR }; - -EINT64VAL : ESINT64VAL; // These have same type and can't cause problems... -EINT64VAL : EUINT64VAL { - if ($1 > (uint64_t)INT64_MAX) // Outside of my range! - GEN_ERROR("Value too large for type!"); - $$ = (int64_t)$1; - CHECK_FOR_ERROR -}; - // Operations that are notably excluded from this list include: // RET, BR, & SWITCH because they end basic blocks and are treated specially. // @@ -1486,7 +1476,13 @@ delete $1; CHECK_FOR_ERROR } - | SIntType EINT64VAL { // integral constants + | SIntType ESINT64VAL { // integral constants + if (!ConstantInt::isValueValidForType($1, $2)) + GEN_ERROR("Constant value doesn't fit in type!"); + $$ = ConstantInt::get($1, $2); + CHECK_FOR_ERROR + } + | SIntType EUINT64VAL { // integral constants if (!ConstantInt::isValueValidForType($1, $2)) GEN_ERROR("Constant value doesn't fit in type!"); $$ = ConstantInt::get($1, $2); @@ -1498,6 +1494,12 @@ $$ = ConstantInt::get($1, $2); CHECK_FOR_ERROR } + | UIntType ESINT64VAL { + if (!ConstantInt::isValueValidForType($1, $2)) + GEN_ERROR("Constant value doesn't fit in type!"); + $$ = ConstantInt::get($1, $2); + CHECK_FOR_ERROR + } | BOOL TRUETOK { // Boolean constants $$ = ConstantBool::getTrue(); CHECK_FOR_ERROR _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits