diff --git a/clang/utils/TableGen/RISCVVEmitter.cpp b/clang/utils/TableGen/RISCVVEmitter.cpp --- a/clang/utils/TableGen/RISCVVEmitter.cpp +++ b/clang/utils/TableGen/RISCVVEmitter.cpp @@ -19,6 +19,7 @@ #include "llvm/ADT/StringMap.h" #include "llvm/ADT/StringSet.h" #include "llvm/ADT/Twine.h" +#include "llvm/TableGen/Error.h" #include "llvm/TableGen/Record.h" using namespace llvm; @@ -535,7 +536,7 @@ ScalarType = ScalarTypeKind::Float; break; default: - llvm_unreachable("Unhandled type code!"); + PrintFatalError("Unhandled type code!"); } assert(ElementBitwidth != 0 && "Bad element bitwidth!"); } @@ -586,7 +587,7 @@ Scale = 0; break; default: - llvm_unreachable("Illegal primitive type transformers!"); + PrintFatalError("Illegal primitive type transformers!"); } Transformer = Transformer.drop_back(); @@ -594,9 +595,15 @@ for (char I : Transformer) { switch (I) { case 'P': + if (IsConstant) + PrintFatalError("'P' transformer cannot be used after 'C'"); + if (IsPointer) + PrintFatalError("'P' transformer cannot be used twice"); IsPointer = true; break; case 'C': + if (IsConstant) + PrintFatalError("'C' transformer cannot be used twice"); IsConstant = true; break; case 'K': @@ -613,11 +620,11 @@ break; case 'S': LMUL = LMULType(0); - // Update ElementBitwidth need ot update Scale too. + // Update ElementBitwidth need to update Scale too. Scale = LMUL.getScale(ElementBitwidth); break; default: - llvm_unreachable("Illegal non-primitive type transformer!"); + PrintFatalError("Illegal non-primitive type transformer!"); } } }