Make getRank abort for unranked type
authorGeoffrey Martin-Noble <gcmn@google.com>
Thu, 30 May 2019 18:01:17 +0000 (11:01 -0700)
committerMehdi Amini <joker.eph@gmail.com>
Sun, 2 Jun 2019 03:11:12 +0000 (20:11 -0700)
    This better matches the other methods in ShapedType which only make sense for ranked types. There's now an explicit hasRank for checking the rank. Actual call sites rarely used the "-1" sentinel to combine checking for rankedness and checking that rank is a certain value. And in most cases they should actually be checking for rankedness at a higher level using type predicates. Using an explicit method is clearer than a sentinel anyway.

--

PiperOrigin-RevId: 250720853

mlir/include/mlir/IR/StandardTypes.h
mlir/lib/IR/StandardTypes.cpp

index 867fb8d..ea88768 100644 (file)
@@ -199,7 +199,7 @@ public:
   /// If this is a ranked type, return the number of elements. Otherwise, abort.
   unsigned getNumElements() const;
 
-  /// If this is a ranked type, return the rank. Otherwise, return -1.
+  /// If this is a ranked type, return the rank. Otherwise, abort.
   int64_t getRank() const;
 
   /// Whether or not this is a ranked type. Vector and ranked tensors have a
index 300cec9..78a39de 100644 (file)
@@ -125,7 +125,8 @@ unsigned ShapedType::getNumElements() const {
 }
 
 int64_t ShapedType::getRank() const {
-  return hasRank() ? getShape().size() : -1;
+  assert(hasRank());
+  return getShape().size();
 }
 
 bool ShapedType::hasRank() const { return !isa<UnrankedTensorType>(); }