osprey/kg++fe/gnu/cfgcleanup.c File Reference

#include "config.h"
#include "system.h"
#include "rtl.h"
#include "hard-reg-set.h"
#include "basic-block.h"
#include "timevar.h"
#include "output.h"
#include "insn-config.h"
#include "flags.h"
#include "recog.h"
#include "toplev.h"
#include "cselib.h"
#include "params.h"
#include "tm_p.h"
#include "target.h"

Include dependency graph for cfgcleanup.c:

Go to the source code of this file.

Defines

#define BB_FLAGS(BB)   (enum bb_flags) (BB)->aux
#define BB_SET_FLAG(BB, FLAG)   (BB)->aux = (void *) (long) ((enum bb_flags) (BB)->aux | (FLAG))
#define BB_CLEAR_FLAG(BB, FLAG)   (BB)->aux = (void *) (long) ((enum bb_flags) (BB)->aux & ~(FLAG))
#define FORWARDER_BLOCK_P(BB)   (BB_FLAGS (BB) & BB_FORWARDER_BLOCK)

Enumerations

enum  bb_flags {
  BB_FORWARDER_BLOCK = 1, BB_NONTHREADABLE_BLOCK = 2, BB_FORWARDER_BLOCK = 1, BB_NONTHREADABLE_BLOCK = 2,
  BB_FORWARDER_BLOCK = 1, BB_NONTHREADABLE_BLOCK = 2, BB_DIRTY = 1, BB_NEW = 2,
  BB_REACHABLE = 4, BB_IRREDUCIBLE_LOOP = 8, BB_SUPERBLOCK = 16, BB_DISABLE_SCHEDULE = 32,
  BB_HOT_PARTITION = 64, BB_COLD_PARTITION = 128, BB_DUPLICATED = 256, BB_RTL = 1024,
  BB_FORWARDER_BLOCK = 2048, BB_NONTHREADABLE_BLOCK = 4096
}

Functions/Subroutines

static bool try_crossjump_to_edge PARAMS ((int, edge, edge))
static bool try_crossjump_bb PARAMS ((int, basic_block))
static bool outgoing_edges_match PARAMS ((int, basic_block, basic_block))
static int flow_find_cross_jump PARAMS ((int, basic_block, basic_block, rtx *, rtx *))
static bool insns_match_p PARAMS ((int, rtx, rtx))
static bool label_is_jump_target_p PARAMS ((rtx, rtx))
static bool tail_recursion_label_p PARAMS ((rtx))
static void
merge_blocks_move_predecessor_nojumps 
PARAMS ((basic_block, basic_block))
static bool merge_blocks PARAMS ((edge, basic_block, basic_block, int))
static bool try_optimize_cfg PARAMS ((int))
static bool try_simplify_condjump PARAMS ((basic_block))
static edge thread_jump PARAMS ((int, edge, basic_block))
static bool mark_effect PARAMS ((rtx, bitmap))
static int mentions_nonequal_regs PARAMS ((rtx *, void *))
static void notice_new_block (basic_block bb)
static void update_forwarder_flag (basic_block bb)
static bool try_simplify_condjump (basic_block cbranch_block)
static bool mark_effect (rtx exp, regset nonequal)
static int mentions_nonequal_regs (rtx *x, void *data)
static edge thread_jump (int mode, edge e, basic_block b)
static bool try_forward_edges (int mode, basic_block b)
static bool label_is_jump_target_p (rtx label, rtx jump_insn)
static bool tail_recursion_label_p (rtx label)
static void merge_blocks_move_predecessor_nojumps (basic_block a, basic_block b)
static void merge_blocks_move_successor_nojumps (basic_block a, basic_block b)
static bool merge_blocks (edge e, basic_block b, basic_block c, int mode)
static bool insns_match_p (mode, rtx i1, rtx i2)
static int flow_find_cross_jump (mode, basic_block bb1, basic_block bb2, rtx *f1, rtx *f2)
static bool outgoing_edges_match (int mode, basic_block bb1, basic_block bb2)
static bool try_crossjump_to_edge (int mode, edge e1, edge e2)
static bool try_crossjump_bb (int mode, basic_block bb)
static bool try_optimize_cfg (int mode)
bool delete_unreachable_blocks ()
bool cleanup_cfg (int mode)


Define Documentation

#define BB_CLEAR_FLAG ( BB,
FLAG   )     (BB)->aux = (void *) (long) ((enum bb_flags) (BB)->aux & ~(FLAG))

Definition at line 63 of file cfgcleanup.c.

Referenced by update_forwarder_flag().

#define BB_FLAGS ( BB   )     (enum bb_flags) (BB)->aux

Definition at line 60 of file cfgcleanup.c.

Referenced by thread_jump().

