OT: Re: Bug in 6.x' C++ compiler

O. Hartmann ohartman at uni-mainz.de
Thu Oct 12 13:03:20 UTC 2006


Kostik Belousov wrote:
> On Wed, Oct 11, 2006 at 01:22:57PM -0400, Mikhail Teterin wrote:
>> GCC would not fix the bug described in
>>
>> 	http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29390
>>
>> because the compiler is of an unsupported version (they only support 4.x now).
>>
>> Yet, the problem is rather real and hits when the devel/icu port is
>> built with low optimization (-O1 or -O0).
>>
>> Any chance, someone with interest in GCC internals and FreeBSD can
>> find the fix?
>>
>> Simply compiling the loctest.ii, that is attached to the above bugzilla 
>> report, is enough to reproduce the problem. Compiling with `-march=pentium4' 
>> triggers the bug -- a bogus symbol is inserted:
>>
>> 	% c++ -O0 -g -c  -pipe -march=pentium4 loctest.ii
>> 	% nm locate.o | fgrep .LC
>> 	U .LC786
>>
>> Compiling without the -march (or with -O2) does not insert the bogus symbol:
>>
>> 	% c++ -O2 -g -c -pipe -march=pentium4 loctest.ii
>> 	% nm loctest.o | fgrep .LC
>> 	% c++ -O0 -g -c -pipe loctest.ii
>> 	% nm loctest.o | fgrep .LC
>> 	%
>>
>> I'm seeing this with both 3.4.4 and 3.4.6 versions of GCC... Thanks!
>>
>> 	-mi
> deviant% /usr/local/opt/gcc-3.4.6/bin/g++ -O0 -g -c -fno-strict-aliasing -pipe -march=pentium4 loctest.ii
> deviant% nm loctest.o | grep LC
>          U _ZNK7icu_3_66Locale7getLCIDEv
> deviant% c++ -O0 -g -c -fno-strict-aliasing -pipe -march=pentium4 loctest.ii
> deviant% nm loctest.o | grep LC
>          U .LC786
>          U _ZNK7icu_3_66Locale7getLCIDEv
> deviant% /usr/local/opt/gcc-3.4.6/bin/g++ -v 
> Reading specs from /usr/local/opt/gcc-3.4.6/lib/gcc/i386-little-freebsd6/3.4.6/specs
> Configured with: ../gcc-3.4.6/configure --prefix=/usr/local/opt/gcc-3.4.6 --enable-shared --enable-threads --with-system-zlib --enable-__cxa_atexit --disable-nls --enable-long-long --with-as=/usr/local/opt/binutils/bin/as --with-ld=/usr/local/opt/binutils/bin/ld --enable-languages=c,c++,f77,objc,ada,java --host=i386-little-freebsd6
> Thread model: posix
> gcc version 3.4.6
> deviant% c++ -v
> Using built-in specs.
> Configured with: FreeBSD/i386 system compiler
> Thread model: posix
> gcc version 3.4.6 [FreeBSD] 20060305
> 
> opt/gcc-3.4.6 is the stock version of the 3.4.6 built directly from the FSF
> sources (relatively long time ago).


Well, I hope this bug has been sent by heaven and speeds up swapping 
system compiler of FreeBSD 6.X to 4.1 or 4.X :-)


More information about the freebsd-stable mailing list