[PATCH] D41778: Improve diagnostics for instruction mapping

Simon Dardis via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Jan 6 09:20:21 PST 2018


sdardis accepted this revision.
sdardis added a comment.
This revision is now accepted and ready to land.

Some small nits inlined, otherwise LGTM. Please wait a few working days to let others chime in if they have suggestions before committing.



================
Comment at: test/TableGen/RelTest.td:3
+
+include "llvm/Target/Target.td"
+
----------------
Add a brief description of the purpose of this test. 


================
Comment at: utils/TableGen/CodeGenMapTable.cpp:246
     for (Init *RowField : RowFields->getValues()) {
-      Init *CurInstrVal = CurInstr->getValue(RowField)->getValue();
+      RecordVal *recVal = CurInstr->getValue(RowField);
+      if (recVal == nullptr)
----------------
recVal -> RecVal.


================
Comment at: utils/TableGen/CodeGenMapTable.cpp:248
+      if (recVal == nullptr)
+        PrintFatalError("No value " + RowField->getAsString() + " found in \"" +
+                        CurInstr->getName() + "\" instruction description.");
----------------
I believe you should use the overloaded variant of PrintFatalError that takes a source location of a record. i.e:

        PrintFatalError(CurInstr->getLoc(), "No value " + RowField->getAsString() + " found in \"" +
                        CurInstr->getName() + "\" instruction description.");


This gives the following error message:

   /Users/simon/dev/llvm/llvm/test/TableGen/RelTest.td:34:1: error: No value "BaseName" found in "SimpleInstr" instruction description.
   def SimpleInstr : SimpleRel, INSTR_DEF;
   ^

Which is a better in my opinion as directly points to the record which lacks the named value.


Repository:
  rL LLVM

https://reviews.llvm.org/D41778





More information about the llvm-commits mailing list