diff options
author | David Malcolm <dmalcolm@redhat.com> | 2016-10-18 00:19:17 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2016-10-18 00:19:17 +0000 |
commit | b78027d1a3f9a8fdf3386e24dcfd6679006dd154 (patch) | |
tree | a410a1eb6efa653792b4500a10e0449b5a96b937 /gcc/read-md.h | |
parent | b0ce21917da6fa41e693bba287e9e680342d06bd (diff) | |
download | gcc-b78027d1a3f9a8fdf3386e24dcfd6679006dd154.zip gcc-b78027d1a3f9a8fdf3386e24dcfd6679006dd154.tar.gz gcc-b78027d1a3f9a8fdf3386e24dcfd6679006dd154.tar.bz2 |
read-md.c: Move various state to within class rtx_reader
gcc/ChangeLog:
* genattrtab.c (attr_string): Use rtx_reader_ptr for call to
copy_md_ptr_loc.
(gen_attr): Use rtx_reader_ptr for lookup_enum_type call.
(write_test_expr): Use rtx_reader_ptr for calls to
fprint_c_condition.
(write_attr_value): Likewise.
* genconditions.c (write_one_condition): Use rtx_reader_ptr for
call to print_md_ptr_loc.
(write_one_condition): Likewise for calls to print_c_condition.
* genconstants.c: Include "statistics.h" and "vec.h".
(main): Update for conversion to member functions.
* genemit.c (emit_c_code): Use rtx_reader_ptr for
call to print_md_ptr_loc.
* genenums.c: Include "statistics.h" and "vec.h".
(main): Update for conversion of traverse_enum_types to a method.
* genmddeps.c: Include "statistics.h" and "vec.h".
* genoutput.c (process_template): Use rtx_reader_ptr for call to
print_md_ptr_loc.
* genpreds.c (write_predicate_subfunction): Likewise.
(write_predicate_expr): Likewise for calls to print_c_condition.
* genrecog.c (print_test): Likewise.
* gensupport.c (process_rtx): Likewise for calls to
copy_md_ptr_loc and join_c_conditions.
(alter_test_for_insn): Likewise for call to join_c_conditions.
(process_substs_on_one_elem): Likewise.
(gen_mnemonic_setattr): Update for move of string_obstack to a
field of rtx_reader.
(mnemonic_htab_callback): Likewise. Fix formatting.
(gen_mnemonic_attr): Likewise.
* gentarget-def.c (def_target_insn): Use rtx_reader_ptr for calls
to print_c_condition.
* read-md.c: Include "statistics.h" and "vec.h".
(string_obstack): Convert this global to field "m_string_obstack"
of class rtx_reader.
(ptr_locs): Likewise, as "m_ptr_locs".
(ptr_loc_obstack): Likewise, as "m_ptr_loc_obstack".
(joined_conditions): Likewise, as "m_joined_conditions".
(joined_conditions_obstack): Likewise, as "m_joined_conditions_obstack".
(md_constants): Likewise, as "m_md_constants".
(enum_types): Likewise, as "m_enum_types".
(set_md_ptr_loc): Convert to...
(rtx_reader::set_md_ptr_loc): ...member function.
(get_md_ptr_loc): Convert to...
(rtx_reader::get_md_ptr_loc): ...member function.
(copy_md_ptr_loc): Convert to...
(rtx_reader::copy_md_ptr_loc): ...member function.
(fprint_md_ptr_loc): Convert to...
(rtx_reader::fprint_md_ptr_loc): ...member function.
(print_md_ptr_loc): Convert to...
(rtx_reader::print_md_ptr_loc): ...member function.
(join_c_conditions): Convert to...
(rtx_reader::join_c_conditions): ...member function.
(fprint_c_condition): Convert to...
(rtx_reader::fprint_c_condition): ...member function.
(print_c_condition): Convert to...
(rtx_reader::print_c_condition): ...member function.
(read_name): Convert to...
(rtx_reader::read_name): ...member function.
(read_escape): Convert to...
(rtx_reader::read_escape): ...member function.
(read_quoted_string): Convert to...
(rtx_reader::read_quoted_string): ...member function.
(read_braced_string): Convert to...
(rtx_reader::read_braced_string): ...member function.
(read_string): Convert to...
(rtx_reader::read_string): ...member function.
(read_skip_construct): Convert to...
(rtx_reader::read_skip_construct): ...member function.
(handle_constants): Convert to...
(rtx_reader::handle_constants): ...member function.
(traverse_md_constants): Convert to...
(rtx_reader::traverse_md_constants): ...member function.
(handle_enum): Convert to...
(rtx_reader::handle_enum): ...member function.
(lookup_enum_type): Convert to...
(rtx_reader::lookup_enum_type): ...member function.
(traverse_enum_types): Convert to...
(rtx_reader::traverse_enum_types): ...member function.
(rtx_reader::rtx_reader): Move initializations
of various former global data from rtx_reader::read_md_files to
here, as fields, along with the call to unlock_std_streams.
(rtx_reader::~rtx_reader): Clean up m_base_dir, and clean up
the new fields.
(rtx_reader::read_md_files): Move initializations of various
global data from here to the ctor.
* read-md.h (read_name): Convert to...
(rtx_reader::read_name): ...member function.
(rtx_reader::read_escape): New method decl.
(read_quoted_string): Convert to...
(rtx_reader::read_quoted_string): ...member function.
(rtx_reader::read_braced_string): New method decl.
(read_string): Convert to...
(rtx_reader::read_string): ...member function.
(rtx_reader::read_skip_construct): New method decl.
(rtx_reader::set_md_ptr_loc): New method decl.
(rtx_reader::get_md_ptr_loc): New method decl.
(copy_md_ptr_loc): Convert to...
(rtx_reader::copy_md_ptr_loc): ...member function.
(fprint_md_ptr_loc): Convert to...
(rtx_reader::fprint_md_ptr_loc): ...member function.
(print_md_ptr_loc): Convert to...
(rtx_reader::print_md_ptr_loc): ...member function.
(rtx_reader::lookup_enum_type): New method decl.
(rtx_reader::traverse_enum_types): New method decl.
(rtx_reader::handle_constants): New method decl.
(traverse_md_constants): Convert to...
(rtx_reader::traverse_md_constants): ...member function.
(rtx_reader::handle_enum): New method decl.
(rtx_reader::join_c_conditions): New method decl.
(fprint_c_condition): Convert to...
(rtx_reader::fprint_c_condition): ...member function.
(print_c_condition): Convert to...
(rtx_reader::print_c_condition): ...member function.
(rtx_reader::apply_iterator_to_string): New method decl.
(rtx_reader::copy_rtx_for_iterators): New method decl.
(rtx_reader::read_conditions): New method decl.
(rtx_reader::record_potential_iterator_use): New method decl.
(rtx_reader::read_mapping): New method decl.
(rtx_reader::read_rtx): New method decl.
(rtx_reader::read_rtx_code): New method decl.
(rtx_reader::read_rtx_operand): New method decl.
(rtx_reader::read_nested_rtx): New method decl.
(rtx_reader::read_rtx_variadic): New method decl.
(rtx_reader::get_string_obstack): New method.
(rtx_reader::get_md_constants): New method.
(string_obstack): Convert global variable decl to...
(rtx_reader::m_string_obstack): ...this new field.
(rtx_reader::m_ptr_locs): New field.
(rtx_reader::m_ptr_loc_obstack): New field.
(rtx_reader::m_joined_conditions): New field.
(rtx_reader::m_joined_conditions_obstack): New field.
(rtx_reader::m_md_constants): New field.
(rtx_reader::m_enum_types): New field.
* read-rtl.c (apply_iterator_to_string): Convert to...
(rtx_reader::apply_iterator_to_string): ...member function.
(copy_rtx_for_iterators): Convert to...
(rtx_reader::copy_rtx_for_iterators): ...member function.
(add_condition_to_string): Use rtx_reader_ptr for
calls join_c_conditions.
(apply_iterators): Use rtx_reader_ptr for calls to
join_c_conditions and copy_rtx_for_iterators.
(read_conditions): Convert to...
(rtx_reader::read_conditions): ...member function.
(record_potential_iterator_use): Convert to...
(rtx_reader::record_potential_iterator_use): ...member function.
(read_mapping): Convert to...
(rtx_reader::read_mapping): ...member function.
(read_subst_mapping): Use rtx_reader_ptr for read_string call.
(read_rtx): Convert to...
(rtx_reader::read_rtx): ...member function.
(read_rtx_code): Convert to...
(rtx_reader::read_rtx_code): ...member function.
(read_rtx_operand): Convert to...
(rtx_reader::read_rtx_operand): ...member function. Update for move
of string_obstack to a field.
(read_nested_rtx): Convert to..
(rtx_reader::read_nested_rtx): ...member function.
(read_rtx_variadic): Convert to..
(rtx_reader::read_rtx_variadic): ...member function.
From-SVN: r241293
Diffstat (limited to 'gcc/read-md.h')
-rw-r--r-- | gcc/read-md.h | 76 |
1 files changed, 66 insertions, 10 deletions
diff --git a/gcc/read-md.h b/gcc/read-md.h index a74cc72..996b514 100644 --- a/gcc/read-md.h +++ b/gcc/read-md.h @@ -107,14 +107,54 @@ class rtx_reader file_location get_current_location () const; + /* Defined in read-md.c. */ int read_char (void); void unread_char (int ch); + void read_name (struct md_name *name); + void read_escape (); + char *read_quoted_string (); + char *read_braced_string (); + char *read_string (int star_if_braced); + void read_skip_construct (int depth, file_location loc); + + void set_md_ptr_loc (const void *ptr, const char *filename, int lineno); + const struct ptr_loc *get_md_ptr_loc (const void *ptr); + void copy_md_ptr_loc (const void *new_ptr, const void *old_ptr); + void fprint_md_ptr_loc (FILE *outf, const void *ptr); + void print_md_ptr_loc (const void *ptr); + + struct enum_type *lookup_enum_type (const char *name); + void traverse_enum_types (htab_trav callback, void *info); + + void handle_constants (); + void traverse_md_constants (htab_trav callback, void *info); + void handle_enum (file_location loc, bool md_p); + + const char *join_c_conditions (const char *cond1, const char *cond2); + void fprint_c_condition (FILE *outf, const char *cond); + void print_c_condition (const char *cond); + + /* Defined in read-rtl.c. */ + const char *apply_iterator_to_string (const char *string); + rtx copy_rtx_for_iterators (rtx original); + void read_conditions (); + void record_potential_iterator_use (struct iterator_group *group, + void *ptr, const char *name); + struct mapping *read_mapping (struct iterator_group *group, htab_t table); + bool read_rtx (const char *rtx_name, vec<rtx> *rtxen); + rtx read_rtx_code (const char *code_name); + void read_rtx_operand (rtx return_rtx, int idx); + rtx read_nested_rtx (); + rtx read_rtx_variadic (rtx form); const char *get_top_level_filename () const { return m_toplevel_fname; } const char *get_filename () const { return m_read_md_filename; } int get_lineno () const { return m_read_md_lineno; } int get_colno () const { return m_read_md_colno; } + struct obstack *get_string_obstack () { return &m_string_obstack; } + htab_t get_md_constants () { return m_md_constants; } + private: /* A singly-linked list of filenames. */ struct file_name_list { @@ -159,6 +199,32 @@ class rtx_reader /* A pointer to the null terminator of the md include chain. */ file_name_list **m_last_dir_md_include_ptr; + + /* Obstack used for allocating MD strings. */ + struct obstack m_string_obstack; + + /* A table of ptr_locs, hashed on the PTR field. */ + htab_t m_ptr_locs; + + /* An obstack for the above. Plain xmalloc is a bit heavyweight for a + small structure like ptr_loc. */ + struct obstack m_ptr_loc_obstack; + + /* A hash table of triples (A, B, C), where each of A, B and C is a condition + and A is equivalent to "B && C". This is used to keep track of the source + of conditions that are made up of separate MD strings (such as the split + condition of a define_insn_and_split). */ + htab_t m_joined_conditions; + + /* An obstack for allocating joined_conditions entries. */ + struct obstack m_joined_conditions_obstack; + + /* A table of md_constant structures, hashed by name. Null if no + constant expansion should occur. */ + htab_t m_md_constants; + + /* A table of enum_type structures, hashed by name. */ + htab_t m_enum_types; }; /* Global singleton. */ @@ -175,7 +241,6 @@ class noop_reader : public rtx_reader void handle_unknown_directive (file_location, const char *); }; -extern struct obstack string_obstack; extern void (*include_callback) (const char *); /* Read the next character from the MD file. */ @@ -196,12 +261,7 @@ unread_char (int ch) extern hashval_t leading_string_hash (const void *); extern int leading_string_eq_p (const void *, const void *); -extern void copy_md_ptr_loc (const void *, const void *); -extern void print_md_ptr_loc (const void *); -extern void fprint_md_ptr_loc (FILE *, const void *); extern const char *join_c_conditions (const char *, const char *); -extern void print_c_condition (const char *); -extern void fprint_c_condition (FILE *, const char *); extern void message_at (file_location, const char *, ...) ATTRIBUTE_PRINTF_2; extern void error_at (file_location, const char *, ...) ATTRIBUTE_PRINTF_2; extern void fatal_at (file_location, const char *, ...) ATTRIBUTE_PRINTF_2; @@ -210,13 +270,9 @@ extern void fatal_with_file_and_line (const char *, ...) extern void fatal_expected_char (int, int) ATTRIBUTE_NORETURN; extern int read_skip_spaces (void); extern void require_char_ws (char expected); -extern void read_name (struct md_name *); -extern char *read_quoted_string (void); -extern char *read_string (int); extern int n_comma_elts (const char *); extern const char *scan_comma_elt (const char **); extern void upcase_string (char *); -extern void traverse_md_constants (htab_trav, void *); extern void traverse_enum_types (htab_trav, void *); extern struct enum_type *lookup_enum_type (const char *); |