This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Segmentation fault building libg++ without named returns
- To: dave at hiauly1 dot hia dot nrc dot ca (John David Anglin)
- Subject: Re: Segmentation fault building libg++ without named returns
- From: "John David Anglin" <dave at hiauly1 dot hia dot nrc dot ca>
- Date: Mon, 11 Sep 2000 17:25:11 -0400 (EDT)
- Cc: manfred dot h at gmx dot net, gcc-bugs at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
> 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.
I tried `-fkeep-inline-functions' but this results in the following errors:
In file included from /usr/include/math.h:348,
from ../../../../libstdc++/cmath:7,
from ../../../../libg++/src/builtin.h:33,
from ../../../../libg++/src/Fix.h:15,
from ../../../../libg++/src/Fix.cc:25:
/usr/include/bits/mathinline.h:583: output number 0 not directly addressable
...
This is the define that causes the problem in mathinline.h:
#define __lrint_code \
long int __lrintres; \
__asm__ __volatile__ \
("fistpl %0" \
: "=m" (__lrintres) : "t" (__x) : "st"); \
return __lrintres
__MATH_INLINE long int
lrintf (float __x)
{
__lrint_code;
}
...
Dave
--
J. David Anglin dave.anglin@nrc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6605)