[PATCH] Try to include operand counts for mismatches in tablegen.
Tom Stellard
tom at stellard.net
Thu Dec 11 14:03:13 PST 2014
On Wed, Nov 12, 2014 at 12:03:51AM +0000, Matt Arsenault wrote:
> http://reviews.llvm.org/D6223
>
LGTM.
> Files:
> utils/TableGen/CodeGenDAGPatterns.cpp
> Index: utils/TableGen/CodeGenDAGPatterns.cpp
> ===================================================================
> --- utils/TableGen/CodeGenDAGPatterns.cpp
> +++ utils/TableGen/CodeGenDAGPatterns.cpp
> @@ -1539,6 +1539,22 @@
>
> return false;
> }
> +
> +static void emitTooManyOperandsError(TreePattern &TP,
> + StringRef InstName,
> + unsigned Expected,
> + unsigned Actual) {
> + TP.error("Instruction '" + InstName + "' was provided " + Twine(Actual) +
> + " operands but expected only " + Twine(Expected) + "!");
> +}
> +
> +static void emitTooFewOperandsError(TreePattern &TP,
> + StringRef InstName,
> + unsigned Actual) {
> + TP.error("Instruction '" + InstName +
> + "' expects more than the provided " + Twine(Actual) + " operands!");
> +}
> +
> /// ApplyTypeConstraints - Apply all of the type constraints relevant to
> /// this node and its children in the tree. This returns true if it makes a
> /// change, false otherwise. If a type contradiction is found, flag an error.
> @@ -1741,8 +1757,7 @@
>
> // Verify that we didn't run out of provided operands.
> if (ChildNo >= getNumChildren()) {
> - TP.error("Instruction '" + getOperator()->getName() +
> - "' expects more operands than were provided.");
> + emitTooFewOperandsError(TP, getOperator()->getName(), getNumChildren());
> return false;
> }
>
> @@ -1766,8 +1781,8 @@
> // And the remaining sub-operands against subsequent children.
> for (unsigned Arg = 1; Arg < NumArgs; ++Arg) {
> if (ChildNo >= getNumChildren()) {
> - TP.error("Instruction '" + getOperator()->getName() +
> - "' expects more operands than were provided.");
> + emitTooFewOperandsError(TP, getOperator()->getName(),
> + getNumChildren());
> return false;
> }
> Child = getChild(ChildNo++);
> @@ -1787,8 +1802,8 @@
> }
>
> if (!InstInfo.Operands.isVariadic && ChildNo != getNumChildren()) {
> - TP.error("Instruction '" + getOperator()->getName() +
> - "' was provided too many operands!");
> + emitTooManyOperandsError(TP, getOperator()->getName(),
> + ChildNo, getNumChildren());
> return false;
> }
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list