target/6882: useless stack adjustment code on SPARC

Dan Nicolaescu dann@godzilla.ics.uci.edu
Fri May 31 00:46:00 GMT 2002


>Number:         6882
>Category:       target
>Synopsis:       useless stack adjustment code on SPARC
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri May 31 00:46:06 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Dan Nicolaescu <dann@godzilla.ics.uci.edu>
>Release:        gcc-3.1
>Organization:
>Environment:
sparc-sun-solaris2.7
>Description:
For the following code: 

class Complex_i {
public:
  int re, im;
  Complex_i (int r, int i) : re(r), im(i) {}
  Complex_i () {}
};

inline Complex_i operator+ (Complex_i   a, Complex_i   b)
{
    return Complex_i ( a.re+b.re, a.im+b.im);
}


void
foobar (void)
{
    Complex_i factor (123, 428);
    factor = factor + factor;
}

gcc-3.1 -O3 generates: 

_Z6foobarv:
.LLFB4:
        !#PROLOGUE# 0
        add     %sp, -144, %sp
.LLCFI2:
        !#PROLOGUE# 1
        nop
        retl
        sub     %sp, -144, %sp

the stack adjustment code is useless. Is it possible not to emmit it? 
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the Gcc-bugs mailing list