genautomata fix
Richard Henderson
rth@redhat.com
Mon Aug 27 13:50:00 GMT 2001
Otherwise subroutines of write_automata segfault.
r~
* genautomata.c (expand_automata): Always create a description.
Index: genautomata.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/genautomata.c,v
retrieving revision 1.1
diff -c -p -d -r1.1 genautomata.c
*** genautomata.c 2001/08/27 18:13:37 1.1
--- genautomata.c 2001/08/27 20:47:47
*************** expand_automata ()
*** 8625,8672 ****
{
int i;
! if (VLA_PTR_LENGTH (decls) != 0)
{
! description = create_node (sizeof (struct description)
! + sizeof (decl_t)
! /* One entry for cycle advancing insn. */
! * VLA_PTR_LENGTH (decls));
! description->decls_num = VLA_PTR_LENGTH (decls);
! description->query_units_num = 0;
! for (i = 0; i < description->decls_num; i++)
! {
! description->decls [i] = VLA_PTR (decls, i);
! if (description->decls [i]->mode == dm_unit
! && description->decls [i]->decl.unit.query_p)
! description->decls [i]->decl.unit.query_num
! = description->query_units_num++;
! }
! all_time = create_ticker ();
! check_time = create_ticker ();
! fprintf (stderr, "Check description...");
! fflush (stderr);
! check_all_description ();
! fprintf (stderr, "done\n");
! ticker_off (&check_time);
! generation_time = create_ticker ();
if (!have_error)
{
! generate ();
! check_automata ();
! if (!have_error)
! {
! fprintf (stderr, "Generation of attributes...");
! fflush (stderr);
! make_internal_dfa_insn_code_attr ();
! make_insn_alts_attr ();
! make_default_insn_latency_attr ();
! make_bypass_attr ();
! fprintf (stderr, "done\n");
! }
}
- ticker_off (&generation_time);
- ticker_off (&all_time);
}
fprintf (stderr, "All other genattrtab stuff...");
fflush (stderr);
}
--- 8625,8668 ----
{
int i;
! description = create_node (sizeof (struct description)
! /* One entry for cycle advancing insn. */
! + sizeof (decl_t) * VLA_PTR_LENGTH (decls));
! description->decls_num = VLA_PTR_LENGTH (decls);
! description->query_units_num = 0;
! for (i = 0; i < description->decls_num; i++)
{
! description->decls [i] = VLA_PTR (decls, i);
! if (description->decls [i]->mode == dm_unit
! && description->decls [i]->decl.unit.query_p)
! description->decls [i]->decl.unit.query_num
! = description->query_units_num++;
! }
! all_time = create_ticker ();
! check_time = create_ticker ();
! fprintf (stderr, "Check description...");
! fflush (stderr);
! check_all_description ();
! fprintf (stderr, "done\n");
! ticker_off (&check_time);
! generation_time = create_ticker ();
! if (!have_error)
! {
! generate ();
! check_automata ();
if (!have_error)
{
! fprintf (stderr, "Generation of attributes...");
! fflush (stderr);
! make_internal_dfa_insn_code_attr ();
! make_insn_alts_attr ();
! make_default_insn_latency_attr ();
! make_bypass_attr ();
! fprintf (stderr, "done\n");
}
}
+ ticker_off (&generation_time);
+ ticker_off (&all_time);
fprintf (stderr, "All other genattrtab stuff...");
fflush (stderr);
}
More information about the Gcc-patches
mailing list