[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