diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2015-07-16 13:52:22 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2015-07-16 13:52:22 +0000 |
commit | 5d2d3e43b917f87ce4e8378076888dd03e4c7cc2 (patch) | |
tree | 9d8586f4a5e07a89b18a2e4fb2c2f801fafb90b8 /gcc/genattr.c | |
parent | c9f84f2e1d697a8d6a6e696bd26933ca4a858da0 (diff) | |
download | gcc-5d2d3e43b917f87ce4e8378076888dd03e4c7cc2.zip gcc-5d2d3e43b917f87ce4e8378076888dd03e4c7cc2.tar.gz gcc-5d2d3e43b917f87ce4e8378076888dd03e4c7cc2.tar.bz2 |
read-md.h (message_with_line, [...]): Delete.
gcc/
* read-md.h (message_with_line, error_with_line): Delete.
* read-md.c (message_with_line, error_with_line): Delete.
* gensupport.h: Include read-md.h.
(md_rtx_info): New structure.
(read_md_rtx): Use it. Return a bool success value.
* gensupport.c (read_md_rtx): Likewise.
* genattr-common.c (gen_attr): Take an md_rtx_info rather than an rtx.
(main): Update after interface changes.
* genattr.c (gen_attr): Take an md_rtx_info rather than an rtx.
(main): Update after interface changes.
* genattrtab.c (insn_code_number): Delete.
(optimize_attrs): Add a max_insn_code parameter and use it instead
of insn_code_number.
(gen_attr): Take an md_rtx_info rather than an rtx and lineno.
Use *_at rather than *_with_line functions.
(gen_insn): Likewise.
(gen_delay): Likewise.
(gen_insn_reserv): Likewise.
(gen_bypass): Take an md_rtx_info rather than an rtx.
(main): Update after interface changes. Use a local max_insn_code
variable instead of insn_code_number.
* genautomata.c (gen_cpu_unit): Take an md_rtx_info rather than
an rtx. Use fatal_at rather than fatal.
(gen_query_cpu_unit, gen_bypass, gen_excl_set)
(gen_presence_absence_set, gen_presence_set, gen_final_presence_set)
(gen_absence_set, gen_final_absence_set, gen_automaton)
(gen_automata_option, gen_reserv, gen_insn_reserv): Likewise.
(main): Update after interface changes.
* gencodes.c (gen_insn): Take an md_rtx_info rather than an rtx
and code number.
(main): Update after interface changes.
* genconditions.c (main): Use new read_md_rtx interface.
* genconfig.c (gen_insn): Take an md_rtx_info rather than an rtx.
(gen_expand, gen_split, gen_peephole, gen_peephole2): Likewise.
(main): Update after interface changes.
* genemit.c (insn_code_number, insn_index_number): Delete.
(gen_insn): Take an md_rtx_info rather than an rtx and lineno.
Use fatal_at rather than fatal.
(gen_expand): Take an md_rtx_info rather than an rtx. Use fatal_at
rather than fatal.
(gen_split): Likewise.
(main): Update after interface changes.
* genextract.c (line_no): Delete.
(gen_insn): Take an md_rtx_info rather than an rtx and lineno.
Update call to walk_rtx.
(VEC_safe_set_locstr): Add an md_rtx_info argument. Use message_at
rather than message_with_line.
(walk_rtx): Add an md_rtx_info argument. Update call to
VEC_safe_set_locstr.
(main): Update after interface changes.
* genflags.c (gen_insn): Take an md_rtx_info rather than an rtx
and lineno. Use error_at rather than separate message_with_line
calls and have_error assignments.
(main): Update after interface changes.
* genmddump.c (main): Use new read_md_rtx interface.
* genopinit.c (insn): Take an md_rtx_info rather than an rtx.
(main): Update after interface changes.
* genoutput.c (next_code_number): Delete.
(gen_insn): Take an md_rtx_info rather than an rtx and lineno.
(gen_peephole, gen_expand, gen_split): Likewise.
(note_constraint): Likewise. Use *_at rather than *_with_line
functions.
(main): Update after interface changes.
* genpeep.c (gen_peephole): Take an md_rtx_info rather than an
rtx and lineno.
(main): Update after interface changes.
* genpreds.c (process_define_predicate): Take an md_rtx_info rather
than an rtx and lineno.
(process_define_constraint): Likewise.
(process_define_register_constraint): Likewise.
(main): Update after interface changes.
* genrecog.c (next_insn_code, pattern_lineno): Delete.
(validate_pattern): Replace top-level rtx with an md_rtx_info.
Use *_at rather than *_with_line functions.
(match_pattern_2): Likewise.
(match_pattern_1, match_pattern): Add an md_rtx_info parameter.
(get_peephole2_pattern): Take an md_rtx_info rather than an rtvec.
Use *_at rather than *_with_line functions.
* gentarget-def.c (add_insn): New function.
(main): Use it. Use new read_md_rtx interface.
From-SVN: r225883
Diffstat (limited to 'gcc/genattr.c')
-rw-r--r-- | gcc/genattr.c | 45 |
1 files changed, 22 insertions, 23 deletions
diff --git a/gcc/genattr.c b/gcc/genattr.c index 97ed613..d31f0073 100644 --- a/gcc/genattr.c +++ b/gcc/genattr.c @@ -29,15 +29,14 @@ along with GCC; see the file COPYING3. If not see #include "gensupport.h" -static void gen_attr (rtx); - static vec<rtx> const_attrs, reservations; static void -gen_attr (rtx attr) +gen_attr (md_rtx_info *info) { const char *p; + rtx attr = info->def; int is_const = GET_CODE (XEXP (attr, 2)) == CONST; if (is_const) @@ -141,7 +140,6 @@ find_tune_attr (rtx exp) int main (int argc, char **argv) { - rtx desc; int have_delay = 0; int have_annul_true = 0; int have_annul_false = 0; @@ -162,20 +160,18 @@ main (int argc, char **argv) /* Read the machine description. */ - while (1) + md_rtx_info info; + while (read_md_rtx (&info)) { - int line_no, insn_code_number; - - desc = read_md_rtx (&line_no, &insn_code_number); - if (desc == NULL) - break; - - if (GET_CODE (desc) == DEFINE_ATTR - || GET_CODE (desc) == DEFINE_ENUM_ATTR) - gen_attr (desc); + rtx def = info.def; + switch (GET_CODE (def)) + { + case DEFINE_ATTR: + case DEFINE_ENUM_ATTR: + gen_attr (&info); + break; - else if (GET_CODE (desc) == DEFINE_DELAY) - { + case DEFINE_DELAY: if (! have_delay) { printf ("extern int num_delay_slots (rtx_insn *);\n"); @@ -184,28 +180,31 @@ main (int argc, char **argv) have_delay = 1; } - for (i = 0; i < XVECLEN (desc, 1); i += 3) + for (i = 0; i < XVECLEN (def, 1); i += 3) { - if (XVECEXP (desc, 1, i + 1) && ! have_annul_true) + if (XVECEXP (def, 1, i + 1) && ! have_annul_true) { printf ("#define ANNUL_IFTRUE_SLOTS\n"); printf ("extern int eligible_for_annul_true (rtx_insn *, int, rtx_insn *, int);\n"); have_annul_true = 1; } - if (XVECEXP (desc, 1, i + 2) && ! have_annul_false) + if (XVECEXP (def, 1, i + 2) && ! have_annul_false) { printf ("#define ANNUL_IFFALSE_SLOTS\n"); printf ("extern int eligible_for_annul_false (rtx_insn *, int, rtx_insn *, int);\n"); have_annul_false = 1; } } - } + break; - else if (GET_CODE (desc) == DEFINE_INSN_RESERVATION) - { + case DEFINE_INSN_RESERVATION: num_insn_reservations++; - reservations.safe_push (desc); + reservations.safe_push (def); + break; + + default: + break; } } |