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 bug in gcc 3.2.2 on Sparc Solaris


Sun UltraSparc 1/170, Solaris 7, gcc 3.2.2 vs 3.2, Solaris ld.

auk% gcc -v
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.7/3.2.2/specs
Configured with: ./configure --disable-multilib
Thread model: posix
gcc version 3.2.2

gcc -I. -I../../src/include -I/ext/R/cvs/R-devel/src/include
-DHAVE_CONFIG_H -O2 -g -Wall -pedantic -std=gnu99 -c test.c

gcc 3.2 with -O2 compiles this correctly: gcc 3.2.2 does not with
optimization, calling clipRectCode with the wrong argument addresses.

The difference can be seen in the assembler output:

< 3.2
> 3.2.2
...
721c721
<       st      %f0, [%fp+92]
---
>       std     %f0, [%fp+96]
723c723
<       st      %f1, [%fp+96]
---
>       st      %o0, [%fp+104]
725,726c725
<       st      %o0, [%fp+100]
<       st      %l0, [%fp+104]
---
>       st      %l0, [%fp+108]
759c758
<       .ident  "GCC: (GNU) 3.2"
---
>       .ident  "GCC: (GNU) 3.2.2"


A quick check suggests the problem is also in gcc 3.2.1.  Using -m64
(on another machine configured for multilib) appears to give correct
results, but the 32-bit compile on that machine is identical to this.

-- 
Brian D. Ripley,                  ripley@stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272860 (secr)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

Attachment: test.i.bz2
Description: Binary data


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