This is the mail archive of the
mailing list for the GCC project.
Re: libg++-220.127.116.11-20000914.diff.gz (was: Re: Segmentation fault building libg++ without named returns)
- To: manfred dot h at gmx dot net
- Subject: Re: libg++-18.104.22.168-20000914.diff.gz (was: Re: Segmentation fault building libg++ without named returns)
- From: "John David Anglin" <dave at hiauly1 dot hia dot nrc dot ca>
- Date: Thu, 21 Sep 2000 12:47:30 -0400 (EDT)
- Cc: gcc-patches at gcc dot gnu dot org
> On Monday, 11 September 2000, 17:25:11 -0400, email@example.com wrote:
> > > The rtl at -O3 has no calls to Fix::~Fix(void), even in Fix.cc.00.rtl.
> > > There is also no definition for Fix::~Fix(void) in the assemble output.
> > If I specify `-fno-inline', the weak defines are output at -O3 in the
> > implementation object module. It seems a runtime callable version of
> > an inline function is not being output when the function isn't static.
> > For modules which include Fix.h but don't have `#pragma implementation',
> > it appears the functions defined in the interface are not being inlined
> > and a runtime callable version must exist.
> Your analysis is correct and is similar to my observations. Since I
> don't have enough time to fix this properly, I came up with the hack
> to use -O0 on ia32-linux. I've attached the patch which supersedes the
> former version -20000907; "make bootstrap check" ran successfully using
> this patch.
I have found that the problem is in some way related to math inlines. If
the build is done with __NO_MATH_INLINES defined, then Fix.o contains all
the required weak defines. There are no testsuite failures with your
version -20000907 if I add -D__NO_MATH_INLINES to CXXFLAGS in the Makefile's.
The math inlines are output at optimisations above O0. If the preprocessing
is done at -O0 and the compilation at -O3, the weak defines are there. The
other way around doesn't work.
I have been poking around in cc1plus trying to find why the weak defines
aren't getting output when the math inlines are present. If somebody more
familiar with code can suggest some places to look, it would be helpful.
J. David Anglin firstname.lastname@example.org
National Research Council of Canada (613) 990-0752 (FAX: 952-6605)