Use a simpler constructor when constructing ConstantInt. Also, replace
authorReid Spencer <rspencer@reidspencer.com>
Thu, 1 Mar 2007 19:32:01 +0000 (19:32 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Thu, 1 Mar 2007 19:32:01 +0000 (19:32 +0000)
verbose code to sext/trunc or zext/trunc and APInt with new methods on
that class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34794 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AsmParser/llvmAsmParser.y

index e70f25a7cf5a04cec08b9f0f7df27056a0ec70b8..1af8fda49c6130a253dd1cc66ffe33f0d9b58e76 100644 (file)
@@ -1713,22 +1713,17 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr
       GEN_ERROR("Constant value doesn't fit in type");
     APInt Val(64, $2);
     uint32_t BitWidth = cast<IntegerType>($1)->getBitWidth();
-    if (BitWidth > 64)
-      Val.sext(BitWidth);
-    else if (BitWidth < 64)
-      Val.trunc(BitWidth);
-    $$ = ConstantInt::get($1, Val);
+    Val.sextOrTrunc(BitWidth);
+    $$ = ConstantInt::get(Val);
     CHECK_FOR_ERROR
   }
   | IntType ESAPINTVAL {      // arbitrary precision integer constants
     uint32_t BitWidth = cast<IntegerType>($1)->getBitWidth();
     if ($2->getBitWidth() > BitWidth) {
       GEN_ERROR("Constant value does not fit in type");
-    } else if ($2->getBitWidth() < BitWidth)
-      $2->sext(BitWidth);
-    else if ($2->getBitWidth() > BitWidth)
-      $2->trunc(BitWidth);
-    $$ = ConstantInt::get($1, *$2);
+    }
+    $2->sextOrTrunc(BitWidth);
+    $$ = ConstantInt::get(*$2);
     delete $2;
     CHECK_FOR_ERROR
   }
@@ -1737,18 +1732,16 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr
       GEN_ERROR("Constant value doesn't fit in type");
     uint32_t BitWidth = cast<IntegerType>($1)->getBitWidth();
     APInt Val(BitWidth, $2);
-    $$ = ConstantInt::get($1, Val);
+    $$ = ConstantInt::get(Val);
     CHECK_FOR_ERROR
   }
   | IntType EUAPINTVAL {      // arbitrary precision integer constants
     uint32_t BitWidth = cast<IntegerType>($1)->getBitWidth();
     if ($2->getBitWidth() > BitWidth) {
       GEN_ERROR("Constant value does not fit in type");
-    } else if ($2->getBitWidth() < BitWidth)
-      $2->zext(BitWidth);
-    else if ($2->getBitWidth() > BitWidth)
-      $2->trunc(BitWidth);
-    $$ = ConstantInt::get($1, *$2);
+    } 
+    $2->zextOrTrunc(BitWidth);
+    $$ = ConstantInt::get(*$2);
     delete $2;
     CHECK_FOR_ERROR
   }