** So close... yet not quite.
David A. Desrosiers
hacker@downcity.net
Sun Aug 29 14:57:00 GMT 1999
Ideas? Linux 2.2.10 with egcs-2.95.1
--------
In file included from ./libgcc2.c:150:
longlong.h:1246: parse error before `}'
longlong.h:1246: `__xr' undeclared here (not in a function)
longlong.h:1246: `__a' undeclared here (not in a function)
longlong.h:1246: `__a' undeclared here (not in a function)
longlong.h:1246: initializer element is not constant
longlong.h:1246: warning: data definition has no type or storage class
longlong.h:1246: parse error before `}'
longlong.h:1261: warning: This file contains more `}'s than `{'s.
./libgcc2.c: In function `__muldi3':
./libgcc2.c:310: internal error--unrecognizable insn:
(insn 30 28 31 (set (reg:SI 38)
(plus/u:SI (pc:SI)
(symbol_ref/v:SI ("__mulsi3")))) -1 (nil)
(nil))
make[1]: *** [libgcc2.a] Error 1
--------
-----------------------------
in longlong.h, we have this:
-----------------------------
#define count_leading_zeros(count, x) \
do { \
USItype __xr = (x); \
USItype __a; \
\
if (SI_TYPE_SIZE <= 32) \
{ \
__a = __xr < (((USItype)1)<<2*__BITS4) \
? (__xr < (((USItype)1)<<__BITS4) ? 0 : __BITS4) \
: (__xr < (((USItype)1)<<3*__BITS4) ? 2*__BITS4 : 3*__BITS4);\
} \
else \
{ \
for (__a = SI_TYPE_SIZE - 8; __a > 0; __a -= 8) \
if (((__xr >> __a) & 0xff) != 0) \
break; \
} \
\
(count) = SI_TYPE_SIZE - (__clz_tab[__xr >> __a] + __a); \
} while (0)
#endif
-----------------------------
and in libgcc2.c, it just does an '#include "longlong.h"
-----------------------------
------
Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com
More information about the crossgcc
mailing list