]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Makefile.in (double-int.o): Add $(TOPLEV_H) dependency.
authorRichard Guenther <rguenther@suse.de>
Wed, 4 Aug 2010 09:15:51 +0000 (09:15 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 4 Aug 2010 09:15:51 +0000 (09:15 +0000)
2010-08-04  Richard Guenther  <rguenther@suse.de>

* Makefile.in (double-int.o): Add $(TOPLEV_H) dependency.
* double-int.h (double_int_ctz): Declare.
* double-int.c (double_int_ctz): New function.

From-SVN: r162859

gcc/ChangeLog
gcc/Makefile.in
gcc/double-int.c
gcc/double-int.h

index 7b338e42ac5d75f7b4adc1d835354607f407fa13..e89469f7fb4d64ce50aa77aec78e501afb4416e3 100644 (file)
@@ -1,3 +1,9 @@
+2010-08-04  Richard Guenther  <rguenther@suse.de>
+
+       * Makefile.in (double-int.o): Add $(TOPLEV_H) dependency.
+       * double-int.h (double_int_ctz): Declare.
+       * double-int.c (double_int_ctz): New function.
+
 2010-08-04  Hariharan Sandanagobalane <hariharan@picochip.com>
 
        * config/picochip/picochip.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE):
index a6b3460e9489c53d7f3fd2ee06ab36bbffd2e440..030b9c06dcc3abad3213d5a047945cf7f14e2cce 100644 (file)
@@ -2279,7 +2279,8 @@ stringpool.o: stringpool.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
 convert.o: convert.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
    $(FLAGS_H) convert.h $(TOPLEV_H) $(DIAGNOSTIC_CORE_H) langhooks.h
 
-double-int.o: double-int.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H)
+double-int.o: double-int.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
+       $(TOPLEV_H) $(TREE_H)
 
 # lto-compress.o needs $(ZLIBINC) added to the include flags.
 lto-compress.o: lto-compress.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
index 924e91b6c905ef4e9ba90ebcb62fc8e8d6334023..29e720b2919ad8e85be7980d5a94627d5c85e0cd 100644 (file)
@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "toplev.h"
 
 /* We know that A1 + B1 = SUM1, using 2's complement arithmetic and ignoring
    overflow.  Suppose A, B and SUM have the same respective signs as A1, B1,
@@ -850,6 +851,26 @@ double_int_setbit (double_int a, unsigned bitpos)
   return a;
 }
 
+/* Count trailing zeros in A.  */
+int
+double_int_ctz (double_int a)
+{
+  unsigned HOST_WIDE_INT w = a.low ? a.low : (unsigned HOST_WIDE_INT) a.high;
+  unsigned bits = a.low ? 0 : HOST_BITS_PER_WIDE_INT;
+  if (!w)
+    return HOST_BITS_PER_DOUBLE_INT;
+#if (GCC_VERSION >= 3004)
+  bits += CTZ_HWI (w);
+#else
+  while (!(w & 1))
+    {
+      w >>= 1;
+      bits += 1;
+    }
+#endif
+  return bits;
+}
+
 /* Shift A left by COUNT places keeping only PREC bits of result.  Shift
    right if COUNT is negative.  ARITH true specifies arithmetic shifting;
    otherwise use logical shift.  */
index b14693d4fbdbcf07bde5c58592efb66f058ad618..c2f74e95e28980cd92c760aac1107ffb9d43b204 100644 (file)
@@ -148,7 +148,9 @@ double_int double_int_umod (double_int, double_int, unsigned);
 double_int double_int_divmod (double_int, double_int, bool, unsigned, double_int *);
 double_int double_int_sdivmod (double_int, double_int, unsigned, double_int *);
 double_int double_int_udivmod (double_int, double_int, unsigned, double_int *);
+
 double_int double_int_setbit (double_int, unsigned);
+int double_int_ctz (double_int);
 
 /* Logical operations.  */