[AArch64AsmParser] Fix type-limits warning for VectorIndex.
authorSander de Smalen <sander.desmalen@arm.com>
Mon, 8 Feb 2021 14:33:05 +0000 (14:33 +0000)
committerSander de Smalen <sander.desmalen@arm.com>
Mon, 8 Feb 2021 15:35:30 +0000 (15:35 +0000)
Making VectorIndex an `int` instead of `unsigned`, silences the warning:
  comparison of unsigned expression in ‘>= 0’ is always true

in:
  template <int Min, int Max>
  DiagnosticPredicate isVectorIndex() const {
    ...
    if (VectorIndex.Val >= Min && VectorIndex.Val <= Max)
      return DiagnosticPredicateTy::Match;
    ...
  }

when Min is 0.

llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp

index 96c50ff..037e24b 100644 (file)
@@ -379,7 +379,7 @@ private:
   };
 
   struct VectorIndexOp {
-    unsigned Val;
+    int Val;
   };
 
   struct ImmOp {
@@ -599,7 +599,7 @@ public:
     return VectorList.Count;
   }
 
-  unsigned getVectorIndex() const {
+  int getVectorIndex() const {
     assert(Kind == k_VectorIndex && "Invalid access!");
     return VectorIndex.Val;
   }
@@ -1931,7 +1931,7 @@ public:
   }
 
   static std::unique_ptr<AArch64Operand>
-  CreateVectorIndex(unsigned Idx, SMLoc S, SMLoc E, MCContext &Ctx) {
+  CreateVectorIndex(int Idx, SMLoc S, SMLoc E, MCContext &Ctx) {
     auto Op = std::make_unique<AArch64Operand>(k_VectorIndex, Ctx);
     Op->VectorIndex.Val = Idx;
     Op->StartLoc = S;