]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
* double-int.h (double_int_ior): New function.
authoraesok <aesok@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 19 May 2010 20:09:57 +0000 (20:09 +0000)
committeraesok <aesok@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 19 May 2010 20:09:57 +0000 (20:09 +0000)
* tree.h (build_int_cst_wide_type): Remove.
* tree.c (build_int_cst_wide_type): Remove.
* fold-const.c (native_interpret_int): Use double_int_to_tree instead
of build_int_cst_wide_type.
* stor-layout.c (set_sizetype): (Ditto.).
* dojump.c (do_jump): Use build_int_cstu instead of
build_int_cst_wide_type.

/java
* jcf-parse.c (get_constant): Use double_int_to_tree instead of
build_int_cst_wide_type.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159595 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/dojump.c
gcc/double-int.h
gcc/fold-const.c
gcc/java/ChangeLog
gcc/java/jcf-parse.c
gcc/stor-layout.c
gcc/tree.c
gcc/tree.h

index aaaa6cbef0634105b5b78a5ecfc71274943e4a8d..e215a91fba8d66f28f3895fcdcf97ada245e043c 100644 (file)
@@ -1,3 +1,14 @@
+2010-05-19  Anatoly Sokolov  <aesok@post.ru>
+
+       * double-int.h (double_int_ior): New function.
+       * tree.h (build_int_cst_wide_type): Remove.
+       * tree.c (build_int_cst_wide_type): Remove.
+       * fold-const.c (native_interpret_int): Use double_int_to_tree instead
+       of build_int_cst_wide_type.
+       * stor-layout.c (set_sizetype): (Ditto.).
+       * dojump.c (do_jump): Use build_int_cstu instead of
+       build_int_cst_wide_type.
+
 2010-05-19  Eric Botcazou  <ebotcazou@adacore.com>
 
        * langhooks.h (struct lang_hooks): Add new field deep_unsharing.
index d4ce6cfc45806ab4fb3c2e30e8defde89064bc70..0ebf932cfc5618933db2a48ad48f994977585976 100644 (file)
@@ -542,7 +542,7 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label, int prob)
                  unsigned HOST_WIDE_INT mask
                    = (unsigned HOST_WIDE_INT) 1 << TREE_INT_CST_LOW (shift);
                  do_jump (build2 (BIT_AND_EXPR, argtype, arg,
-                                  build_int_cst_wide_type (argtype, mask, 0)),
+                                  build_int_cstu (argtype, mask)),
                           clr_label, set_label, setclr_prob);
                  break;
                }
index 65d25ef04cbec5d6bad95625c8114620c8eb21cd..370f61965c9acdfce2d19248d713160ca18dac36 100644 (file)
@@ -126,6 +126,9 @@ double_int double_int_udivmod (double_int, double_int, unsigned, double_int *);
 double_int double_int_setbit (double_int, unsigned);
 
 /* Logical operations.  */
+
+/* Returns ~A.  */
+
 static inline double_int
 double_int_not (double_int a)
 {
@@ -134,6 +137,16 @@ double_int_not (double_int a)
   return a;
 }
 
+/* Returns A | B.  */
+
+static inline double_int
+double_int_ior (double_int a, double_int b)
+{
+  a.low |= b.low;
+  a.high |= b.high;
+  return a;
+}
+
 /* Shift operations.  */
 double_int double_int_lshift (double_int, HOST_WIDE_INT, unsigned int, bool);
 double_int double_int_rshift (double_int, HOST_WIDE_INT, unsigned int, bool);
index 17a753692d5059fbef91ac54e061130f53f1861b..e92a674277a55c91810d3c48e34e0fd99ff5b395 100644 (file)
@@ -7408,13 +7408,14 @@ native_interpret_int (tree type, const unsigned char *ptr, int len)
   int total_bytes = GET_MODE_SIZE (TYPE_MODE (type));
   int byte, offset, word, words;
   unsigned char value;
-  unsigned int HOST_WIDE_INT lo = 0;
-  HOST_WIDE_INT hi = 0;
+  double_int result;
 
   if (total_bytes > len)
     return NULL_TREE;
   if (total_bytes * BITS_PER_UNIT > 2 * HOST_BITS_PER_WIDE_INT)
     return NULL_TREE;
+
+  result = double_int_zero;
   words = total_bytes / UNITS_PER_WORD;
 
   for (byte = 0; byte < total_bytes; byte++)
@@ -7436,13 +7437,13 @@ native_interpret_int (tree type, const unsigned char *ptr, int len)
       value = ptr[offset];
 
       if (bitpos < HOST_BITS_PER_WIDE_INT)
-       lo |= (unsigned HOST_WIDE_INT) value << bitpos;
+       result.low |= (unsigned HOST_WIDE_INT) value << bitpos;
       else
