GCC Middle and Back End API Reference
tree-ssa-phiprop.cc File Reference
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "backend.h"
#include "tree.h"
#include "gimple.h"
#include "tree-pass.h"
#include "ssa.h"
#include "gimple-pretty-print.h"
#include "fold-const.h"
#include "tree-eh.h"
#include "gimplify.h"
#include "gimple-iterator.h"
#include "stor-layout.h"
#include "tree-ssa-loop.h"
#include "tree-cfg.h"
#include "tree-ssa-dce.h"
Include dependency graph for tree-ssa-phiprop.cc:

Data Structures

struct  phiprop_d
 

Functions

static bool phivn_valid_p (struct phiprop_d *phivn, tree name, basic_block bb)
 
static tree phiprop_insert_phi (basic_block bb, gphi *phi, gimple *use_stmt, struct phiprop_d *phivn, size_t n, bitmap dce_ssa_names)
 
static bool chk_uses (tree, tree *idx, void *data)
 
static bool propagate_with_phi (basic_block bb, gphi *phi, struct phiprop_d *phivn, size_t n, bitmap dce_ssa_names)
 
gimple_opt_passmake_pass_phiprop (gcc::context *ctxt)
 

Function Documentation

◆ chk_uses()

static bool chk_uses ( tree ,
tree * idx,
void * data )
static
Verify if *idx is available at *DATA.   

References CDI_DOMINATORS, dominated_by_p(), gimple_bb(), SSA_NAME_DEF_STMT, SSA_NAME_IS_DEFAULT_DEF, and TREE_CODE.

Referenced by propagate_with_phi().

◆ make_pass_phiprop()

gimple_opt_pass * make_pass_phiprop ( gcc::context * ctxt)

◆ phiprop_insert_phi()

◆ phivn_valid_p()

static bool phivn_valid_p ( struct phiprop_d * phivn,
tree name,
basic_block bb )
static
Verify if the value recorded for NAME in PHIVN is still valid at
the start of basic block BB.   

References CDI_DOMINATORS, dominated_by_p(), FOR_EACH_IMM_USE_STMT, gcc_assert, gimple_bb(), gimple_vdef(), NULL_TREE, SSA_NAME_VERSION, and phiprop_d::vuse.

Referenced by propagate_with_phi().

◆ propagate_with_phi()

static bool propagate_with_phi ( basic_block bb,
gphi * phi,
struct phiprop_d * phivn,
size_t n,
bitmap dce_ssa_names )
static