aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2003-02-03 14:42:20 -0800
committerRichard Henderson <rth@gcc.gnu.org>2003-02-03 14:42:20 -0800
commitdabb3f04da95f2cdbe4b713d3e997dfb67b87ca0 (patch)
treeb06e600bb678be6305dbf07842e1ba19c1f9ff99 /gcc
parentd074ed7c016d74f5305d482e5a2b685920802a4d (diff)
downloadgcc-dabb3f04da95f2cdbe4b713d3e997dfb67b87ca0.zip
gcc-dabb3f04da95f2cdbe4b713d3e997dfb67b87ca0.tar.gz
gcc-dabb3f04da95f2cdbe4b713d3e997dfb67b87ca0.tar.bz2
libgcc2.c (__ffsdi2, [...]): Change return type to "int".
* 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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/libgcc2.c36
-rw-r--r--gcc/libgcc2.h34
-rw-r--r--gcc/optabs.c2
4 files changed, 47 insertions, 33 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 439a351..a91d014 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 4260e25..c2279ef 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 c71fcce..f32f4a0 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 2b08f8e..92bfc35 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 ();