Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 317187
Collapse All | Expand All

(-)a/gcc/tree-tailcall.c (+12 lines)
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,

Return to bug 317187