From 040c6a6708a63ab1473919d6224cf6f1c8180815 Mon Sep 17 00:00:00 2001 From: Pete Cooper Date: Thu, 31 Jul 2014 01:43:57 +0000 Subject: [PATCH] Add a better error message when failing to assign one tablegen value to another This is currently for assigning from one bit init to another. It can easily be extended to other types. Test to follow soon in another patch. llvm-svn: 214374 --- llvm/lib/TableGen/TGParser.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/llvm/lib/TableGen/TGParser.cpp b/llvm/lib/TableGen/TGParser.cpp index 0550692..5493248 100644 --- a/llvm/lib/TableGen/TGParser.cpp +++ b/llvm/lib/TableGen/TGParser.cpp @@ -135,11 +135,18 @@ bool TGParser::SetValue(Record *CurRec, SMLoc Loc, Init *ValName, V = BitsInit::get(NewBits); } - if (RV->setValue(V)) + if (RV->setValue(V)) { + std::string InitType = ""; + if (BitsInit *BI = dyn_cast(V)) { + InitType = (Twine("' of type bit initializer with length ") + + Twine(BI->getNumBits())).str(); + } return Error(Loc, "Value '" + ValName->getAsUnquotedString() + "' of type '" + RV->getType()->getAsString() + "' is incompatible with initializer '" + V->getAsString() + + InitType + "'"); + } return false; } -- 2.7.4