GCC Middle and Back End API Reference
noop_reader Class Reference

#include <read-md.h>

Inheritance diagram for noop_reader:
Collaboration diagram for noop_reader:

Public Member Functions

 noop_reader ()
 
void handle_unknown_directive (file_location, const char *) override
 
bool read_md_files (int, const char **, bool(*)(const char *))
 
bool read_file (const char *filename)
 
bool read_file_fragment (const char *filename, int first_line, int last_line)
 
file_location get_current_location () const
 
bool is_compact () const
 
int read_char (void)
 
void unread_char (int ch)
 
file_location read_name (struct md_name *name)
 
file_location read_name_or_nil (struct md_name *)
 
void read_escape ()
 
charread_quoted_string ()
 
charread_braced_string ()
 
charread_string (int star_if_braced)
 
void read_skip_construct (int depth, file_location loc)
 
void require_char (char expected)
 
void require_char_ws (char expected)
 
void require_word_ws (const char *expected)
 
int peek_char (void)
 
void set_md_ptr_loc (const void *ptr, file_location)
 
const struct ptr_locget_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, FILE *=stdout)
 
struct enum_typelookup_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 charjoin_c_conditions (const char *cond1, const char *cond2)
 
void fprint_c_condition (FILE *outf, const char *cond)
 
void print_c_condition (const char *cond)
 
const charapply_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, file_location loc, rtx x, unsigned int index, const char *name)
 
struct mappingread_mapping (struct iterator_group *group, htab_t table)
 
overloaded_namehandle_overloaded_name (rtx, vec< mapping * > *)
 
const charget_top_level_filename () const
 
const charget_filename () const
 
int get_lineno () const
 
int get_colno () const
 
struct obstackget_string_obstack ()
 
htab_t get_md_constants ()
 
overloaded_nameget_overloads () const
 

Private Member Functions

void handle_file ()
 
void handle_toplevel_file ()
 
void handle_include (file_location loc)
 
void add_include_path (const char *arg)
 
bool read_name_1 (struct md_name *name, file_location *out_loc)
 

Private Attributes

bool m_compact
 
const charm_toplevel_fname
 
charm_base_dir
 
FILEm_read_md_file
 
const charm_read_md_filename
 
int m_read_md_lineno
 
int m_read_md_colno
 
int m_last_line_colno
 
file_name_listm_first_dir_md_include
 
file_name_list ** m_last_dir_md_include_ptr
 
struct obstack m_string_obstack
 
htab_t m_ptr_locs
 
struct obstack m_ptr_loc_obstack
 
htab_t m_joined_conditions
 
struct obstack m_joined_conditions_obstack
 
htab_t m_md_constants
 
htab_t m_enum_types
 
int m_first_line
 
int m_last_line
 
overloaded_namem_first_overload
 
overloaded_name ** m_next_overload_ptr
 
htab_t m_overloads_htab
 

Detailed Description

An md_reader subclass which skips unknown directives, for
the gen* tools that purely use read-md.o.   

Constructor & Destructor Documentation

◆ noop_reader()

noop_reader::noop_reader ( )
inline

Member Function Documentation

◆ add_include_path()

void md_reader::add_include_path ( const char * arg)
privateinherited
Parse a -I option with argument ARG.   

References ggc_alloc(), and md_reader::m_last_dir_md_include_ptr.

◆ apply_iterator_to_string()

const char * md_reader::apply_iterator_to_string ( const char * string)
inherited
Apply the current iterator values to STRING.  Return the new string
if any changes were needed, otherwise return STRING itself.   

References md_reader::copy_md_ptr_loc(), end(), md_reader::get_md_ptr_loc(), ggc_alloc(), md_reader::ptr_loc::loc, md_reader::m_string_obstack, map_attr_string(), and map_value::string.

Referenced by md_reader::copy_rtx_for_iterators().

◆ copy_md_ptr_loc()

void md_reader::copy_md_ptr_loc ( const void * new_ptr,
const void * old_ptr )
inherited

◆ copy_rtx_for_iterators()

rtx md_reader::copy_rtx_for_iterators ( rtx original)
inherited
Return a deep copy of X, substituting the current iterator
values into any strings.   

