[SVE] Fix unsigned is always >= 0
authorChristopher Tetreault <ctetreau@quicinc.com>
Wed, 15 Apr 2020 22:16:17 +0000 (15:16 -0700)
committerChristopher Tetreault <ctetreau@quicinc.com>
Wed, 15 Apr 2020 22:23:49 +0000 (15:23 -0700)
Reviewers: efriedma, sdesmalen

Reviewed By: sdesmalen

Subscribers: tschuett, rkruppe, psnobl, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D78131

clang/utils/TableGen/SveEmitter.cpp

index 5f9f5d5..79258a8 100644 (file)
@@ -801,9 +801,10 @@ void SVEEmitter::createIntrinsic(
     // Collate a list of range/option checks for the immediates.
     SmallVector<ImmCheck, 2> ImmChecks;
     for (auto *R : ImmCheckList) {
-      unsigned Arg = R->getValueAsInt("Arg");
-      unsigned EltSizeArg = R->getValueAsInt("EltSizeArg");
-      unsigned Kind = R->getValueAsDef("Kind")->getValueAsInt("Value");
+      int64_t Arg = R->getValueAsInt("Arg");
+      int64_t EltSizeArg = R->getValueAsInt("EltSizeArg");
+      int64_t Kind = R->getValueAsDef("Kind")->getValueAsInt("Value");
+      assert(Arg >= 0 && Kind >= 0 && "Arg and Kind must be nonnegative");
 
       unsigned ElementSizeInBits = 0;
       if (EltSizeArg >= 0)