#define BB_SET_FLAG ( BB,
FLAG   )     (BB)->aux = (void *) (long) ((enum bb_flags) (BB)->aux | (FLAG))

#define FORWARDER_BLOCK_P ( BB   )     (BB_FLAGS (BB) & BB_FORWARDER_BLOCK)


Enumeration Type Documentation

enum bb_flags

Enumerator:
BB_FORWARDER_BLOCK 
BB_NONTHREADABLE_BLOCK 
BB_FORWARDER_BLOCK 
BB_NONTHREADABLE_BLOCK 
BB_FORWARDER_BLOCK 
BB_NONTHREADABLE_BLOCK 
BB_DIRTY 
BB_NEW 
BB_REACHABLE 
BB_IRREDUCIBLE_LOOP 
BB_SUPERBLOCK 
BB_DISABLE_SCHEDULE 
BB_HOT_PARTITION 
BB_COLD_PARTITION 
BB_DUPLICATED 
BB_RTL 
BB_FORWARDER_BLOCK 
BB_NONTHREADABLE_BLOCK 

Definition at line 52 of file cfgcleanup.c.


Function Documentation

bool cleanup_cfg ( int  mode  ) 

bool delete_unreachable_blocks ( void   ) 

static int flow_find_cross_jump ( mode  ,
basic_block  bb1,
basic_block  bb2,
rtx f1,
rtx f2 
) [static]

static bool insns_match_p ( mode  ,
rtx  i1,
rtx  i2 
) [static]

static bool label_is_jump_target_p ( rtx  label,
rtx  jump_insn 
) [static]

static bool mark_effect ( rtx  exp,
regset  nonequal 
) [static]

static int mentions_nonequal_regs ( rtx x,
void data 
) [static]

Definition at line 264 of file cfgcleanup.c.

References FIRST_PSEUDO_REGISTER, GET_MODE, HARD_REGNO_NREGS, n, REG_P, REGNO, and REGNO_REG_SET_P.

Referenced by thread_jump().

static bool merge_blocks ( edge  e,
basic_block  b,
basic_block  c,
int  mode 
) [static]

static void merge_blocks_move_predecessor_nojumps ( basic_block  a,
basic_block  b 
) [static]

static void merge_blocks_move_successor_nojumps ( basic_block  a,
basic_block  b 
) [static]

static void notice_new_block ( basic_block  bb  )  [static]

Definition at line 96 of file cfgcleanup.c.

References BB_FORWARDER_BLOCK, BB_SET_FLAG, and forwarder_block_p().

Referenced by merge_blocks(), merge_blocks_move(), and try_forward_edges().

static bool outgoing_edges_match ( int  mode,
basic_block  bb1,
basic_block  bb2 
) [static]

static int mentions_nonequal_regs PARAMS ( (rtx *, void *)   )  [static]

static bool mark_effect PARAMS ( (rtx, bitmap  )  [static]

static edge thread_jump PARAMS ( (int, edge, basic_block  )  [static]

static bool try_simplify_condjump PARAMS ( (basic_block  )  [static]

static bool try_optimize_cfg PARAMS ( (int)   )  [static]

static bool merge_blocks PARAMS ( (edge, basic_block, basic_block, int)   )  [static]

static void merge_blocks_move_predecessor_nojumps PARAMS ( (basic_block, basic_block  )  [static]

static bool tail_recursion_label_p PARAMS ( (rtx  )  [static]

static bool label_is_jump_target_p PARAMS ( (rtx, rtx  )  [static]

static bool insns_match_p PARAMS ( (int, rtx, rtx  )  [static]

static int flow_find_cross_jump PARAMS ( (int, basic_block, basic_block, rtx *, rtx *)   )  [static]

static bool outgoing_edges_match PARAMS ( (int, basic_block, basic_block  )  [static]

static bool try_crossjump_bb PARAMS ( (int, basic_block  )  [static]

static bool try_crossjump_to_edge PARAMS ( (int, edge, edge  )  [static]

static bool tail_recursion_label_p ( rtx  label  )  [static]

Definition at line 700 of file cfgcleanup.c.

References tail_recursion_label_list, x, and XEXP.

Referenced by merge_blocks(), and try_optimize_cfg().

static edge thread_jump ( int  mode,
edge  e,
basic_block  b 
) [static]

static bool try_crossjump_bb ( int  mode,
basic_block  bb 
) [static]

static bool try_crossjump_to_edge ( int  mode,
edge  e1,
edge  e2 
) [static]

static bool try_forward_edges ( int  mode,
basic_block  b 
) [static]

static bool try_optimize_cfg ( int  mode  )  [static]

static bool try_simplify_condjump ( basic_block  cbranch_block  )  [static]

static void update_forwarder_flag ( basic_block  bb  )  [static]


Generated on Wed Apr 8 15:13:32 2009 for Open64 by  doxygen 1.5.6