Lines Matching defs:stmt

3313 		if (label->stmt)
3558 if (!base_type->stmt && base_type->inline_stmt)
3560 if (base_type->stmt)
3561 evaluate_statement(base_type->stmt);
3580 static struct symbol *evaluate_return_expression(struct statement *stmt)
3582 struct expression *expr = stmt->expression;
3592 warning(stmt->pos, "returning void-valued expression");
3597 sparse_error(stmt->pos, "return with no return value");
3602 compatible_assignment_types(expr, rettype, &stmt->expression, "return expression");
3606 static void evaluate_if_statement(struct statement *stmt)
3608 if (!stmt->if_conditional)
3611 evaluate_conditional(stmt->if_conditional, 0);
3612 evaluate_statement(stmt->if_true);
3613 evaluate_statement(stmt->if_false);
3616 static void evaluate_iterator(struct statement *stmt)
3618 evaluate_symbol_list(stmt->iterator_syms);
3619 evaluate_conditional(stmt->iterator_pre_condition, 1);
3620 evaluate_conditional(stmt->iterator_post_condition,1);
3621 evaluate_statement(stmt->iterator_pre_statement);
3622 evaluate_statement(stmt->iterator_statement);
3623 evaluate_statement(stmt->iterator_post_statement);
3737 static void evaluate_asm_statement(struct statement *stmt)
3743 if (!stmt->asm_string)
3746 FOR_EACH_PTR(stmt->asm_outputs, op) {
3765 FOR_EACH_PTR(stmt->asm_inputs, op) {
3780 FOR_EACH_PTR(stmt->asm_clobbers, expr) {
3782 sparse_error(stmt->pos, "bad asm clobbers");
3790 FOR_EACH_PTR(stmt->asm_labels, sym) {
3792 sparse_error(stmt->pos, "bad asm label");
3798 static void evaluate_case_statement(struct statement *stmt)
3800 evaluate_expression(stmt->case_expression);
3801 evaluate_expression(stmt->case_to);
3802 evaluate_statement(stmt->case_statement);
3853 static void evaluate_switch_statement(struct statement *stmt)
3858 struct expression *sel = stmt->switch_expression;
3861 evaluate_statement(stmt->switch_statement);
3867 FOR_EACH_PTR(stmt->switch_case->symbol_list, sym) {
3868 struct statement *case_stmt = sym->stmt;
3874 static void evaluate_goto_statement(struct statement *stmt)
3876 struct symbol *label = stmt->goto_label;
3880 evaluate_expression(stmt->goto_expression);
3884 check_label_declaration(stmt->pos, label);
3887 struct symbol *evaluate_statement(struct statement *stmt)
3889 if (!stmt)
3892 switch (stmt->type) {
3895 FOR_EACH_PTR(stmt->declaration, s) {
3902 return evaluate_return_expression(stmt);
3905 if (!evaluate_expression(stmt->expression))
3907 if (stmt->expression->ctype == &null_ctype)
3908 stmt->expression = cast_to(stmt->expression, &ptr_ctype);
3909 return unqualify_type(degenerate(stmt->expression));
3916 evaluate_symbol(stmt->ret);
3922 type = evaluate_statement(stmt->args);
3923 FOR_EACH_PTR(stmt->stmts, s) {
3931 evaluate_if_statement(stmt);
3934 evaluate_iterator(stmt);
3937 evaluate_switch_statement(stmt);
3940 evaluate_case_statement(stmt);
3943 return evaluate_statement(stmt->label_statement);
3945 evaluate_goto_statement(stmt);
3950 evaluate_asm_statement(stmt);
3953 evaluate_expression(stmt->expression);
3956 evaluate_expression(stmt->range_expression);
3957 evaluate_expression(stmt->range_low);
3958 evaluate_expression(stmt->range_high);