aboutsummaryrefslogtreecommitdiff
path: root/gcc/genattrtab.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@linaro.org>2011-08-11 08:25:41 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2011-08-11 08:25:41 +0000
commitf9bf5a8e96ec9c6f04877a0c4922201d80b80a6e (patch)
treefcc79dff36759b0668e8d8f0629a52b95e1330eb /gcc/genattrtab.c
parent7ece388150bbbfb0c946b28efa43ad1eeb2f0bf8 (diff)
downloadgcc-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.c9
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;
}