-       hi |= (unsigned HOST_WIDE_INT) value
-             << (bitpos - HOST_BITS_PER_WIDE_INT);
+       result.high |= (unsigned HOST_WIDE_INT) value
+                      << (bitpos - HOST_BITS_PER_WIDE_INT);
     }
 
-  return build_int_cst_wide_type (type, lo, hi);
+  return double_int_to_tree (type, result);
 }
 
 
index c26e950bcf9ac2329ea13a03dcb881d01f8fc6eb..9a68dcdae893c917b9bb45ec300d5cc4be4feed1 100644 (file)
@@ -1,3 +1,8 @@
+2010-05-19  Anatoly Sokolov  <aesok@post.ru>
+
+       * jcf-parse.c (get_constant): Use double_int_to_tree instead of
+       build_int_cst_wide_type.
+
 2010-05-18  Nathan Froyd  <froydnj@codesourcery.com>
 
        * expr.c (pop_arguments): Fix use of undeclared variable.
index 2fe97bc6b46fd68c4bf1e635e55ae402a9369746..4768c715489395b18ee984f259a92043891bfad5 100644 (file)
@@ -1,6 +1,6 @@
 /* Parser for Java(TM) .class files.
    Copyright (C) 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+   2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -1040,14 +1040,15 @@ get_constant (JCF *jcf, int index)
       }
     case CONSTANT_Long:
       {
-       unsigned HOST_WIDE_INT num = JPOOL_UINT (jcf, index);
-       unsigned HOST_WIDE_INT lo;
-       HOST_WIDE_INT hi;
-       
-       lshift_double (num, 0, 32, 64, &lo, &hi, 0);
-       num = JPOOL_UINT (jcf, index+1);
-       add_double (lo, hi, num, 0, &lo, &hi);
-       value = build_int_cst_wide_type (long_type_node, lo, hi);
+       unsigned HOST_WIDE_INT num;
+       double_int val;
+
+       num = JPOOL_UINT (jcf, index);
+       val = double_int_lshift (uhwi_to_double_int (num), 32, 64, false);
+       num = JPOOL_UINT (jcf, index + 1);
+       val = double_int_ior (val, uhwi_to_double_int (num));
+
+       value = double_int_to_tree (long_type_node, val);
        break;
       }
 
index 20b03a8acace9bda81fdc9961a4738e212ac57e1..57287a4d81cbdd00219e2642cac412aa0dbe94f6 100644 (file)
@@ -2275,9 +2275,7 @@ set_sizetype (tree type)
      sign-extended in a way consistent with force_fit_type.  */
   max = TYPE_MAX_VALUE (sizetype);
   TYPE_MAX_VALUE (sizetype)
-    = build_int_cst_wide_type (sizetype,
-                              TREE_INT_CST_LOW (max),
-                              TREE_INT_CST_HIGH (max));
+    = double_int_to_tree (sizetype, tree_to_double_int (max));
 
   t = make_node (INTEGER_TYPE);
   TYPE_NAME (t) = get_identifier ("bit_size_type");
index fbf24b1e8bc80e0baaee0de397aaa7036159d8d9..887326664fadaf3f55762e190ec45132bf6a6f25 100644 (file)
@@ -1063,17 +1063,6 @@ build_int_cst_type (tree type, HOST_WIDE_INT low)
   return build_int_cst_wide (type, low1, hi);
 }
 
-/* Create an INT_CST node of TYPE and value HI:LOW.  The value is truncated
-   and sign extended according to the value range of TYPE.  */
-
-tree
-build_int_cst_wide_type (tree type,
-                        unsigned HOST_WIDE_INT low, HOST_WIDE_INT high)
-{
-  fit_double_type (low, high, &low, &high, type);
-  return build_int_cst_wide (type, low, high);
-}
-
 /* Constructs tree in type TYPE from with value given by CST.  Signedness
    of CST is assumed to be the same as the signedness of TYPE.  */
 
index e2f54a3f08f90d044072095e0de748c93b4cffff..8d7ab6dd5b5d656264d311bdfb5502708ad92a31 100644 (file)
@@ -4012,8 +4012,6 @@ build_int_cstu (tree type, unsigned HOST_WIDE_INT cst)
 extern tree build_int_cst (tree, HOST_WIDE_INT);
 extern tree build_int_cst_type (tree, HOST_WIDE_INT);
 extern tree build_int_cst_wide (tree, unsigned HOST_WIDE_INT, HOST_WIDE_INT);
-extern tree build_int_cst_wide_type (tree,
-                                    unsigned HOST_WIDE_INT, HOST_WIDE_INT);
 extern tree build_vector (tree, tree);
 extern tree build_vector_from_ctor (tree, VEC(constructor_elt,gc) *);
 extern tree build_constructor (tree, VEC(constructor_elt,gc) *);