From: "Rossz Vámos-Wentworth" Newsgroups: comp.os.msdos.djgpp References: Subject: Re: More on building a cross compiler - help needed Date: Tue, 22 Feb 2000 21:06:20 -0800 Lines: 71 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.00.2615.200 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2615.200 NNTP-Posting-Host: 209.239.210.176 X-Original-NNTP-Posting-Host: 209.239.210.176 Message-ID: <38b36b83_2@news.jps.net> X-Trace: 22 Feb 2000 21:09:23 -0800, 209.239.210.176 X-Original-NNTP-Posting-Host: 209.63.224.240 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Eli Zaretskii wrote in message: > > ./libgcc2.c:995: warning: right shift count >= width of type > > > > Is this normal? > > No, it means that the offending line invokes an undefined behavior. > I'd suggest to solve this; post the code fragment if you cannot figure > this out. This snippet of code produces the messages that follow. This is repeated a number of times - once for nearly each floating point function. This code is from libgcc2.c. code begins --------------------------------- typedef int SItype __attribute__ ((mode (SI))); typedef unsigned int USItype __attribute__ ((mode (SI))); typedef int DItype __attribute__ ((mode (DI))); typedef unsigned int UDItype __attribute__ ((mode (DI))); typedef float DFtype __attribute__ ((mode (DF))); // BITS_PER_UNIT is 8 #ifdef L_floatdidf #define WORD_SIZE (sizeof (SItype) * BITS_PER_UNIT) #define HIGH_HALFWORD_COEFF (((UDItype) 1) << (WORD_SIZE / 2)) #define HIGH_WORD_COEFF (((UDItype) 1) << WORD_SIZE) DFtype __floatdidf (DItype u) { DFtype d; d = (SItype) (u >> WORD_SIZE); // line 995 d *= HIGH_HALFWORD_COEFF; d *= HIGH_HALFWORD_COEFF; d += (USItype) (u & (HIGH_WORD_COEFF - 1)); // line 998 return d; } #endif code ends --------------------------------------------- Output here: _floatdidf ./libgcc2.c: In function `__floatdidf': ./libgcc2.c:995: warning: right shift count >= width of type ./libgcc2.c:998: warning: left shift count >= width of type It's my guess that DItype and SItype are the same, so the bits are lost despite the typecase. > > Since they are only warning errors and I don't care about > > the runtime libraries, I didn't worry. > > How so? libgcc.a is an essential part of the compiler, you might be > unable to produce executables that can be run on the target without > libgcc. I have my own runtime libraries. None of the original GNU libraries can be used, anyway (it's an embedded system). > Add -save-temps to the compiler switches and examine the *.ii files it > leaves behind. You will then see what does cc1 see on that line. All it displayed was the name of the file being compiled.