Lines Matching defs:function
33 * 4. Replace all "return"s with a single return at the end of the function,
34 * for the main function and/or other functions
51 * until the end of the function.
89 * jump back to the top, or return from the function).
102 * of it, or return from the function.
110 * of it, or return from the function.
117 * of it, or return from the function.
124 * it or return from the function.
131 * only return from the function.
186 /* also supported for the "function loop" */
237 /* Postconditions: on exit of any visit() function:
254 * responsibility of the statement (or function signature) that
262 struct function_record function;
307 ir_variable* return_flag = this->function.get_return_flag();
308 if(!this->function.signature->return_type->is_void()) {
309 ir_variable* return_value = this->function.get_return_value();
327 * It is safe to pass NULL to this function.
425 /* never lower return at the end of a this->function */
426 if(this->function.nesting_depth == 0 && ir->get_next()->is_tail_sentinel())
429 lower = this->function.lower_return;
461 ++this->function.nesting_depth;
518 else if(jump_strengths[0] == strength_return && this->function.signature->return_type->is_void())
568 * function doesn't have one already) and add instructions
569 * that: 1. store the return value (if this function has a
590 * false to prevent the rest of the function from
757 --this->function.nesting_depth;
779 ++this->function.nesting_depth;
781 this->loop = loop_record(this->function.signature, ir);
802 if (this->function.lower_return)
822 assert(this->function.return_flag);
824 ir_if* return_if = new(ir) ir_if(new(ir) ir_dereference_variable(this->function.return_flag));
849 if (this->function.signature->return_type->is_void())
852 assert(this->function.return_value);
853 ir_variable* return_value = this->function.return_value;
863 --this->function.nesting_depth;
869 assert(!this->function.signature);
878 function_record saved_function = this->function;
880 this->function = function_record(ir, lower_return);
885 /* Visit the body of the function to lower any jumps that occur
905 if(this->function.return_value)
906 ir->body.push_tail(new(ir) ir_return(new (ir) ir_dereference_variable(this->function.return_value)));
909 this->function = saved_function;