GCC Middle and Back End API Reference
web.cc File Reference
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "backend.h"
#include "rtl.h"
#include "df.h"
#include "insn-config.h"
#include "recog.h"
#include "tree-pass.h"
Include dependency graph for web.cc:

Data Structures

struct  web_entry
 

Functions

bool unionfind_union (web_entry_base *first, web_entry_base *second)
 
static void union_match_dups (rtx_insn *insn, web_entry *def_entry, web_entry *use_entry, bool(*fun)(web_entry_base *, web_entry_base *))
 
void union_defs (df_ref use, web_entry *def_entry, unsigned int *used, web_entry *use_entry, bool(*fun)(web_entry_base *, web_entry_base *))
 
static rtx entry_register (web_entry *entry, df_ref ref, unsigned int *used)
 
static void replace_ref (df_ref ref, rtx reg)
 
rtl_opt_passmake_pass_web (gcc::context *ctxt)
 

Function Documentation

◆ entry_register()

static rtx entry_register ( web_entry * entry,
df_ref ref,
unsigned int * used )
static

◆ make_pass_web()

rtl_opt_pass * make_pass_web ( gcc::context * ctxt)

◆ replace_ref()

static void replace_ref ( df_ref ref,
rtx reg )
static

◆ union_defs()

void union_defs ( df_ref use,
web_entry * def_entry,
unsigned int * used,
web_entry * use_entry,
bool(* fun )(web_entry_base *, web_entry_base *) )
For each use, all possible defs reaching it must come in the same
register, union them.
FUN is the function that does the union.

In USED, we keep the DF_REF_ID of the first uninitialized uses of a
register, so that all uninitialized uses of the register can be
combined into a single web.  We actually offset it by 2, because
the values 0 and 1 are reserved for use by entry_register.   

References DF_REF_CHAIN, DF_REF_FLAGS, DF_REF_ID, DF_REF_INSN_INFO, DF_REF_READ_WRITE, DF_REF_REAL_REG, DF_REF_REG, FOR_EACH_INSN_INFO_DEF, FOR_EACH_INSN_INFO_EQ_USE, df_insn_info::insn, link::next, NULL, REGNO, SET_DEST, SET_SRC, and single_set().

◆ union_match_dups()

static void union_match_dups ( rtx_insn * insn,
web_entry * def_entry,
web_entry * use_entry,
bool(* fun )(web_entry_base *, web_entry_base *) )
static

◆ unionfind_union()

bool unionfind_union ( web_entry_base * first,
web_entry_base * second )
Union sets.
Return true if FIRST and SECOND points to the same web entry structure and
nothing is done.  Otherwise, return false.