GCC Middle and Back End API Reference
expr Struct Reference
Inheritance diagram for expr:
Collaboration diagram for expr:

Public Types

enum  op_type {
  OP_PREDICATE , OP_EXPR , OP_CAPTURE , OP_C_EXPR ,
  OP_IF , OP_WITH
}
 

Public Member Functions

 expr (id_base *operation_, location_t loc, bool is_commutative_=false)
 
 expr (expr *e)
 
void append_op (operand *op)
 
void gen_transform (FILE *f, int, const char *, bool, int, const char *, capture_info *, dt_operand **=0, int=0) override
 

Data Fields

id_baseoperation
 
vec< operand * > ops
 
const charexpr_type
 
bool is_commutative
 
bool is_generic
 
bool force_single_use
 
bool force_leaf
 
unsigned char opt_grp
 
rtx expr
 
hashval_t hash
 
unsigned int bitmap_index
 
struct occravail_occr
 
enum op_type type
 
location_t location
 

Detailed Description

An operand that constitutes an expression.  Expressions include
function calls and user-defined predicate invocations.   
We need to keep a hash table of expressions.  The table entries are of
type 'struct expr', and for each expression there is a single linked
list of occurrences.   
Expression elements in the hash table.   

Member Enumeration Documentation

◆ op_type

Enumerator
OP_PREDICATE 
OP_EXPR 
OP_CAPTURE 
OP_C_EXPR 
OP_IF 
OP_WITH 

Constructor & Destructor Documentation

◆ expr() [1/2]

expr::expr ( id_base * operation_,
location_t loc,
bool is_commutative_ = false )
inline

◆ expr() [2/2]

expr::expr ( expr * e)
inline

Member Function Documentation

◆ append_op()

void expr::append_op ( operand * op)
inline

References ops.

Referenced by parser::parse_expr(), and parser::parse_pattern().

◆ gen_transform()

void expr::gen_transform ( FILE * f,
int indent,
const char * dest,
bool gimple,
int depth,
const char * in_type,
capture_info * cinfo,
dt_operand ** indexes = 0,
int = 0 )
overridevirtual
Generate transform code for an expression.   

Reimplemented from operand.

References id_base::CODE, fail_label, fatal_at(), fprintf_indent(), get_operand_type(), ggc_alloc(), i, is_conversion(), operand::location, NULL, and startswith().

Field Documentation

◆ avail_occr

◆ bitmap_index

◆ expr

◆ expr_type

const char* expr::expr_type

◆ force_leaf

bool expr::force_leaf

◆ force_single_use

bool expr::force_single_use

◆ hash

◆ is_commutative

bool expr::is_commutative

Referenced by commutate(), and parser::parse_expr().

◆ is_generic

bool expr::is_generic

◆ location

◆ operation

◆ ops

◆ opt_grp

unsigned char expr::opt_grp

◆ type


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