entrypoint
extern void exitto(int (*entrypoint)());
extern void exitto64(int (*entrypoint)(), void *bootvec);
extern void exitto(int (*entrypoint)());
extern void exitto64(int (*entrypoint)(), void *bootvec);
ALLOCATOR(entrypoint, "entrypoint");
DECLARE_ALLOCATOR(entrypoint);
static struct instruction * try_to_cse(struct entrypoint *ep, struct instruction *i1, struct instruction *i2)
void cse_eliminate(struct entrypoint *ep)
struct entrypoint;
void cse_eliminate(struct entrypoint *ep);
void idf_dump(struct entrypoint *ep)
void idf_compute(struct entrypoint *ep, struct basic_block_list **idf, struct basic_block_list *alpha)
void idf_dump(struct entrypoint *ep);
struct entrypoint;
void idf_compute(struct entrypoint *ep, struct basic_block_list **idf, struct basic_block_list *alpha);
static void set_up_arch_entry(struct entrypoint *ep, struct instruction *entry)
static void arch_set_up_storage(struct entrypoint *ep)
static void output(struct entrypoint *ep)
struct entrypoint *ep;
static int simplify_branch_nodes(struct entrypoint *ep)
int simplify_flow(struct entrypoint *ep)
void kill_dead_stores(struct entrypoint *ep, pseudo_t addr, int local)
void kill_unreachable_bbs(struct entrypoint *ep)
void vrfy_flow(struct entrypoint *ep)
void pack_basic_blocks(struct entrypoint *ep)
struct entrypoint;
extern int simplify_flow(struct entrypoint *ep);
extern void kill_dead_stores(struct entrypoint *ep, pseudo_t addr, int local);
extern void simplify_symbol_usage(struct entrypoint *ep);
extern void simplify_memops(struct entrypoint *ep);
extern void pack_basic_blocks(struct entrypoint *ep);
extern void remove_dead_insns(struct entrypoint *);
extern void kill_unreachable_bbs(struct entrypoint *ep);
extern void vrfy_flow(struct entrypoint *ep);
static void debug_domtree(struct entrypoint *ep)
void domtree_build(struct entrypoint *ep)
static void debug_postorder(struct entrypoint *ep)
int cfg_postorder(struct entrypoint *ep)
void domtree_build(struct entrypoint *ep);
struct entrypoint;
int cfg_postorder(struct entrypoint *ep);
static void graph_calls(struct entrypoint *ep, int internal)
static void graph_ep(struct entrypoint *ep)
static int validate_insn(struct entrypoint *ep, struct instruction *insn)
int ir_validate(struct entrypoint *ep)
static int check_branch(struct entrypoint *ep, struct instruction *insn, struct basic_block *bb)
static int check_switch(struct entrypoint *ep, struct instruction *insn)
int ir_validate(struct entrypoint *ep);
struct entrypoint;
static pseudo_t linearize_bitfield_insert(struct entrypoint *ep,
static pseudo_t linearize_store_gen(struct entrypoint *ep,
static pseudo_t add_binary_op(struct entrypoint *ep, struct symbol *ctype, int op, pseudo_t left, pseudo_t right)
static pseudo_t add_setval(struct entrypoint *ep, struct symbol *ctype, struct expression *val)
static pseudo_t add_setfval(struct entrypoint *ep, struct symbol *ctype, long double fval)
static pseudo_t add_symbol_address(struct entrypoint *ep, struct symbol *sym)
static pseudo_t linearize_bitfield_extract(struct entrypoint *ep,
static pseudo_t linearize_load_gen(struct entrypoint *ep, struct access_data *ad)
static pseudo_t linearize_access(struct entrypoint *ep, struct expression *expr)
static pseudo_t linearize_inc_dec(struct entrypoint *ep, struct expression *expr, int postop)
static pseudo_t add_unop(struct entrypoint *ep, struct symbol *ctype, int op, pseudo_t src)
static pseudo_t add_cast(struct entrypoint *ep, struct symbol *to,
static pseudo_t linearize_slice(struct entrypoint *ep, struct expression *expr)
static pseudo_t linearize_regular_preop(struct entrypoint *ep, struct expression *expr)
static pseudo_t linearize_preop(struct entrypoint *ep, struct expression *expr)
static pseudo_t linearize_postop(struct entrypoint *ep, struct expression *expr)
static pseudo_t cast_pseudo(struct entrypoint *ep, pseudo_t src, struct symbol *from, struct symbol *to)
static inline pseudo_t add_convert_to_bool(struct entrypoint *ep, pseudo_t src, struct symbol *type)
static pseudo_t linearize_expression_to_bool(struct entrypoint *ep, struct expression *expr)
static pseudo_t linearize_assignment(struct entrypoint *ep, struct expression *expr)
static pseudo_t linearize_call_expression(struct entrypoint *ep, struct expression *expr)
static pseudo_t linearize_binop_bool(struct entrypoint *ep, struct expression *expr)
static pseudo_t linearize_binop(struct entrypoint *ep, struct expression *expr)
static pseudo_t linearize_logical_branch(struct entrypoint *ep, struct expression *expr, struct basic_block *bb_true, struct basic_block *bb_false);
static pseudo_t linearize_cond_branch(struct entrypoint *ep, struct expression *expr, struct basic_block *bb_true, struct basic_block *bb_false);
static pseudo_t linearize_select(struct entrypoint *ep, struct expression *expr)
static pseudo_t add_join_conditional(struct entrypoint *ep, struct expression *expr,
static pseudo_t linearize_short_conditional(struct entrypoint *ep, struct expression *expr,
static pseudo_t linearize_conditional(struct entrypoint *ep, struct expression *expr,
static pseudo_t linearize_logical(struct entrypoint *ep, struct expression *expr)
static pseudo_t linearize_compare(struct entrypoint *ep, struct expression *expr)
static pseudo_t linearize_cond_branch(struct entrypoint *ep, struct expression *expr, struct basic_block *bb_true, struct basic_block *bb_false)
static pseudo_t linearize_logical_branch(struct entrypoint *ep, struct expression *expr, struct basic_block *bb_true, struct basic_block *bb_false)
static pseudo_t linearize_cast(struct entrypoint *ep, struct expression *expr)
static pseudo_t linearize_initializer(struct entrypoint *ep, struct expression *initializer, struct access_data *ad)
static void linearize_argument(struct entrypoint *ep, struct symbol *arg, int nr)
static pseudo_t linearize_expression(struct entrypoint *ep, struct expression *expr)
static pseudo_t linearize_one_symbol(struct entrypoint *ep, struct symbol *sym)
static pseudo_t linearize_compound_statement(struct entrypoint *ep, struct statement *stmt)
static void add_return(struct entrypoint *ep, struct basic_block *bb, struct symbol *ctype, pseudo_t src)
static pseudo_t linearize_fn_statement(struct entrypoint *ep, struct statement *stmt)
static pseudo_t linearize_inlined_call(struct entrypoint *ep, struct statement *stmt)
static pseudo_t linearize_context(struct entrypoint *ep, struct statement *stmt)
static pseudo_t linearize_range(struct entrypoint *ep, struct statement *stmt)
static void add_asm_input(struct entrypoint *ep, struct instruction *insn, struct expression *expr,
static void add_asm_output(struct entrypoint *ep, struct instruction *insn, struct expression *expr,
static pseudo_t linearize_asm_statement(struct entrypoint *ep, struct statement *stmt)
static pseudo_t linearize_declaration(struct entrypoint *ep, struct statement *stmt)
static pseudo_t linearize_return(struct entrypoint *ep, struct statement *stmt)
static pseudo_t linearize_switch(struct entrypoint *ep, struct statement *stmt)
static pseudo_t linearize_iterator(struct entrypoint *ep, struct statement *stmt)
static pseudo_t linearize_statement(struct entrypoint *ep, struct statement *stmt)
static struct entrypoint *linearize_fn(struct symbol *sym, struct symbol *base_type)
struct entrypoint *ep;
struct entrypoint *linearize_symbol(struct symbol *sym)
static pseudo_t linearize_statement(struct entrypoint *ep, struct statement *stmt);
static pseudo_t linearize_expression(struct entrypoint *ep, struct expression *expr);
static pseudo_t add_cast(struct entrypoint *ep, struct symbol *to, struct symbol *from, int op, pseudo_t src);
static pseudo_t add_binary_op(struct entrypoint *ep, struct symbol *ctype, int op, pseudo_t left, pseudo_t right);
static pseudo_t add_setval(struct entrypoint *ep, struct symbol *ctype, struct expression *val);
static pseudo_t linearize_one_symbol(struct entrypoint *ep, struct symbol *sym);
static pseudo_t add_load(struct entrypoint *ep, struct access_data *);
static pseudo_t linearize_initializer(struct entrypoint *ep, struct expression *initializer, struct access_data *);
static pseudo_t cast_pseudo(struct entrypoint *ep, pseudo_t src, struct symbol *from, struct symbol *to);
void show_entry(struct entrypoint *ep)
static struct basic_block * get_bound_block(struct entrypoint *ep, struct symbol *label)
static void finish_block(struct entrypoint *ep)
static void add_goto(struct entrypoint *ep, struct basic_block *dst)
static void add_one_insn(struct entrypoint *ep, struct instruction *insn)
static void set_activeblock(struct entrypoint *ep, struct basic_block *bb)
static struct entrypoint *alloc_entrypoint(void)
static struct basic_block *alloc_basic_block(struct entrypoint *ep, struct position pos)
static struct basic_block * add_label(struct entrypoint *ep, struct symbol *label)
static void add_branch(struct entrypoint *ep, pseudo_t cond, struct basic_block *bb_true, struct basic_block *bb_false)
static pseudo_t symbol_pseudo(struct entrypoint *ep, struct symbol *sym)
static pseudo_t argument_pseudo(struct entrypoint *ep, int nr)
static int linearize_simple_address(struct entrypoint *ep,
static int linearize_address_gen(struct entrypoint *ep,
static pseudo_t add_load(struct entrypoint *ep, struct access_data *ad)
static void add_store(struct entrypoint *ep, struct access_data *ad, pseudo_t value)
struct entrypoint *ep;
struct entrypoint *linearize_symbol(struct symbol *sym);
int unssa(struct entrypoint *ep);
void show_entry(struct entrypoint *ep);
void clear_liveness(struct entrypoint *ep)
void track_pseudo_liveness(struct entrypoint *ep)
void track_pseudo_death(struct entrypoint *ep)
struct entrypoint;
void clear_liveness(struct entrypoint *ep);
void track_pseudo_liveness(struct entrypoint *ep);
void track_pseudo_death(struct entrypoint *ep);
void simplify_memops(struct entrypoint *ep)
static void emit_entrypoint(struct entrypoint *ep)
struct entrypoint *ep;
static void clear_symbol_pseudos(struct entrypoint *ep)
static void clean_up_insns(struct entrypoint *ep)
void optimize(struct entrypoint *ep)
struct entrypoint;
void optimize(struct entrypoint *ep);
void remove_dead_insns(struct entrypoint *ep)
static void output_fn(LLVMModuleRef module, struct entrypoint *ep)
struct entrypoint *ep;
static void check_instructions(struct entrypoint *ep)
static void check_context(struct entrypoint *ep)
struct entrypoint *ep;
static int imbalance(struct entrypoint *ep, struct basic_block *bb, int entry, int exit, const char *why)
static int check_bb_context(struct entrypoint *ep, struct basic_block *bb, int entry, int exit);
static int check_children(struct entrypoint *ep, struct basic_block *bb, int entry, int exit)
static int check_bb_context(struct entrypoint *ep, struct basic_block *bb, int entry, int exit)
static void ssa_convert_one_var(struct entrypoint *ep, struct symbol *var)
static void ssa_rename_insns(struct entrypoint *ep)
static void ssa_rename_phis(struct entrypoint *ep)
void ssa_convert(struct entrypoint *ep)
struct entrypoint;
void ssa_convert(struct entrypoint *ep);
static void set_up_argument_storage(struct entrypoint *ep, struct basic_block *bb)
void set_up_storage(struct entrypoint *ep)
extern void set_up_storage(struct entrypoint *);
struct entrypoint *ep;
struct entrypoint *ep;
static void output_fn(struct entrypoint *ep)
struct entrypoint *ep;
int unssa(struct entrypoint *ep)
entersq(syncq_t *sq, int entrypoint)
uint_t c_inner = entrypoint & SQ_CI;
uint_t c_outer = entrypoint & SQ_CO;
leavesq(syncq_t *sq, int entrypoint)
uint_t c_outer = entrypoint & SQ_CO;
uint_t c_inner = entrypoint & SQ_CI;