Lines Matching refs:stmt

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()
579 static int is_forever_loop(struct statement *stmt) in is_forever_loop() argument
584 expr = strip_expr(stmt->iterator_pre_condition); in is_forever_loop()
586 expr = stmt->iterator_post_condition; in is_forever_loop()
611 static void handle_pre_loop(struct statement *stmt) in handle_pre_loop() argument
623 __split_stmt(stmt->iterator_pre_statement); in handle_pre_loop()
624 __prev_stmt = stmt->iterator_pre_statement; in handle_pre_loop()
626 once_through = implied_condition_true(stmt->iterator_pre_condition); in handle_pre_loop()
634 extra_sm = __extra_handle_canonical_loops(stmt, &stree); in handle_pre_loop()
636 __pass_to_client(stmt, PRELOOP_HOOK); in handle_pre_loop()
637 __split_whole_condition(stmt->iterator_pre_condition); in handle_pre_loop()
649 __split_stmt(stmt->iterator_statement); in handle_pre_loop()
650 if (is_forever_loop(stmt)) { in handle_pre_loop()
655 __split_stmt(stmt->iterator_post_statement); in handle_pre_loop()
667 __split_stmt(stmt->iterator_post_statement); in handle_pre_loop()
668 __prev_stmt = stmt->iterator_post_statement; in handle_pre_loop()
669 __cur_stmt = stmt; in handle_pre_loop()
673 __split_whole_condition(stmt->iterator_pre_condition); in handle_pre_loop()
684 stmt->iterator_post_statement, in handle_pre_loop()
685 stmt->iterator_pre_condition); in handle_pre_loop()
694 static void handle_post_loop(struct statement *stmt) in handle_post_loop() argument
705 __split_stmt(stmt->iterator_statement); in handle_post_loop()
707 if (!expr_is_zero(stmt->iterator_post_condition)) in handle_post_loop()
710 if (is_forever_loop(stmt)) { in handle_post_loop()
713 __split_whole_condition(stmt->iterator_post_condition); in handle_post_loop()
720 static int empty_statement(struct statement *stmt) in empty_statement() argument
722 if (!stmt) in empty_statement()
724 if (stmt->type == STMT_EXPRESSION && !stmt->expression) in empty_statement()
731 struct statement *stmt; in last_stmt_on_same_line() local
734 FOR_EACH_PTR_REVERSE(big_statement_stack, stmt) { in last_stmt_on_same_line()
737 if (stmt->pos.line == get_lineno()) in last_stmt_on_same_line()
740 } END_FOR_EACH_PTR_REVERSE(stmt); in last_stmt_on_same_line()
763 static int is_case_val(struct statement *stmt, sval_t sval) in is_case_val() argument
767 if (stmt->type != STMT_CASE) in is_case_val()
769 if (!stmt->case_expression) { in is_case_val()
773 if (!get_value(stmt->case_expression, &case_sval)) in is_case_val()
801 static void split_known_switch(struct statement *stmt, sval_t sval) in split_known_switch() argument
806 __split_expr(stmt->switch_expression); in split_known_switch()
807 sval = sval_cast(get_type(stmt->switch_expression), sval); in split_known_switch()
809 push_expression(&switch_expr_stack, stmt->switch_expression); in split_known_switch()
815 stmt = stmt->switch_statement; in split_known_switch()
818 FOR_EACH_PTR(stmt->stmts, tmp) { in split_known_switch()
842 static void split_case(struct statement *stmt) in split_case() argument
846 expr_set_parent_stmt(stmt->case_expression, stmt); in split_case()
847 expr_set_parent_stmt(stmt->case_to, stmt); in split_case()
850 stmt->case_expression, stmt->case_to); in split_case()
851 while (stmt->case_statement->type == STMT_CASE) { in split_case()
855 stmt->case_statement->case_expression, in split_case()
856 stmt->case_statement->case_to); in split_case()
860 if (!stmt->case_expression) in split_case()
862 stmt = stmt->case_statement; in split_case()
867 if (!stmt->case_expression) in split_case()
869 __split_stmt(stmt->case_statement); in split_case()
892 struct statement *stmt; in is_last_stmt() local
899 stmt = fn->stmt; in is_last_stmt()
900 if (!stmt) in is_last_stmt()
901 stmt = fn->inline_stmt; in is_last_stmt()
902 if (!stmt || stmt->type != STMT_COMPOUND) in is_last_stmt()
904 stmt = last_ptr_list((struct ptr_list *)stmt->stmts); in is_last_stmt()
905 if (stmt && stmt->type == STMT_LABEL) in is_last_stmt()
906 stmt = stmt->label_statement; in is_last_stmt()
907 if (stmt == cur_stmt) in is_last_stmt()
932 func_stmt = base_type->stmt; in handle_backward_goto()
982 static void split_compound(struct statement *stmt) in split_compound() argument
990 FOR_EACH_PTR(stmt->stmts, next) { in split_compound()
992 stmt_set_parent_stmt(next, stmt); in split_compound()
1025 struct statement *stmt; in need_delayed_scope_hooks() local
1029 stmt = fn->stmt; in need_delayed_scope_hooks()
1030 if (!stmt) in need_delayed_scope_hooks()
1031 stmt = fn->inline_stmt; in need_delayed_scope_hooks()
1032 if (stmt && stmt->type == STMT_COMPOUND) in need_delayed_scope_hooks()
1037 void __split_label_stmt(struct statement *stmt) in __split_label_stmt() argument
1039 if (stmt->label_identifier && in __split_label_stmt()
1040 stmt->label_identifier->type == SYM_LABEL && in __split_label_stmt()
1041 stmt->label_identifier->ident) { in __split_label_stmt()
1043 __merge_gotos(stmt->label_identifier->ident->name, stmt->label_identifier); in __split_label_stmt()
1047 static void find_asm_gotos(struct statement *stmt) in find_asm_gotos() argument
1051 FOR_EACH_PTR(stmt->asm_labels, sym) { in find_asm_gotos()
1056 void __split_stmt(struct statement *stmt) in __split_stmt() argument
1060 if (!stmt) in __split_stmt()
1083 add_ptr_list(&big_statement_stack, stmt); in __split_stmt()
1085 set_position(stmt->pos); in __split_stmt()
1086 __pass_to_client(stmt, STMT_HOOK); in __split_stmt()
1088 switch (stmt->type) { in __split_stmt()
1090 split_declaration(stmt->declaration); in __split_stmt()
1093 expr_set_parent_stmt(stmt->ret_value, stmt); in __split_stmt()
1095 __split_expr(stmt->ret_value); in __split_stmt()
1096 __pass_to_client(stmt->ret_value, RETURN_HOOK); in __split_stmt()
1101 expr_set_parent_stmt(stmt->expression, stmt); in __split_stmt()
1102 expr_set_parent_stmt(stmt->context, stmt); in __split_stmt()
1104 __split_expr(stmt->expression); in __split_stmt()
1107 split_compound(stmt); in __split_stmt()
1110 stmt_set_parent_stmt(stmt->if_true, stmt); in __split_stmt()
1111 stmt_set_parent_stmt(stmt->if_false, stmt); in __split_stmt()
1112 expr_set_parent_stmt(stmt->if_conditional, stmt); in __split_stmt()
1114 if (known_condition_true(stmt->if_conditional)) { in __split_stmt()
1115 __split_stmt(stmt->if_true); in __split_stmt()
1118 if (known_condition_false(stmt->if_conditional)) { in __split_stmt()
1119 __split_stmt(stmt->if_false); in __split_stmt()
1122 __split_whole_condition(stmt->if_conditional); in __split_stmt()
1123 __split_stmt(stmt->if_true); in __split_stmt()
1124 if (empty_statement(stmt->if_true) && in __split_stmt()
1126 !get_macro_name(stmt->if_true->pos)) in __split_stmt()
1130 __split_stmt(stmt->if_false); in __split_stmt()
1134 stmt_set_parent_stmt(stmt->iterator_pre_statement, stmt); in __split_stmt()
1135 stmt_set_parent_stmt(stmt->iterator_statement, stmt); in __split_stmt()
1136 stmt_set_parent_stmt(stmt->iterator_post_statement, stmt); in __split_stmt()
1137 expr_set_parent_stmt(stmt->iterator_pre_condition, stmt); in __split_stmt()
1138 expr_set_parent_stmt(stmt->iterator_post_condition, stmt); in __split_stmt()
1140 if (stmt->iterator_pre_condition) in __split_stmt()
1141 handle_pre_loop(stmt); in __split_stmt()
1142 else if (stmt->iterator_post_condition) in __split_stmt()
1143 handle_post_loop(stmt); in __split_stmt()
1146 handle_pre_loop(stmt); in __split_stmt()
1150 stmt_set_parent_stmt(stmt->switch_statement, stmt); in __split_stmt()
1151 expr_set_parent_stmt(stmt->switch_expression, stmt); in __split_stmt()
1153 if (get_value(stmt->switch_expression, &sval)) { in __split_stmt()
1154 split_known_switch(stmt, sval); in __split_stmt()
1157 __split_expr(stmt->switch_expression); in __split_stmt()
1158 push_expression(&switch_expr_stack, stmt->switch_expression); in __split_stmt()
1163 __split_stmt(stmt->switch_statement); in __split_stmt()
1165 fake_an_empty_default(stmt->pos); in __split_stmt()
1171 split_case(stmt); in __split_stmt()
1174 __split_label_stmt(stmt); in __split_stmt()
1175 __split_stmt(stmt->label_statement); in __split_stmt()
1178 expr_set_parent_stmt(stmt->goto_expression, stmt); in __split_stmt()
1180 __split_expr(stmt->goto_expression); in __split_stmt()
1181 if (stmt->goto_label && stmt->goto_label->type == SYM_NODE) { in __split_stmt()
1182 if (!strcmp(stmt->goto_label->ident->name, "break")) { in __split_stmt()
1184 } else if (!strcmp(stmt->goto_label->ident->name, in __split_stmt()
1188 } else if (stmt->goto_label && in __split_stmt()
1189 stmt->goto_label->type == SYM_LABEL && in __split_stmt()
1190 stmt->goto_label->ident) { in __split_stmt()
1191 __save_gotos(stmt->goto_label->ident->name, stmt->goto_label); in __split_stmt()
1194 if (is_last_stmt(stmt)) in __split_stmt()
1195 handle_backward_goto(stmt); in __split_stmt()
1200 expr_set_parent_stmt(stmt->asm_string, stmt); in __split_stmt()
1202 find_asm_gotos(stmt); in __split_stmt()
1203 __pass_to_client(stmt, ASM_HOOK); in __split_stmt()
1204 __split_expr(stmt->asm_string); in __split_stmt()
1205 split_asm_constraints(stmt->asm_outputs); in __split_stmt()
1206 split_asm_constraints(stmt->asm_inputs); in __split_stmt()
1207 split_asm_constraints(stmt->asm_clobbers); in __split_stmt()
1212 __split_expr(stmt->range_expression); in __split_stmt()
1213 __split_expr(stmt->range_low); in __split_stmt()
1214 __split_expr(stmt->range_high); in __split_stmt()
1217 __pass_to_client(stmt, STMT_HOOK_AFTER); in __split_stmt()
1240 __split_stmt(sym->stmt); in split_sym()
1570 if (!base_type->stmt && !base_type->inline_stmt) in split_function()
1588 __split_stmt(base_type->stmt); in split_function()
1596 __split_stmt(base_type->stmt); in split_function()
1700 __split_stmt(base_type->stmt); in parse_inline()