[Bug target/82935] Unnecessary "sub rsp, 8", "call" and "add rsp, 8" instructions

2017-11-10 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82935

--- Comment #6 from Jakub Jelinek  ---
Well, clang uses a tail call, and we don't.  And the reason why we don't is
that the call is introduced only during expansion and doesn't therefore have
the
GF_CALL_TAILCALL flag set (CALL_EXPR_TAILCALL on the CALL_EXPR).

The options I see (Richard, any preferences?):
1) turn aggregate assignments during the tailcall pass if at tailcall positions
into calls and set the flag
2) introduce a flag like GF_CALL_TAILCALL on structure assignment statements or
aggregate clearing, compute it during tailcall pass and check that flag during
aggregate copy/clear expansion
3) perform the analysis the tailcall pass does during expansion of aggregate
assignment or aggregate clearing

[Bug target/82935] Unnecessary "sub rsp, 8", "call" and "add rsp, 8" instructions

2017-11-10 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82935

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |DUPLICATE

--- Comment #5 from Andrew Pinski  ---
Dup of bug 41455.

*** This bug has been marked as a duplicate of bug 41455 ***

[Bug target/82935] Unnecessary "sub rsp, 8", "call" and "add rsp, 8" instructions

2017-11-10 Thread glisse at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82935

--- Comment #4 from Marc Glisse  ---
We keep

  *a1_2(D) = *a2_3(D);

and only at expansion time turn it into a call to memcpy, so the gimple pass
that detects tail calls doesn't have a chance to notice this case.

[Bug target/82935] Unnecessary "sub rsp, 8", "call" and "add rsp, 8" instructions

2017-11-10 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82935

--- Comment #3 from Uroš Bizjak  ---
(In reply to Antony Polukhin from comment #2)

> Because Clang does not generate them.

So, the Earth is flat because someone says, too?

[Bug target/82935] Unnecessary "sub rsp, 8", "call" and "add rsp, 8" instructions

2017-11-10 Thread antoshkka at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82935

--- Comment #2 from Antony Polukhin  ---
> Why do you think these instructions are not needed?

Because Clang does not generate them.

[Bug target/82935] Unnecessary "sub rsp, 8", "call" and "add rsp, 8" instructions

2017-11-10 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82935

--- Comment #1 from Uroš Bizjak  ---
Why do you think these instructions are not needed?