Segmentation fault building libg++ without named returns
John David Anglin
dave@hiauly1.hia.nrc.ca
Mon Sep 11 14:25:00 GMT 2000
> 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)
More information about the Gcc-bugs
mailing list