References md_reader::apply_iterator_to_string(), md_reader::copy_rtx_for_iterators(), GET_CODE, GET_RTX_FORMAT, ggc_alloc(), i, rtvec_alloc(), rtx_alloc(), RTX_CODE_SIZE, XEXP, XSTR, XTMPL, XVEC, XVECEXP, and XVECLEN.

Referenced by md_reader::copy_rtx_for_iterators().

◆ fprint_c_condition()

void md_reader::fprint_c_condition ( FILE * outf,
const char * cond )
inherited
Print condition COND to OUTF, wrapped in brackets.  If COND was created
by join_c_conditions, recursively invoke this function for the original
conditions and join the result with "&&".  Otherwise print a #line
directive for COND if its original file position is known.   

References md_reader::fprint_c_condition(), md_reader::fprint_md_ptr_loc(), fputc(), ggc_alloc(), and md_reader::m_joined_conditions.

Referenced by md_reader::fprint_c_condition(), md_reader::print_c_condition(), write_attr_value(), and write_test_expr().

◆ fprint_md_ptr_loc()

void md_reader::fprint_md_ptr_loc ( FILE * outf,
const void * ptr )
inherited
If PTR is associated with a known file position, print a #line
directive for it to OUTF.   

References file_location::filename, md_reader::get_md_ptr_loc(), ggc_alloc(), file_location::lineno, and md_reader::ptr_loc::loc.

Referenced by md_reader::fprint_c_condition(), and md_reader::print_md_ptr_loc().

◆ get_colno()

int md_reader::get_colno ( ) const
inlineinherited

◆ get_current_location()

◆ get_filename()

const char * md_reader::get_filename ( ) const
inlineinherited

◆ get_lineno()

int md_reader::get_lineno ( ) const
inlineinherited

◆ get_md_constants()

htab_t md_reader::get_md_constants ( )
inlineinherited

◆ get_md_ptr_loc()

const md_reader::ptr_loc * md_reader::get_md_ptr_loc ( const void * ptr)
inherited
Return the position associated with pointer PTR.  Return null if no
position was set.   

References ggc_alloc(), and md_reader::m_ptr_locs.

Referenced by md_reader::apply_iterator_to_string(), md_reader::copy_md_ptr_loc(), and md_reader::fprint_md_ptr_loc().

◆ get_overloads()

overloaded_name * md_reader::get_overloads ( ) const
inlineinherited

References md_reader::m_first_overload.

Referenced by main().

◆ get_string_obstack()

◆ get_top_level_filename()

const char * md_reader::get_top_level_filename ( ) const
inlineinherited

◆ handle_constants()

void md_reader::handle_constants ( )
inherited
Process a define_constants directive, starting with the optional space
after the "define_constants".   

References add_constant(), defs, fatal_expected_char(), ggc_alloc(), md_reader::m_md_constants, md_reader::read_name(), read_skip_spaces(), md_reader::require_char_ws(), and md_name::string.

Referenced by md_reader::handle_file().

◆ handle_enum()

void md_reader::handle_enum ( file_location loc,
bool md_p )
inherited
Process a define_enum or define_c_enum directive, starting with
the optional space after the "define_enum".  LINENO is the line
number on which the directive started and MD_P is true if the
directive is a define_enum rather than a define_c_enum.   

References add_constant(), error_at(), md_reader::get_md_constants(), ggc_alloc(), md_reader::m_enum_types, md_decimal_string(), NULL, md_reader::read_name(), read_skip_spaces(), md_reader::read_string(), md_reader::require_char_ws(), md_name::string, md_reader::unread_char(), and upcase_string().

Referenced by md_reader::handle_file().

◆ handle_file()

◆ handle_include()

void md_reader::handle_include ( file_location loc)
privateinherited
Process an "include" directive, starting with the optional space
after the "include".  Read in the file and use HANDLE_DIRECTIVE
to process each unknown directive.  LINENO is the line number on
which the "include" occurred.   

References DIR_SEPARATOR, error_at(), fopen, free(), ggc_alloc(), md_reader::handle_file(), include_callback, md_reader::m_base_dir, md_reader::m_first_dir_md_include, md_reader::m_read_md_colno, md_reader::m_read_md_file, md_reader::m_read_md_filename, md_reader::m_read_md_lineno, NULL, and md_reader::read_string().

Referenced by md_reader::handle_file().

◆ handle_overloaded_name()

overloaded_name * md_reader::handle_overloaded_name ( rtx ,
vec< mapping * > *  )
inherited

