libgcc2.c (__ffsdi2, [...]): Change return type to "int".
authorRichard Henderson <rth@redhat.com>
Mon, 3 Feb 2003 22:42:20 +0000 (14:42 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Mon, 3 Feb 2003 22:42:20 +0000 (14:42 -0800)
        * 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.

From-SVN: r62353

gcc/ChangeLog
gcc/libgcc2.c
gcc/libgcc2.h
gcc/optabs.c

index 439a3515f5931aa4b8b3395ef96533fe13bcd4a2..a91d014b561d6bbb928c0d18b5cd38136b7f32c9 100644 (file)
@@ -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
index 4260e25d66cecf0de34d6cb302e2aa412c54f192..c2279ef92b733a5cfc3e4b9c55e69459a8036d49 100644 (file)
@@ -341,7 +341,9 @@ __ashrdi3 (DWtype u, word_type b)
 #endif
 \f
 #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
 \f
 #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
 \f
 #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
 \f
 #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
 \f
 #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
 \f
 #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
 \f
 #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
 \f
 #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
 \f
 #ifdef L_paritydi2
-Wtype
+#undef int
+extern int __paritydi2 (UDItype x);
+int
 __paritydi2 (UDItype x)
 {
   UWtype nx = x ^ (x >> 32);
index c71fcce7824aabed5a8d4691d37a2d25edc8603e..f32f4a08d38c9f9293180c62b138704c0e7af95d 100644 (file)
@@ -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.  */
index 2b08f8efa57399c96d65ca32b35530e3d0d3ac70..92bfc359111a535052b4bef7d94940a1d0d7a861 100644 (file)
@@ -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 ();