This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

optimization/5739: "const" and "pure" function attributes pessimize code



>Number:         5739
>Category:       optimization
>Synopsis:       "const" and "pure" function attributes pessimize code
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          pessimizes-code
>Submitter-Id:   net
>Arrival-Date:   Wed Feb 20 14:16:00 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Dan Nicolaescu <dann@godzilla.ics.uci.edu>
>Release:        CVS
>Organization:
>Environment:
sparc-sun-solaris2.8
>Description:
"const" and "pure" function attributes pessimize code

The following code: 

#ifdef MY_PURE
extern  double mycos (double) __attribute__ ((pure));
extern  double mysin (double) __attribute__ ((pure));
#elif defined MY_CONST
extern  double mycos (double) __attribute__ ((const));
extern  double mysin (double) __attribute__ ((const));
#else
extern  double mycos (double);
extern  double mysin (double);
#endif

struct my_complex
{
  double re;
  double im;
};


int main(void) {

  struct my_complex u[2048];
  int i;
  for (i = 0; i < 2048; ++i)
    {
      u[i].re = 1.0;
      u[i].im = 0.0;
    }
               
  for (i = 0; i < 2048; ++i) {
    struct my_complex *p = u;
    unsigned int j;
    for (j = 0; j < 2048; ++j) {
      double ur = p->re;
      double ui = p->im;
      double u2 = ur * ur + ui * ui;             
      double cosv = mycos (u2);
      double sinv = mysin (u2);
      p->re = p->re * cosv - p->im * sinv;
      p->im = p->im * sinv +  p->re * cosv;
      ++p;
    } 
  }
}

generates worse code when compiled with -O2 -DMY_PURE or
-O2 -DMY_CONST than when compiled with -O2 on SPARC with
GCC from CVS on sparc

Attached is an sdiff of the assembly files resulted when compiling with -O2 (left) and -O2 -DMY_CONST (right)

>How-To-Repeat:
Compile the above code with -O2 and -O2 -DMY_CONST and 
look at the assembly files.
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="PURE.sdiff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="PURE.sdiff"

