GCC Middle and Back End API Reference
ipa-ref.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  ipa_ref
struct  ipa_ref_list

Typedefs

typedef symtab_node_basesymtab_node
typedef const symtab_node_baseconst_symtab_node
typedef struct ipa_ref ipa_ref_t
typedef struct ipa_refipa_ref_ptr

Enumerations

enum  ipa_ref_use { IPA_REF_LOAD, IPA_REF_STORE, IPA_REF_ADDR, IPA_REF_ALIAS }

Functions

struct ipa_refipa_record_reference (symtab_node, symtab_node, enum ipa_ref_use, gimple)
struct ipa_refipa_maybe_record_reference (symtab_node, tree, enum ipa_ref_use, gimple)
void ipa_remove_reference (struct ipa_ref *)
void ipa_remove_all_references (struct ipa_ref_list *)
void ipa_remove_all_referring (struct ipa_ref_list *)
void ipa_dump_references (FILE *, struct ipa_ref_list *)
void ipa_dump_referring (FILE *, struct ipa_ref_list *)
void ipa_clone_references (symtab_node, struct ipa_ref_list *)
void ipa_clone_referring (symtab_node, struct ipa_ref_list *)
struct ipa_refipa_clone_ref (struct ipa_ref *, symtab_node, gimple)
bool ipa_ref_cannot_lead_to_return (struct ipa_ref *)
bool ipa_ref_has_aliases_p (struct ipa_ref_list *)
struct ipa_refipa_find_reference (symtab_node, symtab_node, gimple, unsigned int)
void ipa_remove_stmt_references (symtab_node, gimple)
void ipa_clear_stmts_in_references (symtab_node)

Typedef Documentation

typedef struct ipa_ref* ipa_ref_ptr
typedef struct ipa_ref ipa_ref_t

Enumeration Type Documentation

How the reference is done.

Enumerator:
IPA_REF_LOAD 
IPA_REF_STORE 
IPA_REF_ADDR 
IPA_REF_ALIAS 

Function Documentation

void ipa_clear_stmts_in_references ( symtab_node  )
struct ipa_ref* ipa_clone_ref ( struct ipa_ref ref,
symtab_node  dest_node,
gimple  stmt 
)
read

Clone reference REF to DEST_NODE and set its stmt to STMT.

Referenced by ipa_free_all_edge_args().

void ipa_clone_references ( symtab_node  dest_node,
struct ipa_ref_list src 
)

Clone all references from SRC to DEST_NODE or DEST_VARPOOL_NODE.

void ipa_clone_referring ( symtab_node  dest_node,
struct ipa_ref_list src 
)

Clone all referring from SRC to DEST_NODE or DEST_VARPOOL_NODE.

void ipa_dump_references ( FILE *  ,
struct ipa_ref_list  
)
void ipa_dump_referring ( FILE *  ,
struct ipa_ref_list  
)
struct ipa_ref* ipa_find_reference ( symtab_node  referring_node,
symtab_node  referred_node,
gimple  stmt,
unsigned int  lto_stmt_uid 
)
read

Find the structure describing a reference in REFERRING_NODE to REFERRED_NODE and associated with statement STMT.

References ipa_ref_list_reference_iterate, ipa_remove_reference(), NULL, symtab_node_base::ref_list, and ipa_ref::stmt.

Referenced by ipa_free_all_edge_args(), and propagate_effects().

struct ipa_ref* ipa_maybe_record_reference ( symtab_node  referring_node,
tree  val,
enum ipa_ref_use  use_type,
gimple  stmt 
)
read

If VAL is a reference to a function or a variable, add a reference from REFERRING_NODE to the corresponding symbol table node. USE_TYPE specify type of the use and STMT the statement (if it exists). Return the new reference or NULL if none was created.

struct ipa_ref* ipa_record_reference ( symtab_node  referring_node,
symtab_node  referred_node,
enum ipa_ref_use  use_type,
gimple  stmt 
)
read

Return ipa reference from REFERING_NODE or REFERING_VARPOOL_NODE to REFERED_NODE or REFERED_VARPOOL_NODE. USE_TYPE specify type of the use and STMT the statement (if it exists).

If vector was moved in memory, update pointers.

References gcc_checking_assert, IPA_REF_ALIAS, ipa_ref_list_reference_iterate, ipa_ref_referred_ref_list(), ipa_ref::lto_stmt_uid, symtab_node_base::ref_list, ipa_ref_list::references, ipa_ref::referred, ipa_ref::referred_index, ipa_ref::referring, ipa_ref_list::referring, ipa_ref::speculative, ipa_ref::stmt, vec_safe_address(), vec_safe_grow(), and vec_safe_length().

Referenced by mark_address(), and mark_load().

bool ipa_ref_cannot_lead_to_return ( struct ipa_ref )
bool ipa_ref_has_aliases_p ( struct ipa_ref_list )
void ipa_remove_all_references ( struct ipa_ref_list )
void ipa_remove_all_referring ( struct ipa_ref_list )
void ipa_remove_reference ( struct ipa_ref )
void ipa_remove_stmt_references ( symtab_node  ,
gimple   
)