diff options
author | DJ Delorie <dj@redhat.com> | 2004-12-23 15:21:08 -0500 |
---|---|---|
committer | DJ Delorie <dj@gcc.gnu.org> | 2004-12-23 15:21:08 -0500 |
commit | 603b6b8892e3b2ee00de59e728d0f1937306358b (patch) | |
tree | 45fdcfc18f2bc2f5830cf0b3c5a4ce6d0ff79394 /gcc/genrecog.c | |
parent | aae4a2774745b0d7b1007478b7f0624d2f053602 (diff) | |
download | gcc-603b6b8892e3b2ee00de59e728d0f1937306358b.zip gcc-603b6b8892e3b2ee00de59e728d0f1937306358b.tar.gz gcc-603b6b8892e3b2ee00de59e728d0f1937306358b.tar.bz2 |
genrecog.c (did_you_mean_codes): New.
* genrecog.c (did_you_mean_codes): New.
(compute_predicate_codes): Fail unmatched codes.
From-SVN: r92565
Diffstat (limited to 'gcc/genrecog.c')
-rw-r--r-- | gcc/genrecog.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/gcc/genrecog.c b/gcc/genrecog.c index 64cd905..2936f80 100644 --- a/gcc/genrecog.c +++ b/gcc/genrecog.c @@ -226,6 +226,9 @@ static int error_count; #define TRISTATE_NOT(a) \ ((a) == I ? I : !(a)) +/* 0 means no warning about that code yet, 1 means warned. */ +static char did_you_mean_codes[NUM_RTX_CODE]; + /* Recursively calculate the set of rtx codes accepted by the predicate expression EXP, writing the result to CODES. */ static void @@ -285,14 +288,30 @@ compute_predicate_codes (rtx exp, char codes[NUM_RTX_CODE]) while ((code = scan_comma_elt (&next_code)) != 0) { size_t n = next_code - code; + int found_it = 0; for (i = 0; i < NUM_RTX_CODE; i++) if (!strncmp (code, GET_RTX_NAME (i), n) && GET_RTX_NAME (i)[n] == '\0') { codes[i] = Y; + found_it = 1; break; } + if (!found_it) + { + message_with_line (pattern_lineno, "match_code \"%.*s\" matches nothing", n, code); + error_count ++; + for (i = 0; i < NUM_RTX_CODE; i++) + if (!strncasecmp (code, GET_RTX_NAME (i), n) + && GET_RTX_NAME (i)[n] == '\0' + && !did_you_mean_codes[i]) + { + did_you_mean_codes[i] = 1; + message_with_line (pattern_lineno, "(did you mean \"%s\"?)", GET_RTX_NAME (i)); + } + } + } } break; |