From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1407 invoked by alias); 8 Dec 2004 20:25:11 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 1371 invoked by alias); 8 Dec 2004 20:25:07 -0000 Date: Wed, 08 Dec 2004 20:25:00 -0000 Message-ID: <20041208202507.1370.qmail@sourceware.org> From: "schlie at comcast dot net" To: gcc-bugs@gcc.gnu.org In-Reply-To: <20041208130405.18887.schlie@comcast.net> References: <20041208130405.18887.schlie@comcast.net> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug c/18887] libgcc2.h Improperly determines required built-in function size requirements. X-Bugzilla-Reason: CC X-SW-Source: 2004-12/txt/msg01212.txt.bz2 List-Id: ------- Additional Comments From schlie at comcast dot net 2004-12-08 20:25 ------- Subject: Re: libgcc2.h Improperly determines required built-in function size requirements. > ------- Additional Comments From pinskia at gcc dot gnu dot org 2004-12-08 > Is this really a bug as almost all 8/16bit targets provide their own libgcc1? (good news / bad news, speak of the devil) Here's a real bug, apparently recently introduced: The avr build of today's GCC 4.0 fails because libgcc2 defines a DF mode 64-bit double built-in function although the target defines a SI mode 32-bit double type; (as unfortunately the libgcc2.h code is basically garbage): #if BITS_PER_UNIT == 8 { which has nothing to do with anything } typedef float SFtype __attribute__ ((mode (SF))); typedef float DFtype __attribute__ ((mode (DF))); ... #if BITS_PER_UNIT == 8 { then defines a function with it } extern DWtype __fixdfdi (DFtype); ... Although avr.h defines: #define DOUBLE_TYPE_SIZE 32 Resulting in: /Applications/avr/gcc-build/gcc/xgcc -B/Applications/avr/gcc-build/gcc/ -B/usr/local/avr/bin/ -B/usr/local/avr/lib/ -isystem /usr/local/avr/include -isystem /usr/local/avr/sys-include -O2 -DIN_GCC -DCROSS_COMPILE -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -DDF=SF -Dinhibit_libc -mcall-prologues -g -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc -I. -I -I../../gcc/gcc -I../../gcc/gcc/ -I../../gcc/gcc/../include -I../../gcc/gcc/../libcpp/include -DL_fixdfdi -c ../../gcc/gcc/libgcc2.c -o libgcc/./_fixdfdi.o ../../gcc/gcc/libgcc2.c: In function '__fixdfdi': ../../gcc/gcc/libgcc2.c:1198: internal compiler error: in find_valid_class, at reload.c:712 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. make[2]: *** [libgcc/./_fixdfdi.o] Error 1 make[1]: *** [stmp-multilib] Error 2 make: *** [all-gcc] Error 2 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18887