re PR other/31778 (genattrtab.c doesn't record filename)
authorMike Stump <mikestump@comcast.net>
Mon, 12 May 2014 21:22:20 +0000 (21:22 +0000)
committerMike Stump <mrs@gcc.gnu.org>
Mon, 12 May 2014 21:22:20 +0000 (21:22 +0000)
        PR other/31778
        * genattrtab.c (filename): Add.
        (convert_set_attr_alternative): Improve error message.
(check_defs): Restore read_md_filename for error messages.
        (gen_insn): Save filename.

From-SVN: r210340

gcc/ChangeLog
gcc/genattrtab.c

index 8f87b69..9614470 100644 (file)
@@ -1,3 +1,11 @@
+2014-05-12  Mike Stump  <mikestump@comcast.net>
+
+       PR other/31778
+       * genattrtab.c (filename): Add.
+       (convert_set_attr_alternative): Improve error message.
+       (check_defs): Restore read_md_filename for error messages.
+       (gen_insn): Save filename.
+
 2014-05-12  Dimitris Papavasiliou  <dpapavas@gmail.com>
 
        * doc/invoke.texi: Document new switches -Wno-shadow-ivar,
index 99b1b83..0f14b4d 100644 (file)
@@ -139,6 +139,7 @@ struct insn_def
   rtx def;                     /* The DEFINE_...  */
   int insn_code;               /* Instruction number.  */
   int insn_index;              /* Expression number in file, for errors.  */
+  const char *filename;                /* Filename.  */
   int lineno;                  /* Line number.  */
   int num_alternatives;                /* Number of alternatives.  */
   int vec_idx;                 /* Index of attribute vector in `def'.  */
@@ -1066,7 +1067,8 @@ convert_set_attr_alternative (rtx exp, struct insn_def *id)
   if (XVECLEN (exp, 1) != num_alt)
     {
       error_with_line (id->lineno,
-                      "bad number of entries in SET_ATTR_ALTERNATIVE");
+                      "bad number of entries in SET_ATTR_ALTERNATIVE, was %d expected %d",
+                      XVECLEN (exp, 1), num_alt);
       return NULL_RTX;
     }
 
@@ -1137,6 +1139,7 @@ check_defs (void)
       if (XVEC (id->def, id->vec_idx) == NULL)
        continue;
 
+      read_md_filename = id->filename;
       for (i = 0; i < XVECLEN (id->def, id->vec_idx); i++)
        {
          value = XVECEXP (id->def, id->vec_idx, i);
@@ -3280,6 +3283,7 @@ gen_insn (rtx exp, int lineno)
   id->next = defs;
   defs = id;
   id->def = exp;
+  id->filename = read_md_filename;
   id->lineno = lineno;
 
   switch (GET_CODE (exp))