CS5maWxlCSJteS1ub3JtLWNvbXBsZXguYyIJCQkJCS5maWxlCSJteS1ub3JtLWNvbXBsZXguYyIK
CS5zZWN0aW9uCSIucm9kYXRhIgkJCQkJLnNlY3Rpb24JIi5yb2RhdGEiCgkuYWxpZ24gOAkJCQkJ
CQkuYWxpZ24gOAouTExDMDoJCQkJCQkJCS5MTEMwOgoJLmxvbmcJMTA3MjY5MzI0OAkJCQkJCS5s
b25nCTEwNzI2OTMyNDgKCS5sb25nCTAJCQkJCQkJLmxvbmcJMAoJLmFsaWduIDgJCQkJCQkJLmFs
aWduIDgKLkxMQzE6CQkJCQkJCQkuTExDMToKCS5sb25nCTAJCQkJCQkJLmxvbmcJMAoJLmxvbmcJ
MAkJCQkJCQkubG9uZwkwCgkuc2VjdGlvbgkiLnRleHQiCQkJCQkJLnNlY3Rpb24JIi50ZXh0IgoJ
LmFsaWduIDQJCQkJCQkJLmFsaWduIDQKCS5nbG9iYWwgbWFpbgkJCQkJCQkuZ2xvYmFsIG1haW4K
CS50eXBlCW1haW4sI2Z1bmN0aW9uCQkJCQkJLnR5cGUJbWFpbiwjZnVuY3Rpb24KCS5wcm9jCTA0
CQkJCQkJCS5wcm9jCTA0Cm1haW46CQkJCQkJCQltYWluOgoJISNQUk9MT0dVRSMgMAkJCQkJCQkh
I1BST0xPR1VFIyAwCglzZXRoaQklaGkoLTMyODk2KSwgJWcxCQkJICAgICAgfAkJc2V0aGkJJWhp
KC0zMjkxMiksICVnMQoJb3IJJWcxLCAlbG8oLTMyODk2KSwgJWcxCQkJICAgICAgfAkJb3IJJWcx
LCAlbG8oLTMyOTEyKSwgJWcxCglzYXZlCSVzcCwgJWcxLCAlc3AJCQkJCQlzYXZlCSVzcCwgJWcx
LCAlc3AKCSEjUFJPTE9HVUUjIDEJCQkJCQkJISNQUk9MT0dVRSMgMQoJc2V0aGkJJWhpKC0zMjc2
OCksICVvMAkJCQkJc2V0aGkJJWhpKC0zMjc2OCksICVvMAoJYWRkCSVmcCwgLTE2LCAlbDMJCQkJ
CQlhZGQJJWZwLCAtMTYsICVsMwoJYWRkCSVsMywgJW8wLCAlbzIJCQkJCQlhZGQJJWwzLCAlbzAs
ICVvMgoJc2V0aGkJJWhpKC5MTEMwKSwgJW8wCQkJCQkJc2V0aGkJJWhpKC5MTEMwKSwgJW8wCgls
ZGQJWyVvMCslbG8oLkxMQzApXSwgJWY0CQkJCQlsZGQJWyVvMCslbG8oLkxMQzApXSwgJWY0Cglt
b3YJMCwgJWwxCQkJCQkJCW1vdgkwLCAlbDEKCXNldGhpCSVoaSguTExDMSksICVvMAkJCQkJCXNl
dGhpCSVoaSguTExDMSksICVvMAoJbGRkCVslbzArJWxvKC5MTEMxKV0sICVmMgkJCQkJbGRkCVsl
bzArJWxvKC5MTEMxKV0sICVmMgouTEw1OgkJCQkJCQkJLkxMNToKCWZtb3ZzCSVmMiwgJWY2CQkJ
CQkJZm1vdnMJJWYyLCAlZjYKCXNsbAklbDEsIDQsICVvMQkJCQkJCXNsbAklbDEsIDQsICVvMQoJ
YWRkCSVvMSwgOCwgJW8wCQkJCQkJYWRkCSVvMSwgOCwgJW8wCglhZGQJJWwxLCAxLCAlbDEJCQkJ
CQlhZGQJJWwxLCAxLCAlbDEKCWNtcAklbDEsIDIwNDcJCQkJCQljbXAJJWwxLCAyMDQ3CglmbW92
cwklZjMsICVmNwkJCQkJCWZtb3ZzCSVmMywgJWY3CglzdGQJJWY2LCBbJW8yKyVvMF0JCQkJCQlz
dGQJJWY2LCBbJW8yKyVvMF0KCWZtb3ZzCSVmNCwgJWY2CQkJCQkJZm1vdnMJJWY0LCAlZjYKCWZt
b3ZzCSVmNSwgJWY3CQkJCQkJZm1vdnMJJWY1LCAlZjcKCWJsZQkuTEw1CQkJCQkJCWJsZQkuTEw1
CglzdGQJJWY2LCBbJW8yKyVvMV0JCQkJCQlzdGQJJWY2LCBbJW8yKyVvMV0KCW1vdgkwLCAlbDEJ
CQkJCQkJbW92CTAsICVsMQoJc2V0aGkJJWhpKC0zMjc2OCksICVsMgkJCQkJc2V0aGkJJWhpKC0z
Mjc2OCksICVsMgoJYWRkCSVsMywgJWwyLCAlaTAJCQkJCQlhZGQJJWwzLCAlbDIsICVpMAouTEwy
MzoJCQkJCQkJCS5MTDIzOgoJbW92CTAsICVsMAkJCQkJCQltb3YJMCwgJWwwCi5MTDE0OgkJCQkJ
CQkJLkxMMTQ6CglsZGQJWyVpMF0sICVmNAkJCQkgICAgICB8CQlsZGQJWyVpMF0sICVmNgoJc2V0
aGkJJWhpKDQyOTQ5MzM1MDQpLCAlbzIJCQkJCXNldGhpCSVoaSg0Mjk0OTMzNTA0KSwgJW8yCgls
ZGQJWyVpMCs4XSwgJWYyCQkJCSAgICAgIHwJCWxkZAlbJWkwKzhdLCAlZjgKCWZtdWxkCSVmNCwg
JWY0LCAlZjQJCQkJICAgICAgfAkJZm11bGQJJWY2LCAlZjYsICVmNAoJb3IJJW8yLCAxMDAwLCAl
bzIJCQkJICAgICAgfAkJb3IJJW8yLCA5OTIsICVvMgoJYWRkCSVvMiwgJWZwLCAlbzIJCQkJCQlh
ZGQJJW8yLCAlZnAsICVvMgoJYWRkCSVsMCwgMSwgJWwwCQkJCQkJYWRkCSVsMCwgMSwgJWwwCglm
bXVsZAklZjIsICVmMiwgJWYyCQkJCSAgICAgIHwJCWZtdWxkCSVmOCwgJWY4LCAlZjIKCWZhZGRk
CSVmNCwgJWYyLCAlZjQJCQkJCQlmYWRkZAklZjQsICVmMiwgJWY0CglzdGQJJWY0LCBbJWZwLTE2
XQkJCQkJCXN0ZAklZjQsIFslZnAtMTZdCglsZGQJWyVmcC0xNl0sICVvMAkJCQkJCWxkZAlbJWZw
LTE2XSwgJW8wCgljYWxsCW15Y29zLCAwCQkJCSAgICAgIDwKCXN0ZAklZjQsIFslbzJdCQkJCQkJ
c3RkCSVmNCwgWyVvMl0KCQkJCQkJCSAgICAgID4JCXNldGhpCSVoaSg0Mjk0OTMzNTA0KSwgJW8y
CgkJCQkJCQkgICAgICA+CQlvcgklbzIsIDk4NCwgJW8yCgkJCQkJCQkgICAgICA+CQlhZGQJJW8y
LCAlZnAsICVvMgoJCQkJCQkJICAgICAgPgkJc3RkCSVmNiwgWyVvMl0KCQkJCQkJCSAgICAgID4J
CXNldGhpCSVoaSg0Mjk0OTMzNTA0KSwgJW8yCgkJCQkJCQkgICAgICA+CQlvcgklbzIsIDk3Niwg
JW8yCgkJCQkJCQkgICAgICA+CQlhZGQJJW8yLCAlZnAsICVvMgoJCQkJCQkJICAgICAgPgkJY2Fs
bAlteWNvcywgMAoJCQkJCQkJICAgICAgPgkJc3RkCSVmOCwgWyVvMl0KCXNldGhpCSVoaSg0Mjk0
OTMzNTA0KSwgJW8wCQkJCQlzZXRoaQklaGkoNDI5NDkzMzUwNCksICVvMAoJb3IJJW8wLCAxMDAw
LCAlbzAJCQkJICAgICAgfAkJb3IJJW8wLCA5OTIsICVvMAoJYWRkCSVvMCwgJWZwLCAlbzAJCQkJ
CQlhZGQJJW8wLCAlZnAsICVvMAoJbGRkCVslbzBdLCAlZjQJCQkJCQlsZGQJWyVvMF0sICVmNAoJ
Zm1vdnMJJWYwLCAlZjYJCQkJICAgICAgfAkJZm1vdnMJJWYwLCAlZjIKCXN0ZAklZjQsIFslZnAt
MTZdCQkJCQkJc3RkCSVmNCwgWyVmcC0xNl0KCXNldGhpCSVoaSg0Mjk0OTMzNTA0KSwgJW8yCQkJ
CQlzZXRoaQklaGkoNDI5NDkzMzUwNCksICVvMgoJbGRkCVslZnAtMTZdLCAlbzAJCQkJCQlsZGQJ
WyVmcC0xNl0sICVvMAoJb3IJJW8yLCA5OTIsICVvMgkJCQkgICAgICB8CQlvcgklbzIsIDEwMDAs
ICVvMgoJZm1vdnMJJWYxLCAlZjcJCQkJICAgICAgfAkJZm1vdnMJJWYxLCAlZjMKCWFkZAklbzIs
ICVmcCwgJW8yCQkJCQkJYWRkCSVvMiwgJWZwLCAlbzIKCWNhbGwJbXlzaW4sIDAJCQkJCQljYWxs
CW15c2luLCAwCglzdGQJJWY2LCBbJW8yXQkJCQkgICAgICB8CQlzdGQJJWYyLCBbJW8yXQoJc2V0
aGkJJWhpKDQyOTQ5MzM1MDQpLCAlbzAJCQkJCXNldGhpCSVoaSg0Mjk0OTMzNTA0KSwgJW8wCglv
cgklbzAsIDk5MiwgJW8wCQkJCSAgICAgIHwJCW9yCSVvMCwgOTc2LCAlbzAKCWFkZAklbzAsICVm
cCwgJW8wCQkJCQkJYWRkCSVvMCwgJWZwLCAlbzAKCWxkZAlbJWkwXSwgJWYyCQkJCSAgICAgIHwJ
CWxkZAlbJW8wXSwgJWY4CgljbXAJJWwwLCAyMDQ3CQkJCSAgICAgIHwJCXNldGhpCSVoaSg0Mjk0
OTMzNTA0KSwgJW8yCglsZGQJWyVpMCs4XSwgJWY0CQkJCSAgICAgIHwJCXNldGhpCSVoaSg0Mjk0
OTMzNTA0KSwgJW8wCgkJCQkJCQkgICAgICA+CQlvcgklbzIsIDEwMDAsICVvMgoJCQkJCQkJICAg
ICAgPgkJb3IJJW8wLCA5ODQsICVvMAoJCQkJCQkJICAgICAgPgkJYWRkCSVvMiwgJWZwLCAlbzIK
CQkJCQkJCSAgICAgID4JCWFkZAklbzAsICVmcCwgJW8wCgkJCQkJCQkgICAgICA+CQlsZGQJWyVv
Ml0sICVmMgoJCQkJCQkJICAgICAgPgkJZm11bGQJJWY4LCAlZjAsICVmOAoJbGRkCVslbzBdLCAl
ZjYJCQkJCQlsZGQJWyVvMF0sICVmNgoJZm11bGQJJWY0LCAlZjAsICVmNAkJCQkgICAgICB8CQlj
bXAJJWwwLCAyMDQ3CglmbXVsZAklZjIsICVmNiwgJWYyCQkJCSAgICAgIHwJCWZtdWxkCSVmNiwg
JWYyLCAlZjYKCWZzdWJkCSVmMiwgJWY0LCAlZjIJCQkJICAgICAgfAkJZnN1YmQJJWY2LCAlZjgs
ICVmNgoJZm11bGQJJWYyLCAlZjYsICVmNgkJCQkgICAgICB8CQlmbXVsZAklZjYsICVmMiwgJWYy
CglzdGQJJWYyLCBbJWkwXQkJCQkgICAgICB8CQlzdGQJJWY2LCBbJWkwXQoJZmFkZGQJJWY0LCAl
ZjYsICVmNAkJCQkgICAgICB8CQlmYWRkZAklZjgsICVmMiwgJWY4CglzdGQJJWY0LCBbJWkwKzhd
CQkJCSAgICAgIHwJCXN0ZAklZjgsIFslaTArOF0KCWJsZXUJLkxMMTQJCQkJCQkJYmxldQkuTEwx
NAoJYWRkCSVpMCwgMTYsICVpMAkJCQkJCWFkZAklaTAsIDE2LCAlaTAKCWFkZAklbDEsIDEsICVs
MQkJCQkJCWFkZAklbDEsIDEsICVsMQoJY21wCSVsMSwgMjA0NwkJCQkJCWNtcAklbDEsIDIwNDcK
CWJsZSxhCS5MTDIzCQkJCQkJCWJsZSxhCS5MTDIzCglhZGQJJWwzLCAlbDIsICVpMAkJCQkJCWFk
ZAklbDMsICVsMiwgJWkwCglyZXQJCQkJCQkJCXJldAoJcmVzdG9yZQkJCQkJCQkJcmVzdG9yZQou
TExmZTE6CQkJCQkJCQkuTExmZTE6Cgkuc2l6ZQltYWluLC5MTGZlMS1tYWluCQkJCQkuc2l6ZQlt
YWluLC5MTGZlMS1tYWluCgkuaWRlbnQJIkdDQzogKEdOVSkgMy4xIDIwMDIwMTIzIChleHBlcmlt
ZW50YWwpIgkJLmlkZW50CSJHQ0M6IChHTlUpIDMuMSAyMDAyMDEyMyAoZXhwZXJpbWVudGFsKSIK


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]