public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/15473] New: [tree-ssa] Sibcall optimization for libcalls.
@ 2004-05-17 0:47 kazu at cs dot umass dot edu
2004-05-17 0:57 ` [Bug tree-optimization/15473] " pinskia at gcc dot gnu dot org
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: kazu at cs dot umass dot edu @ 2004-05-17 0:47 UTC (permalink / raw)
To: gcc-bugs
Consider:
long long
foo (long long a, long long b)
{
return a / b;
}
I get:
foo (a, b)
{
<bb 0>:
return a_1 / b_2;
}
with the assembly code being
foo:
subl $12, %esp
pushl 28(%esp)
pushl 28(%esp)
pushl 28(%esp)
pushl 28(%esp)
call __divdi3
addl $28, %esp
ret
Note that the sequence of 4 pushl instructions simply copy 16 bytes
from one location of the stack to another.
If I create a (non-libcall) function with the same arguments like so
long long div64 (long long a, long long b);
long long
bar (long long a, long long b)
{
return div64 (a, b);
}
I get:
bar (a, b)
{
long long int T.0;
<bb 0>:
T.0_3 = div64 (a_1, b_2) [tail call];
return T.0_3;
}
with the assembly code being
bar:
jmp div64
--
Summary: [tree-ssa] Sibcall optimization for libcalls.
Product: gcc
Version: 3.5.0
Status: UNCONFIRMED
Keywords: pessimizes-code
Severity: enhancement
Priority: P2
Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: kazu at cs dot umass dot edu
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15473
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug tree-optimization/15473] [tree-ssa] Sibcall optimization for libcalls.
2004-05-17 0:47 [Bug tree-optimization/15473] New: [tree-ssa] Sibcall optimization for libcalls kazu at cs dot umass dot edu
@ 2004-05-17 0:57 ` pinskia at gcc dot gnu dot org
2004-05-17 19:33 ` [Bug rtl-optimization/15473] " steven at gcc dot gnu dot org
2004-08-16 0:19 ` pinskia at gcc dot gnu dot org
2 siblings, 0 replies; 4+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-05-17 0:57 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From pinskia at gcc dot gnu dot org 2004-05-16 11:31 -------
Confirmed, in fact it the ones done by builtin functions are already done on the tree-ssa which did not
happen before the tree-ssa.
--
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed| |1
Last reconfirmed|0000-00-00 00:00:00 |2004-05-16 11:31:55
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15473
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug rtl-optimization/15473] Sibcall optimization for libcalls.
2004-05-17 0:47 [Bug tree-optimization/15473] New: [tree-ssa] Sibcall optimization for libcalls kazu at cs dot umass dot edu
2004-05-17 0:57 ` [Bug tree-optimization/15473] " pinskia at gcc dot gnu dot org
@ 2004-05-17 19:33 ` steven at gcc dot gnu dot org
2004-08-16 0:19 ` pinskia at gcc dot gnu dot org
2 siblings, 0 replies; 4+ messages in thread
From: steven at gcc dot gnu dot org @ 2004-05-17 19:33 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From steven at gcc dot gnu dot org 2004-05-17 06:52 -------
This is not a tree-ssa problem, we don't even know about libcalls
at the tree level (that's the whole point! or at least, one of them).
If anything, this is an rtl optimization problem.
This also is not code pessimization, just lack of an optimization.
Please use that keyword when we _pessimize_ your code (ie "make it
worse than without optimization").
You might be able to fix this when the tree profiling branch is
merged. At that point you'd have the CFG, and perhaps (but I'm
not sure) you can teach calls.c to build the libcall as a sibcall.
--
What |Removed |Added
----------------------------------------------------------------------------
Component|tree-optimization |rtl-optimization
Summary|[tree-ssa] Sibcall |Sibcall optimization for
|optimization for libcalls. |libcalls.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15473
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug rtl-optimization/15473] Sibcall optimization for libcalls.
2004-05-17 0:47 [Bug tree-optimization/15473] New: [tree-ssa] Sibcall optimization for libcalls kazu at cs dot umass dot edu
2004-05-17 0:57 ` [Bug tree-optimization/15473] " pinskia at gcc dot gnu dot org
2004-05-17 19:33 ` [Bug rtl-optimization/15473] " steven at gcc dot gnu dot org
@ 2004-08-16 0:19 ` pinskia at gcc dot gnu dot org
2 siblings, 0 replies; 4+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-08-16 0:19 UTC (permalink / raw)
To: gcc-bugs
--
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |missed-optimization
Last reconfirmed|2004-05-16 11:31:55 |2004-08-16 00:19:18
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15473
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2004-08-16 0:19 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-05-17 0:47 [Bug tree-optimization/15473] New: [tree-ssa] Sibcall optimization for libcalls kazu at cs dot umass dot edu
2004-05-17 0:57 ` [Bug tree-optimization/15473] " pinskia at gcc dot gnu dot org
2004-05-17 19:33 ` [Bug rtl-optimization/15473] " steven at gcc dot gnu dot org
2004-08-16 0:19 ` pinskia at gcc dot gnu dot org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).