[TableGen] Emit more helpful error messages on empty type set
authorAlex Richardson <Alexander.Richardson@cl.cam.ac.uk>
Wed, 31 Mar 2021 08:24:03 +0000 (09:24 +0100)
committerAlex Richardson <Alexander.Richardson@cl.cam.ac.uk>
Wed, 31 Mar 2021 08:24:03 +0000 (09:24 +0100)
I have seen this error quite frequently in our out-of-tree CHERI backends
and the lack of location information sometimes makes it quite difficult
to track down the actual source of the error.
This patch changes the llvm_unreachable() to a PrintFatalError() so that
tablegen prints a stack of source locations.

Reviewed By: craig.topper

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

llvm/utils/TableGen/CodeGenDAGPatterns.cpp

index 1b996f0..ce6e090 100644 (file)
@@ -846,7 +846,11 @@ TypeInfer::ValidateOnExit::~ValidateOnExit() {
               "(use -print-records with llvm-tblgen to see all "
               "expanded records).\n";
     Infer.TP.dump();
-    llvm_unreachable(nullptr);
+    dbgs() << "Generated from record:\n";
+    Infer.TP.getRecord()->dump();
+    PrintFatalError(Infer.TP.getRecord()->getLoc(),
+                    "Type set is empty for each HW mode in '" +
+                        Infer.TP.getRecord()->getName() + "'");
   }
 }
 #endif