[llvm-commits] CVS: llvm/lib/AsmParser/Lexer.l

Chris Lattner lattner at cs.uiuc.edu
Sat Jan 8 12:04:11 PST 2005



Changes in directory llvm/lib/AsmParser:

Lexer.l updated: 1.57 -> 1.58
---
Log message:

Silence VS warnings.


---
Diffs of the changes:  (+9 -3)

Index: llvm/lib/AsmParser/Lexer.l
diff -u llvm/lib/AsmParser/Lexer.l:1.57 llvm/lib/AsmParser/Lexer.l:1.58
--- llvm/lib/AsmParser/Lexer.l:1.57	Thu Dec  9 23:40:19 2004
+++ llvm/lib/AsmParser/Lexer.l	Sat Jan  8 14:03:59 2005
@@ -107,7 +107,7 @@
   for (char *BIn = Buffer; *BIn; ) {
     if (BIn[0] == '\\' && isxdigit(BIn[1]) && isxdigit(BIn[2])) {
       char Tmp = BIn[3]; BIn[3] = 0;     // Terminate string
-      *BOut = strtol(BIn+1, 0, 16);  // Convert to number
+      *BOut = (char)strtol(BIn+1, 0, 16);  // Convert to number
       if (!AllowNull && !*BOut)
         ThrowException("String literal cannot accept \\00 escape!");
       
@@ -302,13 +302,19 @@
                    return yytext[0] == 's' ? ESINT64VAL : EUINT64VAL;
                  }
 
-{EPInteger}     { llvmAsmlval.UIntVal = atoull(yytext+1); return UINTVAL; }
+{EPInteger}     {
+                  uint64_t Val = atoull(yytext+1);
+                  if ((unsigned)Val != Val)
+                    ThrowException("Invalid value number (too large)!");
+                  llvmAsmlval.UIntVal = unsigned(Val);
+                  return UINTVAL;
+                }
 {ENInteger}     {
                   uint64_t Val = atoull(yytext+2);
 		  // +1:  we have bigger negative range
 		  if (Val > (uint64_t)INT32_MAX+1)
 		    ThrowException("Constant too large for signed 32 bits!");
-                  llvmAsmlval.SIntVal = -Val;
+                  llvmAsmlval.SIntVal = (int)-Val;
 		  return SINTVAL;
                 }
 






More information about the llvm-commits mailing list