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).