◆ handle_toplevel_file()

void md_reader::handle_toplevel_file ( )
privateinherited
Like handle_file, but for top-level files.  Set up m_toplevel_fname
and m_base_dir accordingly.   

References ggc_alloc(), md_reader::handle_file(), md_reader::m_base_dir, md_reader::m_read_md_filename, md_reader::m_toplevel_fname, and NULL.

Referenced by md_reader::read_file(), and md_reader::read_file_fragment().

◆ handle_unknown_directive()

void noop_reader::handle_unknown_directive ( file_location loc,
const char *  )
overridevirtual
class noop_reader : public md_reader  
A dummy implementation which skips unknown directives.   

Implements md_reader.

References md_reader::read_skip_construct().

◆ is_compact()

◆ join_c_conditions()

const char * md_reader::join_c_conditions ( const char * cond1,
const char * cond2 )
inherited
Return a condition that satisfies both COND1 and COND2.  Either string
may be null or empty.   

References ggc_alloc(), md_reader::m_joined_conditions, md_reader::m_joined_conditions_obstack, and NULL.

Referenced by alter_test_for_insn(), process_rtx(), and process_substs_on_one_elem().

◆ lookup_enum_type()

struct enum_type * md_reader::lookup_enum_type ( const char * name)
inherited
Try to find the definition of the given enum.  Return null on failure.   

References ggc_alloc(), and md_reader::m_enum_types.

Referenced by gen_attr().

◆ peek_char()

int md_reader::peek_char ( void )
inherited
Peek at the next character from the file without consuming it.   

References md_reader::read_char(), and md_reader::unread_char().

Referenced by function_reader::handle_any_trailing_information(), and rtx_reader::read_nested_rtx().

◆ print_c_condition()

void md_reader::print_c_condition ( const char * cond)
inherited
Special fprint_c_condition for writing to STDOUT.   

References md_reader::fprint_c_condition(), and ggc_alloc().

Referenced by def_target_insn(), print_test(), write_init_reg_class_start_regs(), write_one_condition(), and write_predicate_expr().

◆ print_md_ptr_loc()

void md_reader::print_md_ptr_loc ( const void * ptr,
FILE * file = stdout )
inherited
Special fprint_md_ptr_loc for writing to STDOUT.   

References md_reader::fprint_md_ptr_loc().

Referenced by emit_c_code(), process_template(), write_one_condition(), and write_predicate_subfunction().

◆ read_braced_string()

char * md_reader::read_braced_string ( )
inherited
Read a braced string (a la Tcl) onto the string obstack.  Caller
has scanned the leading brace.  Note that unlike quoted strings,
the outermost braces _are_ included in the string constant.   

References fatal_with_file_and_line(), md_reader::get_lineno(), ggc_alloc(), md_reader::m_string_obstack, md_reader::read_char(), and md_reader::read_escape().

Referenced by md_reader::read_string().

◆ read_char()

◆ read_conditions()

void md_reader::read_conditions ( )
inherited

◆ read_escape()

void md_reader::read_escape ( )
inherited
Subroutine of the string readers.  Handles backslash escapes.
Caller has read the backslash, but not placed it into the obstack.   

References md_reader::get_filename(), md_reader::get_lineno(), ggc_alloc(), md_reader::m_string_obstack, and md_reader::read_char().

Referenced by md_reader::read_braced_string(), and md_reader::read_quoted_string().

◆ read_file()

bool md_reader::read_file ( const char * filename)
inherited

◆ read_file_fragment()

bool md_reader::read_file_fragment ( const char * filename,
int first_line,
int last_line )
inherited

◆ read_mapping()

struct mapping * md_reader::read_mapping ( struct iterator_group * group,
htab_t table )
inherited

◆ read_md_files()

bool md_reader::read_md_files ( int ,
const char ** ,
bool(*)(const char *)  )
inherited

◆ read_name()

◆ read_name_1()

bool md_reader::read_name_1 ( struct md_name * name,
file_location * out_loc )
privateinherited
Read an rtx code name into NAME.  It is terminated by any of the
punctuation chars of rtx printed syntax.   

References md_name::buffer, fatal_with_file_and_line(), md_reader::get_current_location(), ggc_alloc(), i, md_reader::m_md_constants, md_reader::read_char(), read_skip_spaces(), md_name::string, and md_reader::unread_char().

