TableGen/CodeEmitterGen.cpp: Fix an expression of generating bitmask.
authorNAKAMURA Takumi <geek4civic@gmail.com>
Fri, 9 Mar 2012 14:52:44 +0000 (14:52 +0000)
committerNAKAMURA Takumi <geek4civic@gmail.com>
Fri, 9 Mar 2012 14:52:44 +0000 (14:52 +0000)
~0U might be i32 on 32-bit hosts, then (uint64_t)~0U might not be expected as (i64)0xFFFFFFFF_FFFFFFFF, but as (i64)0x00000000_FFFFFFFF.

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

utils/TableGen/CodeEmitterGen.cpp

index 91d8446bc8ee56fc6be1b980e526612b0b2e4fe3..3943e8a40f87d33ec280d797a2e6379bc5b7cebc 100644 (file)
@@ -163,7 +163,7 @@ AddCodeToMergeInOperand(Record *R, BitsInit *BI, const std::string &VarName,
       --bit;
     }
      
-    uint64_t opMask = ~0U >> (64-N);
+    uint64_t opMask = ~(uint64_t)0 >> (64-N);
     int opShift = beginVarBit - N + 1;
     opMask <<= opShift;
     opShift = beginInstBit - beginVarBit;