diff options
author | Richard Sandiford <richard.sandiford@linaro.org> | 2011-08-11 08:25:41 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2011-08-11 08:25:41 +0000 |
commit | f9bf5a8e96ec9c6f04877a0c4922201d80b80a6e (patch) | |
tree | fcc79dff36759b0668e8d8f0629a52b95e1330eb /gcc/genattrtab.c | |
parent | 7ece388150bbbfb0c946b28efa43ad1eeb2f0bf8 (diff) | |
download | gcc-f9bf5a8e96ec9c6f04877a0c4922201d80b80a6e.zip gcc-f9bf5a8e96ec9c6f04877a0c4922201d80b80a6e.tar.gz gcc-f9bf5a8e96ec9c6f04877a0c4922201d80b80a6e.tar.bz2 |
md.texi (define_bypass): Say that the instruction names can be filename-style globs.
gcc/
* doc/md.texi (define_bypass): Say that the instruction names can
be filename-style globs.
* Makefile.in (FNMATCH_H): Define.
(build/genattrtab.o, build/genautomata.o): Depend on $(FNMATCH_H).
* genattrtab.c: Include fnmatch.h.
(bypass_list): Change field name from "insn" to "pattern".
(gen_bypass_1): Update accordingly.
(process_bypasses): Use fnmatch to check for matches between
insn reservations and define_bypasses.
* genautomata.c: Include fnmatch.h.
(bypass_decl): Rename in_insn_name and out_insn_name to in_pattern
and out_pattern respectively.
(gen_bypass, insert_bypass): Update accordingly.
(for_each_matching_insn, process_bypass_2, process_bypass_1)
(process_bypass): New functions.
(process_decls): Use process_bypass. Update after field name changes.
From-SVN: r177649
Diffstat (limited to 'gcc/genattrtab.c')
-rw-r--r-- | gcc/genattrtab.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/genattrtab.c b/gcc/genattrtab.c index e927ca2..a3da978 100644 --- a/gcc/genattrtab.c +++ b/gcc/genattrtab.c @@ -114,6 +114,7 @@ along with GCC; see the file COPYING3. If not see #include "read-md.h" #include "gensupport.h" #include "vecprim.h" +#include "fnmatch.h" /* Flags for make_internal_attr's `special' parameter. */ #define ATTR_NONE 0 @@ -4553,7 +4554,7 @@ gen_insn_reserv (rtx def) struct bypass_list { struct bypass_list *next; - const char *insn; + const char *pattern; }; static struct bypass_list *all_bypasses; @@ -4569,11 +4570,11 @@ gen_bypass_1 (const char *s, size_t len) s = attr_string (s, len); for (b = all_bypasses; b; b = b->next) - if (s == b->insn) + if (s == b->pattern) return; /* already got that one */ b = oballoc (struct bypass_list); - b->insn = s; + b->pattern = s; b->next = all_bypasses; all_bypasses = b; n_bypasses++; @@ -4607,7 +4608,7 @@ process_bypasses (void) list. */ for (r = all_insn_reservs; r; r = r->next) for (b = all_bypasses; b; b = b->next) - if (r->name == b->insn) + if (fnmatch (b->pattern, r->name, 0) == 0) r->bypassed = true; } |