SYMBOL INDEX (538 symbols across 22 files) FILE: lib/c.c function isdigit (line 17) | int isdigit(int c) function isalpha (line 22) | int isalpha(int c) function isalnum (line 27) | int isalnum(int c) function isxdigit (line 32) | int isxdigit(int c) function isblank (line 37) | int isblank(int c) function strlen (line 42) | int strlen(char *str) function strcmp (line 58) | int strcmp(char *s1, char *s2) function strncmp (line 71) | int strncmp(char *s1, char *s2, int len) function memcmp (line 135) | int memcmp(void *s1, void *s2, int n) function __str_base10 (line 179) | void __str_base10(char *pb, int val) function __str_base8 (line 214) | void __str_base8(char *pb, int val) function __str_base16 (line 234) | void __str_base16(char *pb, int val) type fmtbuf_t (line 272) | typedef struct { function __fmtbuf_write_char (line 278) | void __fmtbuf_write_char(fmtbuf_t *fmtbuf, int val) function __fmtbuf_write_str (line 294) | void __fmtbuf_write_str(fmtbuf_t *fmtbuf, char *str, int l) function __format (line 314) | void __format(fmtbuf_t *fmtbuf, function __format_to_buf (line 392) | void __format_to_buf(fmtbuf_t *fmtbuf, char *format, int *var_args) function printf (line 459) | int printf(char *str, ...) function sprintf (line 471) | int sprintf(char *buffer, char *str, ...) function snprintf (line 482) | int snprintf(char *buffer, int n, char *str, ...) function exit (line 495) | void exit(int exit_code) function abort (line 501) | void abort(void) function FILE (line 507) | FILE *fopen(char *filename, char *mode) function fclose (line 527) | int fclose(FILE *stream) function fgetc (line 536) | int fgetc(FILE *stream) function fputc (line 569) | int fputc(int c, FILE *stream) function fseek (line 576) | int fseek(FILE *stream, int offset, int whence) function ftell (line 590) | int ftell(FILE *stream) type chunk_t (line 608) | typedef struct chunk { function chunk_set_freed (line 613) | void chunk_set_freed(chunk_t *chunk) function chunk_clear_freed (line 618) | void chunk_clear_freed(chunk_t *chunk) function __align_up (line 623) | int __align_up(int size) function __rfree (line 730) | void __rfree(void *ptr, int size) function __free_all (line 737) | int __free_all(void) function free (line 771) | void free(void *ptr) FILE: lib/c.h type FILE (line 69) | typedef int FILE; FILE: src/arch-lower.c function arm_lower (line 17) | void arm_lower(void) function riscv_lower (line 41) | void riscv_lower(void) function arch_lower (line 60) | void arch_lower(void) FILE: src/arm-codegen.c function update_elf_offset (line 14) | void update_elf_offset(ph2_ir_t *ph2_ir) function cfg_flatten (line 159) | void cfg_flatten(void) function emit (line 252) | void emit(int code) function emit_ph2_ir (line 257) | void emit_ph2_ir(ph2_ir_t *ph2_ir) function code_generate (line 607) | void code_generate(void) function plt_generate (line 776) | void plt_generate(void) FILE: src/arm.c type arm_op_t (line 32) | typedef enum { type arm_cond_t (line 51) | typedef enum { type arm_reg (line 65) | typedef enum { type shift_type (line 84) | typedef enum { function arm_cond_t (line 91) | arm_cond_t arm_get_cond(opcode_t op) function arm_extract_bits (line 112) | int arm_extract_bits(int imm, int i_start, int i_end, int d_start, int d... function arm_encode (line 124) | int arm_encode(arm_cond_t cond, int opcode, int rn, int rd, int op2) function __svc (line 129) | int __svc(void) function __mov (line 134) | int __mov(arm_cond_t cond, int io, int opcode, int s, int rn, int rd, in... function __and_r (line 152) | int __and_r(arm_cond_t cond, arm_reg rd, arm_reg rs, arm_reg rm) function __or_r (line 157) | int __or_r(arm_cond_t cond, arm_reg rd, arm_reg rs, arm_reg rm) function __eor_r (line 162) | int __eor_r(arm_cond_t cond, arm_reg rd, arm_reg rs, arm_reg rm) function __mvn_r (line 167) | int __mvn_r(arm_cond_t cond, arm_reg rd, arm_reg rm) function __movw (line 172) | int __movw(arm_cond_t cond, arm_reg rd, int imm) function __movt (line 179) | int __movt(arm_cond_t cond, arm_reg rd, int imm) function __mov_i (line 187) | int __mov_i(arm_cond_t cond, arm_reg rd, int imm) function __mov_r (line 192) | int __mov_r(arm_cond_t cond, arm_reg rd, arm_reg rs) function __srl (line 197) | int __srl(arm_cond_t cond, arm_reg rd, arm_reg rm, arm_reg rs) function __srl_amt (line 203) | int __srl_amt(arm_cond_t cond, function __sll (line 214) | int __sll(arm_cond_t cond, arm_reg rd, arm_reg rm, arm_reg rs) function __sll_amt (line 220) | int __sll_amt(arm_cond_t cond, function __sra (line 231) | int __sra(arm_cond_t cond, arm_reg rd, arm_reg rm, arm_reg rs) function __add_i (line 241) | int __add_i(arm_cond_t cond, arm_reg rd, arm_reg rs, int imm) function __add_r (line 248) | int __add_r(arm_cond_t cond, arm_reg rd, arm_reg rs, arm_reg ro) function __sub_r (line 253) | int __sub_r(arm_cond_t cond, arm_reg rd, arm_reg rs, arm_reg ro) function __and_i (line 258) | int __and_i(arm_cond_t cond, arm_reg rd, arm_reg rs, int imm) function __zero (line 263) | int __zero(int rd) function arm_halfword_transfer (line 274) | int arm_halfword_transfer(arm_cond_t cond, function arm_transfer (line 301) | int arm_transfer(arm_cond_t cond, function __lw (line 318) | int __lw(arm_cond_t cond, arm_reg rd, arm_reg rn, int ofs) function __lb (line 323) | int __lb(arm_cond_t cond, arm_reg rd, arm_reg rn, int ofs) function __sw (line 328) | int __sw(arm_cond_t cond, arm_reg rd, arm_reg rn, int ofs) function __sb (line 333) | int __sb(arm_cond_t cond, arm_reg rd, arm_reg rn, int ofs) function __lh (line 339) | int __lh(arm_cond_t cond, arm_reg rd, arm_reg rn, int ofs) function __sh (line 345) | int __sh(arm_cond_t cond, arm_reg rd, arm_reg rn, int ofs) function __stmdb (line 350) | int __stmdb(arm_cond_t cond, int w, arm_reg rn, int reg_list) function __ldm (line 355) | int __ldm(arm_cond_t cond, int w, arm_reg rn, int reg_list) function __push_reg (line 360) | int __push_reg(arm_cond_t cond, arm_reg rt) function __pop_word (line 365) | int __pop_word(arm_cond_t cond, arm_reg rt) function __b (line 370) | int __b(arm_cond_t cond, int ofs) function __bl (line 376) | int __bl(arm_cond_t cond, int ofs) function __bx (line 382) | int __bx(arm_cond_t cond, arm_reg rm) function __blx (line 388) | int __blx(arm_cond_t cond, arm_reg rd) function __mul (line 393) | int __mul(arm_cond_t cond, arm_reg rd, arm_reg r1, arm_reg r2) function __div (line 398) | int __div(arm_cond_t cond, arm_reg rd, arm_reg r1, arm_reg r2) function __rsb_i (line 403) | int __rsb_i(arm_cond_t cond, arm_reg rd, int imm, arm_reg rn) function __cmp_r (line 408) | int __cmp_r(arm_cond_t cond, arm_reg r1, arm_reg r2) function __cmp_i (line 413) | int __cmp_i(arm_cond_t cond, arm_reg rn, int imm) function __teq (line 418) | int __teq(arm_reg rd) function __sxtb (line 423) | int __sxtb(arm_cond_t cond, arm_reg rd, arm_reg rm, int rotation) function __sxth (line 432) | int __sxth(arm_cond_t cond, arm_reg rd, arm_reg rm, int rotation) FILE: src/defs.h type arena_block_t (line 105) | typedef struct arena_block { type arena_t (line 112) | typedef struct { type hashmap_node_t (line 120) | typedef struct hashmap_node { type hashmap_t (line 126) | typedef struct { type token_kind_t (line 133) | typedef enum { type source_location_t (line 226) | typedef struct { type token_t (line 234) | typedef struct token { type token_stream_t (line 241) | typedef struct token_stream { type string_pool_t (line 247) | typedef struct { type string_literal_pool_t (line 252) | typedef struct { type base_type_t (line 257) | typedef enum { type opcode_t (line 268) | typedef enum { type rename_t (line 343) | typedef struct { type ref_block_t (line 349) | typedef struct ref_block ref_block_t; type ref_block_list (line 351) | struct ref_block_list { type ref_block_list_t (line 355) | typedef struct ref_block_list ref_block_list_t; type insn_t (line 357) | typedef struct insn insn_t; type use_chain_t (line 359) | typedef struct use_chain_node { type var_t (line 364) | typedef struct var var_t; type type_t (line 365) | typedef struct type type_t; type var_list_t (line 367) | typedef struct var_list { type var (line 373) | struct var { type func_t (line 419) | typedef struct func func_t; type block (line 422) | struct block { type block_t (line 429) | typedef struct block block_t; type basic_block_t (line 430) | typedef struct basic_block basic_block_t; type strbuf_t (line 437) | typedef struct { type ph2_ir (line 444) | struct ph2_ir { type ph2_ir_t (line 467) | typedef struct ph2_ir ph2_ir_t; type type (line 470) | struct type { type lvalue_t (line 481) | typedef struct { type constant_t (line 490) | typedef struct { type phi_operand (line 495) | struct phi_operand { type phi_operand_t (line 501) | typedef struct phi_operand phi_operand_t; type insn (line 503) | struct insn { type insn_list_t (line 517) | typedef struct { type ph2_ir_list_t (line 521) | typedef struct { type bb_connection_type_t (line 525) | typedef enum { NEXT, ELSE, THEN } bb_connection_type_t; type bb_connection_t (line 527) | typedef struct { type symbol (line 532) | struct symbol { type symbol_t (line 538) | typedef struct symbol symbol_t; type symbol_list_t (line 540) | typedef struct { type basic_block (line 544) | struct basic_block { type ref_block (line 579) | struct ref_block { type label_t (line 589) | typedef struct { type func (line 595) | struct func { type func_list_t (line 617) | typedef struct { type bb_traversal_args_t (line 621) | typedef struct { type regfile_t (line 628) | typedef struct { type elf32_hdr_t (line 634) | typedef struct { type elf32_phdr_t (line 652) | typedef struct { type elf32_shdr_t (line 664) | typedef struct { type dynamic_sections_t (line 679) | typedef struct { type elf32_sym_t (line 697) | typedef struct { type elf32_rel_t (line 707) | typedef struct { type elf32_dyn_t (line 713) | typedef struct { FILE: src/elf.c function elf_write_str (line 20) | void elf_write_str(strbuf_t *elf_array, const char *vals) function elf_write_byte (line 32) | void elf_write_byte(strbuf_t *elf_array, int val) function e_extract_byte (line 39) | char e_extract_byte(int v, int b) function elf_write_int (line 44) | void elf_write_int(strbuf_t *elf_array, int val) function elf_write_blk (line 52) | void elf_write_blk(strbuf_t *elf_array, void *blk, int sz) function elf_generate_header (line 61) | void elf_generate_header(void) function elf_generate_program_headers (line 188) | void elf_generate_program_headers(void) function elf_generate_section_headers (line 309) | void elf_generate_section_headers(void) function elf_align (line 586) | void elf_align(strbuf_t *elf_array) function elf_generate_sections (line 598) | void elf_generate_sections(void) function elf_add_symbol (line 819) | void elf_add_symbol(const char *symbol, int pc) function elf_preprocess (line 837) | void elf_preprocess(void) function elf_postprocess (line 917) | void elf_postprocess(void) function elf_generate (line 924) | void elf_generate(const char *outfile) FILE: src/globals.c function arena_block_t (line 110) | arena_block_t *arena_block_create(int capacity) function arena_block_free (line 136) | void arena_block_free(arena_block_t *block) function arena_t (line 147) | arena_t *arena_init(int initial_capacity) function func_t (line 308) | func_t *arena_alloc_func(void) function symbol_t (line 313) | symbol_t *arena_alloc_symbol(void) function constant_t (line 318) | constant_t *arena_alloc_constant(void) function bb_traversal_args_t (line 327) | bb_traversal_args_t *arena_alloc_traversal_args(void) function arena_free (line 333) | void arena_free(arena_t *arena) function hashmap_hash_index (line 356) | int hashmap_hash_index(int size, char *key) function round_up_pow2 (line 372) | int round_up_pow2(int v) function hashmap_t (line 391) | hashmap_t *hashmap_create(int cap) function hashmap_rehash (line 414) | void hashmap_rehash(hashmap_t *map) function hashmap_put (line 467) | void hashmap_put(hashmap_t *map, char *key, void *val) function hashmap_node_t (line 505) | hashmap_node_t *hashmap_get_node(hashmap_t *map, char *key) function hashmap_contains (line 545) | bool hashmap_contains(hashmap_t *map, char *key) function hashmap_free (line 553) | void hashmap_free(hashmap_t *map) function type_t (line 571) | type_t *find_type(char *type_name, int flag) function ph2_ir_t (line 596) | ph2_ir_t *add_existed_ph2_ir(ph2_ir_t *ph2_ir) function ph2_ir_t (line 602) | ph2_ir_t *add_ph2_ir(opcode_t op) function set_var_liveout (line 620) | void set_var_liveout(var_t *var, int end) function block_t (line 627) | block_t *add_block(block_t *parent, func_t *func) function hex_digit_value (line 676) | int hex_digit_value(char c) function unescape_string (line 687) | int unescape_string(const char *input, char *output, int output_size) function parse_numeric_constant (line 808) | int parse_numeric_constant(char *buffer) function type_t (line 845) | type_t *add_type(void) function type_t (line 854) | type_t *add_named_type(char *name) function add_constant (line 862) | void add_constant(char alias[], int value) function constant_t (line 876) | constant_t *find_constant(char alias[]) function var_t (line 881) | var_t *find_member(char token[], type_t *type) function var_t (line 896) | var_t *find_local_var(char *token, block_t *block) function var_t (line 917) | var_t *find_global_var(char *token) function var_t (line 928) | var_t *find_var(char *token, block_t *parent) function size_var (line 936) | int size_var(var_t *var) function func_t (line 966) | func_t *add_func(char *func_name, bool synthesize) function func_t (line 1024) | func_t *find_func(char *func_name) function basic_block_t (line 1030) | basic_block_t *bb_create(block_t *parent) function bb_connect (line 1053) | void bb_connect(basic_block_t *pred, function bb_disconnect (line 1090) | void bb_disconnect(basic_block_t *pred, basic_block_t *succ) function add_symbol (line 1115) | void add_symbol(basic_block_t *bb, var_t *var) function add_insn (line 1139) | void add_insn(block_t *block, function strbuf_t (line 1188) | strbuf_t *strbuf_create(int init_capacity) function strbuf_extend (line 1205) | bool strbuf_extend(strbuf_t *src, int len) function strbuf_putc (line 1230) | bool strbuf_putc(strbuf_t *src, char value) function strbuf_puts (line 1241) | bool strbuf_puts(strbuf_t *src, const char *value) function strbuf_free (line 1254) | void strbuf_free(strbuf_t *src) function global_init (line 1266) | void global_init(void) function arena_free_trailing_blocks (line 1330) | int arena_free_trailing_blocks(arena_t *arena) function compact_all_arenas (line 1371) | int compact_all_arenas(void) function compact_arenas_selective (line 1393) | int compact_arenas_selective(int phase_mask) function global_release (line 1415) | void global_release(void) function fatal (line 1458) | void fatal(char *msg) function error_at (line 1468) | void error_at(char *msg, source_location_t *loc) function print_indent (line 1521) | void print_indent(int indent) function dump_bb_insn (line 1527) | void dump_bb_insn(func_t *func, basic_block_t *bb, bool *at_func_start) function dump_bb_insn_by_dom (line 1757) | void dump_bb_insn_by_dom(func_t *func, basic_block_t *bb, bool *at_func_... function dump_insn (line 1767) | void dump_insn(void) FILE: src/lexer.c type token_mapping_t (line 18) | typedef struct { function lex_init_directives (line 31) | void lex_init_directives() function lex_init_keywords (line 60) | void lex_init_keywords() function token_kind_t (line 101) | token_kind_t lookup_directive(char *token) function token_kind_t (line 114) | token_kind_t lookup_keyword(char *token) function lexer_cleanup (line 128) | void lexer_cleanup() function peek_char (line 148) | char peek_char(strbuf_t *buf, int offset) function read_char (line 155) | char read_char(strbuf_t *buf) function strbuf_t (line 163) | strbuf_t *read_file(char *filename) function strbuf_t (line 187) | strbuf_t *get_file_buf(char *filename) function token_t (line 201) | token_t *new_token(token_kind_t kind, source_location_t *loc, int len) function token_t (line 210) | token_t *lex_token(strbuf_t *buf, source_location_t *loc) function token_stream_t (line 923) | token_stream_t *gen_file_token_stream(char *filename) function token_stream_t (line 976) | token_stream_t *gen_libc_token_stream() function skip_unused_token (line 1024) | void skip_unused_token(void) function source_location_t (line 1037) | source_location_t *cur_token_loc() function source_location_t (line 1045) | source_location_t *next_token_loc() function token_kind_t (line 1056) | token_kind_t lex_next(void) function lex_accept (line 1068) | bool lex_accept(token_kind_t kind) function lex_peek (line 1081) | bool lex_peek(token_kind_t kind, char *value) function lex_ident (line 1096) | void lex_ident(token_kind_t token, char *value) function lex_expect (line 1111) | void lex_expect(token_kind_t token) FILE: src/main.c function main (line 52) | int main(int argc, char *argv[]) FILE: src/opt-sccp.c function simple_sccp (line 18) | bool simple_sccp(func_t *func) function optimize_constant_casts (line 202) | bool optimize_constant_casts(func_t *func) FILE: src/parser.c function label_t (line 51) | label_t *find_label(char *name) function add_label (line 60) | void add_label(char *name, basic_block_t *bb) function var_t (line 76) | var_t *require_var(block_t *blk) function var_t (line 105) | var_t *require_typed_var(block_t *blk, type_t *type) function var_t (line 115) | var_t *require_typed_ptr_var(block_t *blk, type_t *type, int ptr) function var_t (line 122) | var_t *require_ref_var(block_t *blk, type_t *type, int ptr) function var_t (line 132) | var_t *require_deref_var(block_t *blk, type_t *type, int ptr) function opstack_push (line 151) | void opstack_push(var_t *var) function var_t (line 156) | var_t *opstack_pop(void) function write_symbol (line 163) | int write_symbol(const char *data) function get_size (line 172) | int get_size(var_t *var) function get_operator_prio (line 179) | int get_operator_prio(opcode_t op) function get_unary_operator_prio (line 218) | int get_unary_operator_prio(opcode_t op) function opcode_t (line 231) | opcode_t get_operator(void) function var_t (line 275) | var_t *promote_unchecked(block_t *block, function var_t (line 298) | var_t *promote(block_t *block, function var_t (line 317) | var_t *truncate_unchecked(block_t *block, function var_t (line 330) | var_t *resize_var(block_t *block, basic_block_t **bb, var_t *from, var_t... function var_t (line 362) | var_t *compute_element_address(block_t *parent, function var_t (line 382) | var_t *compute_field_address(block_t *parent, function var_t (line 401) | var_t *parse_global_constant_value(block_t *parent, basic_block_t **bb) function consume_global_constant_syntax (line 441) | void consume_global_constant_syntax(void) function parse_struct_field_init (line 458) | void parse_struct_field_init(block_t *parent, function parse_array_literal_expr (line 508) | void parse_array_literal_expr(block_t *parent, basic_block_t **bb) function basic_block_t (line 549) | basic_block_t *handle_return_statement(block_t *parent, basic_block_t *bb) function basic_block_t (line 581) | basic_block_t *handle_if_statement(block_t *parent, basic_block_t *bb) function basic_block_t (line 631) | basic_block_t *handle_while_statement(block_t *parent, basic_block_t *bb) function basic_block_t (line 664) | basic_block_t *handle_goto_statement(block_t *parent, basic_block_t *bb) function basic_block_t (line 719) | basic_block_t *handle_struct_variable_decl(block_t *parent, function parse_array_init (line 805) | void parse_array_init(var_t *var, function parse_array_compound_literal (line 969) | void parse_array_compound_literal(var_t *var, function is_array_literal_placeholder (line 1009) | bool is_array_literal_placeholder(var_t *var) function is_pointer_like_value (line 1015) | bool is_pointer_like_value(var_t *var) function var_t (line 1026) | var_t *scalarize_array_literal(block_t *parent, function var_t (line 1066) | var_t *scalarize_array_literal_if_needed(block_t *parent, function read_inner_var_decl (line 1078) | void read_inner_var_decl(var_t *vd, bool anon, bool is_param) function read_full_var_decl (line 1182) | void read_full_var_decl(var_t *vd, bool anon, bool is_param) function read_partial_var_decl (line 1204) | void read_partial_var_decl(var_t *vd, var_t *template) function read_parameter_list_decl (line 1209) | void read_parameter_list_decl(func_t *func, bool anon) function read_literal_param (line 1249) | void read_literal_param(block_t *parent, basic_block_t *bb) function read_numeric_param (line 1282) | void read_numeric_param(block_t *parent, basic_block_t *bb, bool is_neg) function read_char_param (line 1347) | void read_char_param(block_t *parent, basic_block_t *bb) function read_func_parameters (line 1362) | void read_func_parameters(func_t *func, block_t *parent, basic_block_t *... function read_func_call (line 1406) | void read_func_call(func_t *func, block_t *parent, basic_block_t **bb) function read_indirect_call (line 1415) | void read_indirect_call(block_t *parent, basic_block_t **bb) function handle_address_of_operator (line 1433) | void handle_address_of_operator(block_t *parent, basic_block_t **bb) function handle_single_dereference (line 1452) | void handle_single_dereference(block_t *parent, basic_block_t **bb) function handle_multiple_dereference (line 1523) | void handle_multiple_dereference(block_t *parent, basic_block_t **bb) function handle_sizeof_operator (line 1607) | void handle_sizeof_operator(block_t *parent, basic_block_t **bb) function read_expr_operand (line 1653) | void read_expr_operand(block_t *parent, basic_block_t **bb) function is_logical (line 2103) | bool is_logical(opcode_t op) function get_pointer_element_size (line 2109) | int get_pointer_element_size(var_t *ptr_var) function handle_pointer_difference (line 2156) | void handle_pointer_difference(block_t *parent, function handle_pointer_arithmetic (line 2189) | void handle_pointer_arithmetic(block_t *parent, function is_pointer_operation (line 2354) | bool is_pointer_operation(opcode_t op, var_t *rs1, var_t *rs2) function is_pointer_var (line 2364) | bool is_pointer_var(var_t *v, block_t *parent) function read_expr (line 2383) | void read_expr(block_t *parent, basic_block_t **bb) function read_lvalue (line 2684) | void read_lvalue(lvalue_t *lvalue, function read_logical (line 3040) | void read_logical(opcode_t op, block_t *parent, basic_block_t **bb) function finalize_logical (line 3061) | void finalize_logical(opcode_t op, function read_ternary_operation (line 3198) | void read_ternary_operation(block_t *parent, basic_block_t **bb) function read_body_assignment (line 3275) | bool read_body_assignment(char *token, function read_primary_constant (line 3474) | int read_primary_constant(void) function eval_expression_imm (line 3499) | int eval_expression_imm(opcode_t op, int op1, int op2) function eval_ternary_imm (line 3563) | void eval_ternary_imm(int cond, char *token) function read_global_assignment (line 3580) | bool read_global_assignment(char *token) function perform_side_effect (line 3737) | void perform_side_effect(block_t *parent, basic_block_t *bb) function basic_block_t (line 3751) | basic_block_t *read_body_statement(block_t *parent, basic_block_t *bb) function basic_block_t (line 4598) | basic_block_t *read_code_block(func_t *func, block_t *parent, basic_bloc... function read_func_body (line 4615) | void read_func_body(func_t *func) function print_ptr_level (line 4654) | void print_ptr_level(int level) function print_func_decl (line 4662) | void print_func_decl(func_t *func, const char *prefix, bool newline) function read_global_decl (line 4698) | void read_global_decl(block_t *block, bool is_const) function consume_global_compound_literal (line 4811) | void consume_global_compound_literal(void) function initialize_struct_field (line 4842) | void initialize_struct_field(var_t *nv, var_t *v, int offset) function read_global_statement (line 4861) | void read_global_statement(void) function parse_internal (line 5189) | void parse_internal(void) function parse (line 5265) | void parse(token_t *tk) FILE: src/peephole.c function is_fusible_insn (line 16) | bool is_fusible_insn(ph2_ir_t *ph2_ir) function insn_fusion (line 47) | bool insn_fusion(ph2_ir_t *ph2_ir) function redundant_move_elim (line 248) | bool redundant_move_elim(ph2_ir_t *ph2_ir) function eliminate_load_store_pairs (line 356) | bool eliminate_load_store_pairs(ph2_ir_t *ph2_ir) function algebraic_simplification (line 464) | bool algebraic_simplification(ph2_ir_t *ph2_ir) function strength_reduction (line 531) | bool strength_reduction(ph2_ir_t *ph2_ir) function comparison_optimization (line 602) | bool comparison_optimization(ph2_ir_t *ph2_ir) function bitwise_optimization (line 677) | bool bitwise_optimization(ph2_ir_t *ph2_ir) function triple_pattern_optimization (line 780) | bool triple_pattern_optimization(ph2_ir_t *ph2_ir) function peephole (line 877) | void peephole(void) FILE: src/preprocessor.c function token_t (line 15) | token_t *pp_lex_skip_space(token_t *tk) function token_t (line 23) | token_t *pp_lex_next_token(token_t *tk, bool skip_space) function pp_lex_peek_token (line 30) | bool pp_lex_peek_token(token_t *tk, token_kind_t kind, bool skip_space) function token_t (line 37) | token_t *pp_lex_expect_token(token_t *tk, token_kind_t kind, bool skip_s... function token_t (line 52) | token_t *lex_ident_token(token_t *tk, function token_t (line 63) | token_t *copy_token(token_t *tk) type macro_t (line 71) | typedef struct macro { function is_macro_defined (line 83) | bool is_macro_defined(char *name) function token_t (line 93) | token_t *file_macro_handler(token_t *tk) function token_t (line 105) | token_t *line_macro_handler(token_t *tk) type hide_set_t (line 121) | typedef struct hide_set { function hide_set_t (line 126) | hide_set_t *new_hide_set(char *name) function hide_set_t (line 134) | hide_set_t *hide_set_union(hide_set_t *hs1, hide_set_t *hs2) function hide_set_contains (line 148) | bool hide_set_contains(hide_set_t *hs, char *name) function hide_set_free (line 156) | void hide_set_free(hide_set_t *hs) type cond_kind_t (line 165) | typedef enum { CK_if_then, CK_elif_then, CK_else_then } cond_kind_t; type cond_incl_t (line 171) | typedef struct cond_incl { function cond_incl_t (line 178) | cond_incl_t *push_cond(cond_incl_t *ci, token_t *tk, bool included) type preprocess_ctx_t (line 197) | typedef struct preprocess_ctx { function pp_get_operator_prio (line 208) | int pp_get_operator_prio(opcode_t op) function pp_get_unary_operator_prio (line 244) | int pp_get_unary_operator_prio(opcode_t op) function token_t (line 257) | token_t *pp_get_operator(token_t *tk, opcode_t *op) function token_t (line 332) | token_t *pp_read_constant_expr_operand(token_t *tk, int *val) function token_t (line 388) | token_t *pp_read_constant_infix_expr(int precedence, token_t *tk, int *val) function token_t (line 494) | token_t *pp_read_constant_expr(token_t *tk, int *val) function token_t (line 502) | token_t *pp_skip_inner_cond_incl(token_t *tk) function token_t (line 531) | token_t *pp_skip_cond_incl(token_t *tk) function token_t (line 552) | token_t *pp_preprocess_internal(token_t *tk, preprocess_ctx_t *ctx) function token_t (line 1034) | token_t *preprocess(token_t *tk) function emit_preprocessed_token (line 1276) | void emit_preprocessed_token(token_t *tk) FILE: src/reg-alloc.c function vreg_map_to_phys (line 17) | void vreg_map_to_phys(var_t *var, int phys_reg) function vreg_get_phys (line 23) | int vreg_get_phys(var_t *var) function vreg_clear_phys (line 30) | void vreg_clear_phys(var_t *var) function align_size (line 42) | int align_size(int i) function check_live_out (line 47) | bool check_live_out(basic_block_t *bb, var_t *var) function track_var_use (line 56) | void track_var_use(var_t *var, int insn_idx) function refresh (line 69) | void refresh(basic_block_t *bb, insn_t *insn) function ph2_ir_t (line 84) | ph2_ir_t *bb_add_ph2_ir(basic_block_t *bb, opcode_t op) function calculate_spill_cost (line 113) | int calculate_spill_cost(var_t *var, basic_block_t *bb, int current_idx) function find_best_spill (line 162) | int find_best_spill(basic_block_t *bb, function spill_var (line 192) | void spill_var(basic_block_t *bb, var_t *var, int idx) function find_in_regs (line 216) | int find_in_regs(var_t *var) function load_var (line 225) | void load_var(basic_block_t *bb, var_t *var, int idx) function prepare_operand (line 246) | int prepare_operand(basic_block_t *bb, var_t *var, int operand_0) function prepare_dest (line 290) | int prepare_dest(basic_block_t *bb, var_t *var, int operand_0, int opera... function spill_alive (line 338) | void spill_alive(basic_block_t *bb, insn_t *insn) function spill_live_out (line 364) | void spill_live_out(basic_block_t *bb) function extend_liveness (line 386) | void extend_liveness(basic_block_t *bb, insn_t *insn, var_t *var, int of... function abi_lower_call_args (line 395) | bool abi_lower_call_args(basic_block_t *bb, insn_t *insn) function reg_alloc (line 421) | void reg_alloc(void) function dump_ph2_ir (line 1022) | void dump_ph2_ir(void) FILE: src/riscv-codegen.c function update_elf_offset (line 13) | void update_elf_offset(ph2_ir_t *ph2_ir) function cfg_flatten (line 119) | void cfg_flatten(void) function emit (line 173) | void emit(int code) function emit_ph2_ir (line 178) | void emit_ph2_ir(ph2_ir_t *ph2_ir) function code_generate (line 485) | void code_generate(void) FILE: src/riscv.c type rv_op (line 11) | typedef enum { type rv_reg (line 66) | typedef enum { function rv_extract_bits (line 101) | int rv_extract_bits(int imm, int i_start, int i_end, int d_start, int d_... function rv_hi (line 115) | int rv_hi(int val) function rv_lo (line 120) | int rv_lo(int val) function rv_encode_R (line 125) | int rv_encode_R(rv_op op, rv_reg rd, rv_reg rs1, rv_reg rs2) function rv_encode_I (line 130) | int rv_encode_I(rv_op op, rv_reg rd, rv_reg rs1, int imm) function rv_encode_S (line 142) | int rv_encode_S(rv_op op, rv_reg rs1, rv_reg rs2, int imm) function rv_encode_B (line 155) | int rv_encode_B(rv_op op, rv_reg rs1, rv_reg rs2, int imm) function rv_encode_J (line 171) | int rv_encode_J(rv_op op, rv_reg rd, int imm) function rv_encode_U (line 185) | int rv_encode_U(rv_op op, rv_reg rd, int imm) function __add (line 190) | int __add(rv_reg rd, rv_reg rs1, rv_reg rs2) function __sub (line 195) | int __sub(rv_reg rd, rv_reg rs1, rv_reg rs2) function __xor (line 200) | int __xor(rv_reg rd, rv_reg rs1, rv_reg rs2) function __or (line 205) | int __or(rv_reg rd, rv_reg rs1, rv_reg rs2) function __and (line 210) | int __and(rv_reg rd, rv_reg rs1, rv_reg rs2) function __sll (line 215) | int __sll(rv_reg rd, rv_reg rs1, rv_reg rs2) function __srl (line 220) | int __srl(rv_reg rd, rv_reg rs1, rv_reg rs2) function __sra (line 225) | int __sra(rv_reg rd, rv_reg rs1, rv_reg rs2) function __slt (line 230) | int __slt(rv_reg rd, rv_reg rs1, rv_reg rs2) function __sltu (line 235) | int __sltu(rv_reg rd, rv_reg rs1, rv_reg rs2) function __addi (line 240) | int __addi(rv_reg rd, rv_reg rs1, int imm) function __xori (line 245) | int __xori(rv_reg rd, rv_reg rs1, int imm) function __ori (line 250) | int __ori(rv_reg rd, rv_reg rs1, int imm) function __andi (line 255) | int __andi(rv_reg rd, rv_reg rs1, int imm) function __slli (line 260) | int __slli(rv_reg rd, rv_reg rs1, int imm) function __srli (line 265) | int __srli(rv_reg rd, rv_reg rs1, int imm) function __srai (line 270) | int __srai(rv_reg rd, rv_reg rs1, int imm) function __slti (line 275) | int __slti(rv_reg rd, rv_reg rs1, int imm) function __sltiu (line 280) | int __sltiu(rv_reg rd, rv_reg rs1, int imm) function __lb (line 285) | int __lb(rv_reg rd, rv_reg rs1, int imm) function __lh (line 290) | int __lh(rv_reg rd, rv_reg rs1, int imm) function __lw (line 295) | int __lw(rv_reg rd, rv_reg rs1, int imm) function __lbu (line 300) | int __lbu(rv_reg rd, rv_reg rs1, int imm) function __lhu (line 305) | int __lhu(rv_reg rd, rv_reg rs1, int imm) function __sb (line 310) | int __sb(rv_reg rd, rv_reg rs1, int imm) function __sh (line 315) | int __sh(rv_reg rd, rv_reg rs1, int imm) function __sw (line 320) | int __sw(rv_reg rd, rv_reg rs1, int imm) function __beq (line 325) | int __beq(rv_reg rs1, rv_reg rs2, int imm) function __bne (line 330) | int __bne(rv_reg rs1, rv_reg rs2, int imm) function __blt (line 335) | int __blt(rv_reg rs1, rv_reg rs2, int imm) function __bge (line 340) | int __bge(rv_reg rs1, rv_reg rs2, int imm) function __bltu (line 345) | int __bltu(rv_reg rs1, rv_reg rs2, int imm) function __bgeu (line 350) | int __bgeu(rv_reg rs1, rv_reg rs2, int imm) function __jal (line 355) | int __jal(rv_reg rd, int imm) function __jalr (line 360) | int __jalr(rv_reg rd, rv_reg rs1, int imm) function __lui (line 365) | int __lui(rv_reg rd, int imm) function __auipc (line 370) | int __auipc(rv_reg rd, int imm) function __ecall (line 375) | int __ecall(void) function __mul (line 381) | int __mul(rv_reg rd, rv_reg rs1, rv_reg rs2) function __div (line 386) | int __div(rv_reg rd, rv_reg rs1, rv_reg rs2) function __mod (line 391) | int __mod(rv_reg rd, rv_reg rs1, rv_reg rs2) function __sext_b (line 396) | int __sext_b(rv_reg rd, rv_reg rs) FILE: src/ssa.c function var_list_ensure_capacity (line 23) | void var_list_ensure_capacity(var_list_t *list, int min_capacity) function var_list_add_var (line 42) | void var_list_add_var(var_list_t *list, var_t *var) function var_list_assign_array (line 53) | void var_list_assign_array(var_list_t *list, var_t **data, int count) function bb_forward_traversal (line 61) | void bb_forward_traversal(bb_traversal_args_t *args) function bb_backward_traversal (line 96) | void bb_backward_traversal(bb_traversal_args_t *args) function bb_index_rpo (line 120) | void bb_index_rpo(func_t *func, basic_block_t *bb) function bb_reverse_index (line 125) | void bb_reverse_index(func_t *func, basic_block_t *bb) function bb_build_rpo (line 130) | void bb_build_rpo(func_t *func, basic_block_t *bb) function build_rpo (line 151) | void build_rpo(void) function basic_block_t (line 176) | basic_block_t *intersect(basic_block_t *i, basic_block_t *j) function build_idom (line 198) | void build_idom(void) function dom_connect (line 242) | bool dom_connect(basic_block_t *pred, basic_block_t *succ) function bb_build_dom (line 263) | void bb_build_dom(func_t *func, basic_block_t *bb) function build_dom (line 273) | void build_dom(void) function bb_build_df (line 290) | void bb_build_df(func_t *func, basic_block_t *bb) function build_df (line 311) | void build_df(void) function basic_block_t (line 328) | basic_block_t *reverse_intersect(basic_block_t *i, basic_block_t *j) function build_r_idom (line 339) | void build_r_idom(void) function rdom_connect (line 380) | bool rdom_connect(basic_block_t *pred, basic_block_t *succ) function bb_build_rdom (line 401) | void bb_build_rdom(func_t *func, basic_block_t *bb) function build_rdom (line 411) | void build_rdom(void) function bb_build_rdf (line 428) | void bb_build_rdf(func_t *func, basic_block_t *bb) function build_rdf (line 459) | void build_rdf(void) function use_chain_add_tail (line 476) | void use_chain_add_tail(insn_t *i, var_t *var) function use_chain_delete (line 489) | void use_chain_delete(use_chain_t *u, var_t *var) function use_chain_build (line 505) | void use_chain_build(void) function var_check_killed (line 523) | bool var_check_killed(var_t *var, basic_block_t *bb) function bb_add_killed_var (line 532) | void bb_add_killed_var(basic_block_t *bb, var_t *var) function var_add_killed_bb (line 537) | void var_add_killed_bb(var_t *var, basic_block_t *bb) function fn_add_global (line 560) | void fn_add_global(func_t *func, var_t *var) function bb_solve_globals (line 586) | void bb_solve_globals(func_t *func, basic_block_t *bb) function solve_globals (line 604) | void solve_globals(void) function var_check_in_scope (line 621) | bool var_check_in_scope(var_t *var, block_t *block) function insert_phi_insn (line 641) | bool insert_phi_insn(basic_block_t *bb, var_t *var) function solve_phi_insertion (line 670) | void solve_phi_insertion(void) function new_name (line 747) | void new_name(block_t *block, var_t **var) function var_t (line 765) | var_t *get_stack_top_subscript_var(var_t *var) function rename_var (line 780) | void rename_var(var_t **var) function pop_name (line 791) | void pop_name(var_t *var) function append_phi_operand (line 798) | void append_phi_operand(insn_t *insn, var_t *var, basic_block_t *bb_from) function bb_solve_phi_params (line 813) | void bb_solve_phi_params(basic_block_t *bb) function solve_phi_params (line 866) | void solve_phi_params(void) function append_unwound_phi_insn (line 892) | void append_unwound_phi_insn(basic_block_t *bb, var_t *dest, var_t *rs) function bb_unwind_phi (line 922) | void bb_unwind_phi(func_t *func, basic_block_t *bb) function unwind_phi (line 943) | void unwind_phi(void) function is_dominate (line 960) | bool is_dominate(basic_block_t *pred, basic_block_t *succ) function bb_check_var_cross_init (line 982) | void bb_check_var_cross_init(func_t *func, basic_block_t *bb) function check_var_cross_init (line 1019) | void check_var_cross_init() function bb_dump_connection (line 1038) | void bb_dump_connection(FILE *fd, function bb_dump (line 1128) | void bb_dump(FILE *fd, func_t *func, basic_block_t *bb) function dump_cfg (line 1332) | void dump_cfg(char name[]) function dom_dump (line 1353) | void dom_dump(FILE *fd, basic_block_t *bb) function dump_dom (line 1364) | void dump_dom(char name[]) function ssa_build (line 1386) | void ssa_build(void) function is_cse_candidate (line 1412) | bool is_cse_candidate(insn_t *insn) function cse (line 1441) | bool cse(insn_t *insn, basic_block_t *bb) function mark_const (line 1547) | bool mark_const(insn_t *insn) function eval_const_arithmetic (line 1577) | bool eval_const_arithmetic(insn_t *insn) function eval_const_unary (line 1662) | bool eval_const_unary(insn_t *insn) function const_folding (line 1693) | bool const_folding(insn_t *insn) function is_block_unreachable (line 1705) | bool is_block_unreachable(basic_block_t *bb) function var_escapes (line 1730) | bool var_escapes(var_t *var) function dce_init_mark (line 1749) | int dce_init_mark(insn_t *insn, insn_t *work_list[], int work_list_idx) function dce_insn (line 1822) | void dce_insn(basic_block_t *bb) function dce_sweep (line 1905) | void dce_sweep(void) function optimize (line 1970) | void optimize(void) function bb_index_reversed_rpo (line 2446) | void bb_index_reversed_rpo(func_t *func, basic_block_t *bb) function bb_reverse_reversed_index (line 2451) | void bb_reverse_reversed_index(func_t *func, basic_block_t *bb) function bb_build_reversed_rpo (line 2456) | void bb_build_reversed_rpo(func_t *func, basic_block_t *bb) function build_reversed_rpo (line 2477) | void build_reversed_rpo(void) function bb_reset_live_kill_idx (line 2503) | void bb_reset_live_kill_idx(func_t *func, basic_block_t *bb) function bb_reset_and_solve_locals (line 2513) | void bb_reset_and_solve_locals(func_t *func, basic_block_t *bb) function add_live_gen (line 2540) | void add_live_gen(basic_block_t *bb, var_t *var) function update_consumed (line 2548) | void update_consumed(insn_t *insn, var_t *var) function bb_solve_locals (line 2554) | void bb_solve_locals(func_t *func, basic_block_t *bb) function add_live_in (line 2578) | void add_live_in(basic_block_t *bb, var_t *var) function compute_live_in (line 2583) | void compute_live_in(basic_block_t *bb) function merge_live_in (line 2597) | int merge_live_in(var_t *live_out[], int live_out_idx, basic_block_t *bb) function recompute_live_out (line 2648) | bool recompute_live_out(basic_block_t *bb) function liveness_analysis (line 2707) | void liveness_analysis(void) FILE: tests/fib.c function fib (line 3) | int fib(int n) function main (line 12) | int main() FILE: tests/hello.c function main (line 3) | int main(int argc, char *argv[]) FILE: tools/inliner.c type strbuf_t (line 29) | typedef struct { function strbuf_t (line 37) | strbuf_t *strbuf_create(int init_capacity) function strbuf_extend (line 54) | bool strbuf_extend(strbuf_t *src, int len) function strbuf_putc (line 79) | bool strbuf_putc(strbuf_t *src, char value) function strbuf_puts (line 90) | bool strbuf_puts(strbuf_t *src, char *value) function strbuf_free (line 103) | void strbuf_free(strbuf_t *src) function write_line (line 112) | void write_line(char *src) function load_from (line 132) | void load_from(char *file) function save_to (line 152) | void save_to(char *file) function main (line 160) | int main(int argc, char *argv[]) FILE: tools/norm-lf.c function main (line 12) | int main(int argc, char *argv[])