@@ -94,6 +94,9 @@ static htab_t enum_types;
static void handle_file (directive_handler_t);
+/* For read_name: print a message if a number is non-symbolic. */
+int warn_if_non_symbolic_number;
+
/* Given an object that starts with a char * name field, return a hash
code for its name. */
@@ -450,6 +453,18 @@ read_name (struct md_name *name)
name->buffer[i] = 0;
name->string = name->buffer;
+ if (warn_if_non_symbolic_number)
+ {
+ const char *p = name->string;
+ while (*p && ISSPACE (*p))
+ p++;
+ if ((ISDIGIT (*p) || *p == '-' || *p == '+') && atoi (p) >= 32)
+ {
+ file_location loc (read_md_filename, read_md_lineno);
+ message_at (loc, "numeric constant %s is a plain number", p);
+ }
+ }
+
if (md_constants)
{
/* Do constant expansion. */
@@ -103,6 +103,9 @@ extern const char *read_md_filename;
extern struct obstack string_obstack;
extern void (*include_callback) (const char *);
+/* For read_name: print a message if a number is non-symbolic. */
+extern int warn_if_non_symbolic_number;
+
/* Read the next character from the MD file. */
static inline int
@@ -1311,7 +1311,9 @@ read_rtx_code (const char *code_name)
break;
case 'r':
+ warn_if_non_symbolic_number = 1;
read_name (&name);
+ warn_if_non_symbolic_number = 0;
validate_const_int (name.string);
set_regno_raw (return_rtx, atoi (name.string), 1);
REG_ATTRS (return_rtx) = NULL;