This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: PR optimization/9630: [3.2/3.3/3.4 regression] crash with-freg-struct-return in C++ code
- From: Mark Mitchell <mark at codesourcery dot com>
- To: Steven Bosscher <s dot bosscher at student dot tudelft dot nl>
- Cc: gcc-gnats at gcc dot gnu dot org, gcc-bugs at gcc dot gnu dot org, nobody at gcc dot gnu dot org, stefan at space dot twc dot de
- Date: 12 Mar 2003 09:58:15 -0800
- Subject: Re: PR optimization/9630: [3.2/3.3/3.4 regression] crash with-freg-struct-return in C++ code
- References: <3E6F72F7.4080907@student.tudelft.nl>
On Wed, 2003-03-12 at 09:48, Steven Bosscher wrote:
> http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=9630
>
> This PR is about wrong code when *not* optimizing.
>
> The expected output of the test case is 2. With
> GCC 3.3 (todays CVS), you get:
>
> # gcc -lstdc++ -freg-struct-return 9630.cc
> # a.out
> Segmentation fault
> # gcc -lstdc++ -freg-struct-return 9630.cc -O
> # a.out
> 2
> #
>
> Could it be that this bug happens because libstdc++ was *not*
> compiled with --freg-struct-return?
Yes. My guess is that this PR will end up being "not a bug".
I haven't looked carefully yet, but I think that -freg-struct-return is
an ABI changing option, which means that you have to compile all of your
program the same way. It may also be incompatible with C++ -- in C++
some structures cannot go in registers even if the ABI permits that due
to semantic constraints. It may be that the code is already smart
enough to handle that, though.
Thanks for looking into this!
--
Mark Mitchell
CodeSourcery, LLC
mark at codesourcery dot com