Skip to content

Commit 9773cad

Browse files
committed
[RISCV] Add additional checking to tablgen RISCVVEmitter requested in D95016.
This errors, but doesn't give source location. We'd need to pass the Record through several layers to get to the location. Reviewed By: jrtc27 Differential Revision: https://reviews.llvm.org/D98379
1 parent 85ae96d commit 9773cad

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

clang/utils/TableGen/RISCVVEmitter.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "llvm/ADT/StringMap.h"
2020
#include "llvm/ADT/StringSet.h"
2121
#include "llvm/ADT/Twine.h"
22+
#include "llvm/TableGen/Error.h"
2223
#include "llvm/TableGen/Record.h"
2324
#include <numeric>
2425

@@ -536,7 +537,7 @@ void RVVType::applyBasicType() {
536537
ScalarType = ScalarTypeKind::Float;
537538
break;
538539
default:
539-
llvm_unreachable("Unhandled type code!");
540+
PrintFatalError("Unhandled type code!");
540541
}
541542
assert(ElementBitwidth != 0 && "Bad element bitwidth!");
542543
}
@@ -587,17 +588,23 @@ void RVVType::applyModifier(StringRef Transformer) {
587588
Scale = 0;
588589
break;
589590
default:
590-
llvm_unreachable("Illegal primitive type transformers!");
591+
PrintFatalError("Illegal primitive type transformers!");
591592
}
592593
Transformer = Transformer.drop_back();
593594

594595
// Compute type transformers
595596
for (char I : Transformer) {
596597
switch (I) {
597598
case 'P':
599+
if (IsConstant)
600+
PrintFatalError("'P' transformer cannot be used after 'C'");
601+
if (IsPointer)
602+
PrintFatalError("'P' transformer cannot be used twice");
598603
IsPointer = true;
599604
break;
600605
case 'C':
606+
if (IsConstant)
607+
PrintFatalError("'C' transformer cannot be used twice");
601608
IsConstant = true;
602609
break;
603610
case 'K':
@@ -614,11 +621,11 @@ void RVVType::applyModifier(StringRef Transformer) {
614621
break;
615622
case 'S':
616623
LMUL = LMULType(0);
617-
// Update ElementBitwidth need ot update Scale too.
624+
// Update ElementBitwidth need to update Scale too.
618625
Scale = LMUL.getScale(ElementBitwidth);
619626
break;
620627
default:
621-
llvm_unreachable("Illegal non-primitive type transformer!");
628+
PrintFatalError("Illegal non-primitive type transformer!");
622629
}
623630
}
624631
}

0 commit comments

Comments
 (0)