Lines Matching refs:sym

72 static void add_inline_function(struct symbol *sym);
190 struct symbol *sym; in inlinable() local
200 sym = get_base_type(expr->symbol); in inlinable()
201 if (sym->stmt && sym->stmt->type == STMT_COMPOUND) { in inlinable()
202 if (ptr_list_size((struct ptr_list *)sym->stmt->stmts) > 10) in inlinable()
204 if (sym->stmt->type != STMT_COMPOUND) in inlinable()
206 last_stmt = last_ptr_list((struct ptr_list *)sym->stmt->stmts); in inlinable()
208 if (sym->inline_stmt && sym->inline_stmt->type == STMT_COMPOUND) { in inlinable()
209 if (ptr_list_size((struct ptr_list *)sym->inline_stmt->stmts) > 10) in inlinable()
211 if (sym->inline_stmt->type != STMT_COMPOUND) in inlinable()
213 last_stmt = last_ptr_list((struct ptr_list *)sym->inline_stmt->stmts); in inlinable()
220 if (last_stmt->pos.line > sym->pos.line + inline_budget) in inlinable()
640 set_state(sm->owner, sm->name, sm->sym, sm->state); in handle_pre_loop()
644 extra_sm = get_sm_state(extra_sm->owner, extra_sm->name, extra_sm->sym); in handle_pre_loop()
1049 struct symbol *sym; in find_asm_gotos() local
1051 FOR_EACH_PTR(stmt->asm_labels, sym) { in find_asm_gotos()
1052 __save_gotos(sym->ident->name, sym); in find_asm_gotos()
1053 } END_FOR_EACH_PTR(sym); in find_asm_gotos()
1233 static void split_sym(struct symbol *sym) in split_sym() argument
1235 if (!sym) in split_sym()
1237 if (!(sym->namespace & NS_SYMBOL)) in split_sym()
1240 __split_stmt(sym->stmt); in split_sym()
1241 __split_expr(sym->array_size); in split_sym()
1242 split_symlist(sym->arguments); in split_sym()
1243 split_symlist(sym->symbol_list); in split_sym()
1244 __split_stmt(sym->inline_stmt); in split_sym()
1245 split_symlist(sym->inline_symbol_list); in split_sym()
1250 struct symbol *sym; in split_symlist() local
1252 FOR_EACH_PTR(sym_list, sym) { in split_symlist()
1253 split_sym(sym); in split_symlist()
1254 } END_FOR_EACH_PTR(sym); in split_symlist()
1433 static void fake_member_assigns(struct symbol *sym, fake_cb *fake_cb) in fake_member_assigns() argument
1435 fake_member_assigns_helper(symbol_expression(sym), in fake_member_assigns()
1436 sym->initializer->expr_list, fake_cb); in fake_member_assigns()
1475 static void fake_element_assigns(struct symbol *sym, fake_cb *fake_cb) in fake_element_assigns() argument
1477 fake_element_assigns_helper(symbol_expression(sym), sym->initializer->expr_list, fake_cb); in fake_element_assigns()
1480 static void fake_assign_expr(struct symbol *sym) in fake_assign_expr() argument
1484 symbol = symbol_expression(sym); in fake_assign_expr()
1485 assign = assign_expression(symbol, '=', sym->initializer); in fake_assign_expr()
1489 static void do_initializer_stuff(struct symbol *sym) in do_initializer_stuff() argument
1491 if (!sym->initializer) in do_initializer_stuff()
1494 if (sym->initializer->type == EXPR_INITIALIZER) { in do_initializer_stuff()
1495 if (get_real_base_type(sym)->type == SYM_ARRAY) in do_initializer_stuff()
1496 fake_element_assigns(sym, __split_expr); in do_initializer_stuff()
1498 fake_member_assigns(sym, __split_expr); in do_initializer_stuff()
1500 fake_assign_expr(sym); in do_initializer_stuff()
1506 struct symbol *sym; in split_declaration() local
1508 FOR_EACH_PTR(sym_list, sym) { in split_declaration()
1509 __pass_to_client(sym, DECLARATION_HOOK); in split_declaration()
1510 do_initializer_stuff(sym); in split_declaration()
1511 split_sym(sym); in split_declaration()
1512 } END_FOR_EACH_PTR(sym); in split_declaration()
1520 static void fake_global_assign(struct symbol *sym) in fake_global_assign() argument
1524 if (get_real_base_type(sym)->type == SYM_ARRAY) { in fake_global_assign()
1525 if (sym->initializer && sym->initializer->type == EXPR_INITIALIZER) { in fake_global_assign()
1526 fake_element_assigns(sym, call_global_assign_hooks); in fake_global_assign()
1527 } else if (sym->initializer) { in fake_global_assign()
1528 symbol = symbol_expression(sym); in fake_global_assign()
1529 assign = assign_expression(symbol, '=', sym->initializer); in fake_global_assign()
1532 fake_element_assigns_helper(symbol_expression(sym), NULL, call_global_assign_hooks); in fake_global_assign()
1534 } else if (get_real_base_type(sym)->type == SYM_STRUCT) { in fake_global_assign()
1535 if (sym->initializer && sym->initializer->type == EXPR_INITIALIZER) { in fake_global_assign()
1536 fake_member_assigns(sym, call_global_assign_hooks); in fake_global_assign()
1537 } else if (sym->initializer) { in fake_global_assign()
1538 symbol = symbol_expression(sym); in fake_global_assign()
1539 assign = assign_expression(symbol, '=', sym->initializer); in fake_global_assign()
1542 fake_member_assigns_helper(symbol_expression(sym), NULL, call_global_assign_hooks); in fake_global_assign()
1545 symbol = symbol_expression(sym); in fake_global_assign()
1546 if (sym->initializer) { in fake_global_assign()
1547 assign = assign_expression(symbol, '=', sym->initializer); in fake_global_assign()
1556 static void start_function_definition(struct symbol *sym) in start_function_definition() argument
1559 __pass_to_client(sym, FUNC_DEF_HOOK); in start_function_definition()
1561 __pass_to_client(sym, AFTER_DEF_HOOK); in start_function_definition()
1565 static void split_function(struct symbol *sym) in split_function() argument
1567 struct symbol *base_type = get_base_type(sym); in split_function()
1575 cur_func_sym = sym; in split_function()
1576 if (sym->ident) in split_function()
1577 cur_func = sym->ident->name; in split_function()
1578 set_position(sym->pos); in split_function()
1587 start_function_definition(sym); in split_function()
1595 start_function_definition(sym); in split_function()
1598 __pass_to_client(sym, END_FUNC_HOOK); in split_function()
1601 __pass_to_client(sym, AFTER_FUNC_HOOK); in split_function()
1722 static void add_inline_function(struct symbol *sym) in add_inline_function() argument
1728 if (tmp == sym) in add_inline_function()
1732 add_ptr_list(&already_added, sym); in add_inline_function()
1733 add_ptr_list(&inlines_called, sym); in add_inline_function()
1748 struct symbol *sym; in get_last_scoped_symbol() local
1750 FOR_EACH_PTR_REVERSE(big_list, sym) { in get_last_scoped_symbol()
1751 if (!sym->scope) in get_last_scoped_symbol()
1753 if (use_static && sym->ctype.modifiers & MOD_STATIC) in get_last_scoped_symbol()
1754 return sym; in get_last_scoped_symbol()
1755 if (!use_static && !(sym->ctype.modifiers & MOD_STATIC)) in get_last_scoped_symbol()
1756 return sym; in get_last_scoped_symbol()
1757 } END_FOR_EACH_PTR_REVERSE(sym); in get_last_scoped_symbol()
1762 static bool interesting_function(struct symbol *sym) in interesting_function() argument
1769 if (!(sym->ctype.modifiers & MOD_INLINE)) in interesting_function()
1772 if (sym->pos.stream == prev_stream) in interesting_function()
1775 prev_stream = sym->pos.stream; in interesting_function()
1778 filename = stream_name(sym->pos.stream); in interesting_function()
1785 static void split_inlines_in_scope(struct symbol *sym) in split_inlines_in_scope() argument
1791 scope_list = sym->scope->symbols; in split_inlines_in_scope()
1792 stream = sym->pos.stream; in split_inlines_in_scope()
1795 FOR_EACH_PTR_REVERSE(scope_list, sym) { in split_inlines_in_scope()
1796 if (sym->pos.stream != stream) in split_inlines_in_scope()
1798 if (sym->type != SYM_NODE) in split_inlines_in_scope()
1800 base = get_base_type(sym); in split_inlines_in_scope()
1807 if (!interesting_function(sym)) in split_inlines_in_scope()
1809 add_inline_function(sym); in split_inlines_in_scope()
1810 } END_FOR_EACH_PTR_REVERSE(sym); in split_inlines_in_scope()
1817 struct symbol *sym; in split_inlines() local
1819 sym = get_last_scoped_symbol(sym_list, 0); in split_inlines()
1820 if (sym) in split_inlines()
1821 split_inlines_in_scope(sym); in split_inlines()
1822 sym = get_last_scoped_symbol(sym_list, 1); in split_inlines()
1823 if (sym) in split_inlines()
1824 split_inlines_in_scope(sym); in split_inlines()
1833 set_state_stree_perm(&ret, tmp->owner, tmp->name, tmp->sym, clone_estate_perm(tmp->state)); in clone_estates_perm()
1842 struct symbol *sym; in split_c_file_functions() local
1845 FOR_EACH_PTR(sym_list, sym) { in split_c_file_functions()
1846 set_position(sym->pos); in split_c_file_functions()
1847 if (sym->type != SYM_NODE || get_base_type(sym)->type != SYM_FN) { in split_c_file_functions()
1848 __pass_to_client(sym, BASE_HOOK); in split_c_file_functions()
1849 fake_global_assign(sym); in split_c_file_functions()
1851 } END_FOR_EACH_PTR(sym); in split_c_file_functions()
1855 FOR_EACH_PTR(sym_list, sym) { in split_c_file_functions()
1856 set_position(sym->pos); in split_c_file_functions()
1857 last_pos = sym->pos; in split_c_file_functions()
1858 if (!interesting_function(sym)) in split_c_file_functions()
1860 if (sym->type == SYM_NODE && get_base_type(sym)->type == SYM_FN) { in split_c_file_functions()
1861 split_function(sym); in split_c_file_functions()
1864 last_pos = sym->pos; in split_c_file_functions()
1865 } END_FOR_EACH_PTR(sym); in split_c_file_functions()