delorie.com/archives/browse.cgi | search |
From: | "Rossz Vámos-Wentworth" <rossw AT jps DOT net> |
Newsgroups: | comp.os.msdos.djgpp |
References: | <Pine DOT SUN DOT 3 DOT 91 DOT 1000222115120 DOT 19089O-100000 AT is> |
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 <eliz AT is DOT elta DOT co DOT il> 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.
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |