Jakub Jelinek <ja...@redhat.com> writes: > On Fri, Aug 09, 2019 at 11:28:32AM +0200, Richard Biener wrote: >> > Tested on aarch64-linux-gnu and x86_64-linux-gnu. OK to install? >> >> OK. > > Can't we have a CLOBBER also for the RESULT_DECL var in some cases and > on some paths and thus shouldn't we track the RESULT_DECL in > compute_live_vars/live_vars_at_stmt > in addition to the local vars (sure, tree-ssa-live.c would need to change > the two spots where it tests VAR_P to VAR_P || == RESULT_DECL)? > > Jakub
Have you got an example of the kind of case in which that would cause problems? If the RESULT_DECL isn't read by the tail call candidate, then it should be OK for the candidate to write to and potentially clobber the RESULT_DECL as it goes along, just like it would for any other call. In cases that we can currently turn into tail calls/recursion, either: - the call assigns to the RESULT_DECL and the RESULT_DECL is live "at" (= after) the call - the call assigns to a local variable that is later copied (via a chain of assignments) to RESULT_DECL. The RESULT_DECL isn't then live at/after the call. (The chain of assignments must be complete assignments; we don't allow RESULT_DECL to be written piecemeal.) Thanks, Richard