From mboxrd@z Thu Jan 1 00:00:00 1970 From: "John David Anglin" To: dave@hiauly1.hia.nrc.ca (John David Anglin) Cc: manfred.h@gmx.net, gcc-bugs@gcc.gnu.org, gcc-patches@gcc.gnu.org Subject: Re: Segmentation fault building libg++ without named returns Date: Mon, 11 Sep 2000 14:25:00 -0000 Message-id: <200009112125.RAA15314@hiauly1.hia.nrc.ca> References: X-SW-Source: 2000-09/msg00413.html > 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)