Referenced by md_reader::read_name(), and md_reader::read_name_or_nil().

◆ read_name_or_nil()

◆ read_quoted_string()

char * md_reader::read_quoted_string ( )
inherited

◆ read_skip_construct()

void md_reader::read_skip_construct ( int depth,
file_location loc )
inherited
Skip the rest of a construct that started at line LINENO and that
is currently nested by DEPTH levels of parentheses.   

References error_at(), ggc_alloc(), md_reader::read_name(), read_skip_spaces(), md_reader::read_string(), and md_reader::unread_char().

Referenced by handle_unknown_directive(), and md_reader::read_name_or_nil().

◆ read_string()

char * md_reader::read_string ( int star_if_braced)
inherited

◆ record_potential_iterator_use()

void md_reader::record_potential_iterator_use ( struct iterator_group * group,
file_location loc,
rtx x,
unsigned int index,
const char * name )
inherited
Interpret NAME as either a built-in value, iterator or attribute
for group GROUP.  X and INDEX are the values to pass to GROUP's
apply_iterator callback.  LOC is the location of the use.   

References iterator_group::apply_iterator, iterator_group::find_builtin, ggc_alloc(), iterator_group::iterators, md_reader::m_string_obstack, record_attribute_use(), and record_iterator_use().

Referenced by rtx_reader::read_rtx_code(), and rtx_reader::read_rtx_operand().

◆ require_char()

◆ require_char_ws()

◆ require_word_ws()

void md_reader::require_word_ws ( const char * expected)
inherited
Consume any whitespace, then consume the next word (as per read_name),
issuing a fatal error if it is not EXPECTED.   

References fatal_with_file_and_line(), ggc_alloc(), md_reader::read_name(), and md_name::string.

Referenced by function_reader::parse_crtl(), function_reader::parse_edge(), and function_reader::parse_param().

◆ set_md_ptr_loc()

void md_reader::set_md_ptr_loc ( const void * ptr,
file_location file_loc )
inherited

◆ traverse_enum_types()

void md_reader::traverse_enum_types ( htab_trav callback,
void * info )
inherited
For every enum definition, call CALLBACK with two arguments:
a pointer to the constant definition and INFO.  Stop when CALLBACK
returns zero.   

References ggc_alloc(), and md_reader::m_enum_types.

◆ traverse_md_constants()

void md_reader::traverse_md_constants ( htab_trav callback,
void * info )
inherited
For every constant definition, call CALLBACK with two arguments:
a pointer a pointer to the constant definition and INFO.
Stop when CALLBACK returns zero.   

References md_reader::get_md_constants(), and ggc_alloc().

◆ unread_char()

Field Documentation

◆ m_base_dir

char* md_reader::m_base_dir
privateinherited

◆ m_compact

bool md_reader::m_compact
privateinherited

Referenced by md_reader::is_compact().

◆ m_enum_types

◆ m_first_dir_md_include

file_name_list* md_reader::m_first_dir_md_include
privateinherited

◆ m_first_line

int md_reader::m_first_line
privateinherited

◆ m_first_overload

overloaded_name* md_reader::m_first_overload
privateinherited

◆ m_joined_conditions

htab_t md_reader::m_joined_conditions
privateinherited

◆ m_joined_conditions_obstack

struct obstack md_reader::m_joined_conditions_obstack
privateinherited

◆ m_last_dir_md_include_ptr

file_name_list** md_reader::m_last_dir_md_include_ptr
privateinherited

◆ m_last_line

int md_reader::m_last_line
privateinherited

◆ m_last_line_colno

int md_reader::m_last_line_colno
privateinherited

◆ m_md_constants

◆ m_next_overload_ptr

overloaded_name** md_reader::m_next_overload_ptr
privateinherited

◆ m_overloads_htab

htab_t md_reader::m_overloads_htab
privateinherited

◆ m_ptr_loc_obstack

struct obstack md_reader::m_ptr_loc_obstack
privateinherited

◆ m_ptr_locs

◆ m_read_md_colno

◆ m_read_md_file

◆ m_read_md_filename

◆ m_read_md_lineno

◆ m_string_obstack

◆ m_toplevel_fname

const char* md_reader::m_toplevel_fname
privateinherited

The documentation for this class was generated from the following files: