diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-02-03 22:42:20 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-02-03 22:42:20 +0000 |
commit | 7a02b4da1b51da1d31730f97ba5d4e18d833a195 (patch) | |
tree | b06e600bb678be6305dbf07842e1ba19c1f9ff99 | |
parent | 119a12ff1b0517c5684796cb4a7c41feea2ab287 (diff) | |
download | gcc-7a02b4da1b51da1d31730f97ba5d4e18d833a195.tar.gz |
* libgcc2.c (__ffsdi2, __clzsi2, __clzdi2, __ctzsi2, __ctzdi2,
__popcountsi2, __popcountdi2, __paritysi2, __paritydi2): Change
return type to "int". Shuffle declarations and undef int trap.
* libgcc2.h: Remove their declarations.
* optabs.c (expand_unop): Force outmode to int for bitops.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@62353 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/libgcc2.c | 36 | ||||
-rw-r--r-- | gcc/libgcc2.h | 34 | ||||
-rw-r--r-- | gcc/optabs.c | 2 |
4 files changed, 47 insertions, 33 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 439a3515f59..a91d014b561 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2003-02-03 Richard Henderson <rth@redhat.com> + + * libgcc2.c (__ffsdi2, __clzsi2, __clzdi2, __ctzsi2, __ctzdi2, + __popcountsi2, __popcountdi2, __paritysi2, __paritydi2): Change + return type to "int". Shuffle declarations and undef int trap. + * libgcc2.h: Remove their declarations. + * optabs.c (expand_unop): Force outmode to int for bitops. + 2003-02-03 Bob Wilson <bob.wilson@acm.org> * config/xtensa/xtensa.c (order_regs_for_local_alloc): Order the diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c index 4260e25d66c..c2279ef92b7 100644 --- a/gcc/libgcc2.c +++ b/gcc/libgcc2.c @@ -341,7 +341,9 @@ __ashrdi3 (DWtype u, word_type b) #endif #ifdef L_ffsdi2 -Wtype +#undef int +extern int __ffsdi2 (DWtype u); +int __ffsdi2 (DWtype u) { DWunion uu; @@ -520,7 +522,9 @@ const UQItype __clz_tab[] = #endif #ifdef L_clzsi2 -Wtype +#undef int +extern int __clzsi2 (USItype x); +int __clzsi2 (USItype x) { UWtype w = x; @@ -534,7 +538,9 @@ __clzsi2 (USItype x) #endif #ifdef L_clzdi2 -Wtype +#undef int +extern int __clzdi2 (UDItype x); +int __clzdi2 (UDItype x) { UWtype word; @@ -559,7 +565,9 @@ __clzdi2 (UDItype x) #endif #ifdef L_ctzsi2 -Wtype +#undef int +extern int __ctzsi2 (USItype x); +int __ctzsi2 (USItype x) { Wtype ret; @@ -571,7 +579,9 @@ __ctzsi2 (USItype x) #endif #ifdef L_ctzdi2 -Wtype +#undef int +extern int __ctzdi2 (UDItype x); +int __ctzdi2 (UDItype x) { UWtype word; @@ -615,7 +625,9 @@ const UQItype __popcount_tab[] = #endif #ifdef L_popcountsi2 -Wtype +#undef int +extern int __popcountsi2 (USItype x); +int __popcountsi2 (USItype x) { return __popcount_tab[(x >> 0) & 0xff] @@ -626,7 +638,9 @@ __popcountsi2 (USItype x) #endif #ifdef L_popcountdi2 -Wtype +#undef int +extern int __popcountdi2 (UDItype x); +int __popcountdi2 (UDItype x) { return __popcount_tab[(x >> 0) & 0xff] @@ -641,7 +655,9 @@ __popcountdi2 (UDItype x) #endif #ifdef L_paritysi2 -Wtype +#undef int +extern int __paritysi2 (USItype x); +int __paritysi2 (USItype x) { UWtype nx = x; @@ -655,7 +671,9 @@ __paritysi2 (USItype x) #endif #ifdef L_paritydi2 -Wtype +#undef int +extern int __paritydi2 (UDItype x); +int __paritydi2 (UDItype x) { UWtype nx = x ^ (x >> 32); diff --git a/gcc/libgcc2.h b/gcc/libgcc2.h index c71fcce7824..f32f4a08d38 100644 --- a/gcc/libgcc2.h +++ b/gcc/libgcc2.h @@ -223,31 +223,19 @@ extern DWtype __negdi2 (DWtype); extern DWtype __lshrdi3 (DWtype, word_type); extern DWtype __ashldi3 (DWtype, word_type); extern DWtype __ashrdi3 (DWtype, word_type); -extern Wtype __ffsdi2 (DWtype); /* ??? Ought to get these named properly for DSPs. */ -#if BITS_PER_UNIT == 8 && MIN_UNITS_PER_WORD >= 4 -extern Wtype __clzsi2 (USItype); -extern Wtype __ctzsi2 (USItype); -extern Wtype __popcountsi2 (USItype x); -extern Wtype __paritysi2 (USItype x); -#else -#undef L_clzsi2 -#undef L_ctzsi2 -#undef L_popcountsi2 -#undef L_paritysi2 -#endif - -#if BITS_PER_UNIT == 8 && MIN_UNITS_PER_WORD >= 4 && LONG_LONG_TYPE_SIZE > 32 -extern Wtype __clzdi2 (UDItype); -extern Wtype __ctzdi2 (UDItype); -extern Wtype __popcountdi2 (UDItype x); -extern Wtype __paritydi2 (UDItype x); -#else -#undef L_clzdi2 -#undef L_ctzdi2 -#undef L_popcountdi2 -#undef L_paritydi2 +#if BITS_PER_UNIT != 8 || MIN_UNITS_PER_WORD < 4 +# undef L_clzsi2 +# undef L_ctzsi2 +# undef L_popcountsi2 +# undef L_paritysi2 +# if LONG_LONG_TYPE_SIZE <= 32 +# undef L_clzdi2 +# undef L_ctzdi2 +# undef L_popcountdi2 +# undef L_paritydi2 +# endif #endif /* __udiv_w_sdiv is static inline when building other libgcc2 portions. */ diff --git a/gcc/optabs.c b/gcc/optabs.c index 2b08f8efa57..92bfc359111 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -2675,7 +2675,7 @@ expand_unop (mode, unoptab, op0, target, unsignedp) have them return something that isn't a double-word. */ if (unoptab == ffs_optab || unoptab == clz_optab || unoptab == ctz_optab || unoptab == popcount_optab || unoptab == parity_optab) - outmode = word_mode; + outmode = TYPE_MODE (integer_type_node); start_sequence (); |