public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/20607] New: -fstrict-aliasing causes incorrect scheduling on Sparc Solaris
@ 2005-03-23 19:04 Ganesh dot Sittampalam at arm dot com
  2005-03-23 19:04 ` [Bug c++/20607] " Ganesh dot Sittampalam at arm dot com
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: Ganesh dot Sittampalam at arm dot com @ 2005-03-23 19:04 UTC (permalink / raw)
  To: gcc-bugs

On Sparc Solaris, the attached code leads to the following assembly sequence
being produced at the beginning of a function. Stack slot %fp-32 is read before
it is written. Turning off either -fstrict-aliasing or -fsched-insns causes the
problem to go away.

I'm relying on the GCC extension that allows type punning via unions, and
assuming a big endian layout of all the datatypes. As specified by the
-fstrict-aliasing documentation, I'm copying the value out of the union rather
than taking an address of a union member.

   0:   9d e3 bf 80     save  %sp, -128, %sp
   4:   d6 07 bf e4     ld  [ %fp + -28 ], %o3
   8:   c2 07 bf e0     ld  [ %fp + -32 ], %g1
   c:   c2 27 bf e8     st  %g1, [ %fp + -24 ]
  10:   19 00 00 20     sethi  %hi(0x8000), %o4
  14:   1b 3f ff ff     sethi  %hi(0xfffffc00), %o5
  18:   9a 13 63 ff     or  %o5, 0x3ff, %o5     ! ffffffff <main+0xffffffa3>
  1c:   d8 3f bf e0     std  %o4, [ %fp + -32 ]

g++-3_4_3 -v -save-temps -O1 -c -o u64solrs.o u64solrs.c -fschedule-insns
-fstrict-aliasing

Reading specs from
/arm/eda/tools/gnu/gcc/3_4_3/solaris_2_9-sparc/lib/gcc/sparc-sun-solaris2.9/3.4.3/specs
Configured with: ./configure --prefix=/arm/eda/tools/gnu/gcc/3_4_3
--exec-prefix=/arm/eda/tools/gnu/gcc/3_4_3/solaris_2_9-sparc
--program-suffix=-3_4_3 --enable-languages=c,c++ -v --with-dwarf2
--enable-version-specific-runtime-libs --with-gnu-as
--with-as=/arm/eda/tools/gnu/binutils/2_15/solaris_2_9-sparc/bin/as-2_15
--with-gnu-ld
--with-ld=/arm/eda/tools/gnu/binutils/2_15/solaris_2_9-sparc/bin/ld-2_15
Thread model: posix
gcc version 3.4.3
 /arm/eda/tools/gnu/gcc/3_4_3/solaris_2_9-sparc/libexec/gcc/sparc-sun-solaris2.9/3.4.3/cc1plus
-E -quiet -v u64solrs.c -mcpu=v7 -fschedule-insns -fstrict-aliasing -O1 -o
u64solrs.ii
ignoring nonexistent directory
"/arm/eda/tools/gnu/gcc/3_4_3/solaris_2_9-sparc/lib/gcc/sparc-sun-solaris2.9/3.4.3/../../../../sparc-sun-solaris2.9/include"
#include "..." search starts here:
#include <...> search starts here:
 /arm/eda/tools/gnu/gcc/3_4_3/solaris_2_9-sparc/lib/gcc/sparc-sun-solaris2.9/3.4.3/include/c++
 /arm/eda/tools/gnu/gcc/3_4_3/solaris_2_9-sparc/lib/gcc/sparc-sun-solaris2.9/3.4.3/include/c++/sparc-sun-solaris2.9
 /arm/eda/tools/gnu/gcc/3_4_3/solaris_2_9-sparc/lib/gcc/sparc-sun-solaris2.9/3.4.3/include/c++/backward
 /usr/local/include
 /arm/eda/tools/gnu/gcc/3_4_3/include
 /arm/eda/tools/gnu/gcc/3_4_3/solaris_2_9-sparc/lib/gcc/sparc-sun-solaris2.9/3.4.3/include
 /usr/include
End of search list.
 /arm/eda/tools/gnu/gcc/3_4_3/solaris_2_9-sparc/libexec/gcc/sparc-sun-solaris2.9/3.4.3/cc1plus
-fpreprocessed u64solrs.ii -quiet -dumpbase u64solrs.c -mcpu=v7 -auxbase-strip
u64solrs.o -O1 -version -fschedule-insns -fstrict-aliasing -o u64solrs.s
GNU C++ version 3.4.3 (sparc-sun-solaris2.9)
        compiled by GNU C version 3.4.3.
GGC heuristics: --param ggc-min-expand=65 --param ggc-min-heapsize=65536
 /arm/eda/tools/gnu/binutils/2_15/solaris_2_9-sparc/bin/as-2_15 -V -Qy -s
-xarch=v8 -o u64solrs.o u64solrs.s
GNU assembler version 2.15 (sparc-sun-solaris2.9) using BFD version 2.15

-- 
           Summary: -fstrict-aliasing causes incorrect scheduling on Sparc
                    Solaris
           Product: gcc
           Version: 3.4.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: Ganesh dot Sittampalam at arm dot com
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: sparc-sun-solaris2.9
  GCC host triplet: sparc-sun-solaris2.9
GCC target triplet: sparc-sun-solaris2.9


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20607


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2005-05-10  3:17 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-03-23 19:04 [Bug c++/20607] New: -fstrict-aliasing causes incorrect scheduling on Sparc Solaris Ganesh dot Sittampalam at arm dot com
2005-03-23 19:04 ` [Bug c++/20607] " Ganesh dot Sittampalam at arm dot com
2005-03-23 19:05 ` Ganesh dot Sittampalam at arm dot com
2005-03-23 21:47 ` ebotcazou at gcc dot gnu dot org
2005-03-29 19:19 ` [Bug c++/20607] [3.4 Regression] -fstrict-aliasing causes incorrect scheduling ebotcazou at gcc dot gnu dot org
2005-03-29 19:43 ` ebotcazou at gcc dot gnu dot org
2005-03-30 10:53 ` ebotcazou at gcc dot gnu dot org
2005-03-31  0:55 ` mark at codesourcery dot com
2005-03-31  6:30 ` ebotcazou at libertysurf dot fr
2005-05-10  2:49 ` mmitchel at gcc dot gnu dot org
2005-05-10  3:16 ` mmitchel at gcc dot gnu dot org
2005-05-10  3:17 ` mmitchel 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).