Lines 375-380
find_tail_calls (basic_block bb, struct tailcall **ret)
Link Here
|
375 |
tree m, a; |
375 |
tree m, a; |
376 |
basic_block abb; |
376 |
basic_block abb; |
377 |
size_t idx; |
377 |
size_t idx; |
|
|
378 |
tree var; |
379 |
referenced_var_iterator rvi; |
378 |
|
380 |
|
379 |
if (!single_succ_p (bb)) |
381 |
if (!single_succ_p (bb)) |
380 |
return; |
382 |
return; |
Lines 462-467
find_tail_calls (basic_block bb, struct tailcall **ret)
Link Here
|
462 |
tail_recursion = true; |
464 |
tail_recursion = true; |
463 |
} |
465 |
} |
464 |
|
466 |
|
|
|
467 |
/* Make sure the tail invocation of this function does not refer |
468 |
to local variables. */ |
469 |
FOR_EACH_REFERENCED_VAR (var, rvi) |
470 |
{ |
471 |
if (TREE_CODE (var) != PARM_DECL |
472 |
&& auto_var_in_fn_p (var, cfun->decl) |
473 |
&& ref_maybe_used_by_stmt_p (call, var)) |
474 |
return; |
475 |
} |
476 |
|
465 |
/* Now check the statements after the call. None of them has virtual |
477 |
/* Now check the statements after the call. None of them has virtual |
466 |
operands, so they may only depend on the call through its return |
478 |
operands, so they may only depend on the call through its return |
467 |
value. The return value should also be dependent on each of them, |
479 |
value. The return value should also be dependent on each of them, |