public inbox for java-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Anatoly Sokolov <aesok@post.ru>
To: Richard Guenther <richard.guenther@gmail.com>
Cc: gcc-patches@gcc.gnu.org, java-patches@gcc.gnu.org
Subject: Re[2]: Remove build_int_cst_wide_type function.
Date: Wed, 19 May 2010 20:00:00 -0000	[thread overview]
Message-ID: <1805129171.20100520000040@post.ru> (raw)
In-Reply-To: <n2w84fc9c001005071331t15ae9ce6o3dc3c09acd48af8d@mail.gmail.com>

Hello.


>> Index: gcc/dojump.c
>> ===================================================================
>> --- gcc/dojump.c        (revision 159109)
>> +++ gcc/dojump.c        (working copy)
>> @@ -539,10 +539,11 @@
>>                  && prefer_and_bit_test (TYPE_MODE (argtype),
>>                                          TREE_INT_CST_LOW (shift)))
>>                {
>> -                 unsigned HOST_WIDE_INT mask
>> -                   = (unsigned HOST_WIDE_INT) 1 << TREE_INT_CST_LOW (shift);
>> +                 double_int mask
>> +                   = double_int_setbit (double_int_zero,
>> +                                        TREE_INT_CST_LOW (shift));
>>                  do_jump (build2 (BIT_AND_EXPR, argtype, arg,
>> -                                  build_int_cst_wide_type (argtype, mask, 0)),
>> +                                  double_int_to_tree (argtype, mask)),

> Use build_int_cstu instead and retain using HOST_WIDE_INTs.  Btw,
> both build_int_cst and build_int_cstu should do proper sign/zero
> extension as the types precision may be lower than that of
> HOST_WIDE_INT.



> Ok with these changes.

Committed as.

        * 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.

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


Index: gcc/java/jcf-parse.c
===================================================================
--- gcc/java/jcf-parse.c        (revision 159566)
+++ gcc/java/jcf-parse.c        (working copy)
@@ -1040,14 +1040,15 @@
       }
     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: gcc/tree.c
===================================================================
--- gcc/tree.c  (revision 159566)
+++ gcc/tree.c  (working copy)
@@ -1063,17 +1063,6 @@
   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: gcc/tree.h
===================================================================
--- gcc/tree.h  (revision 159566)
+++ gcc/tree.h  (working copy)
@@ -4012,8 +4012,6 @@
 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) *);
Index: gcc/fold-const.c
===================================================================
--- gcc/fold-const.c    (revision 159566)
+++ gcc/fold-const.c    (working copy)
@@ -7408,13 +7408,14 @@
   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 @@
       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: gcc/dojump.c
===================================================================
--- gcc/dojump.c        (revision 159566)
+++ gcc/dojump.c        (working copy)
@@ -542,7 +542,7 @@
                  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: gcc/double-int.h
===================================================================
--- gcc/double-int.h    (revision 159566)
+++ gcc/double-int.h    (working copy)
@@ -126,6 +126,9 @@
 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 @@
   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: gcc/stor-layout.c
===================================================================
--- gcc/stor-layout.c   (revision 159566)
+++ gcc/stor-layout.c   (working copy)
@@ -2275,9 +2275,7 @@
      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");


Anatoly.


      parent reply	other threads:[~2010-05-19 20:00 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-07 18:59 Anatoly Sokolov
2010-05-07 20:31 ` Richard Guenther
2010-05-10  9:24   ` Anatoly Sokolov
2010-05-10  9:34     ` Richard Guenther
2010-05-10 10:24       ` Anatoly Sokolov
2010-05-10 10:34         ` Richard Guenther
2010-05-10 11:17           ` Anatoly Sokolov
2010-05-10 11:35             ` Richard Guenther
2010-05-10 11:47               ` Anatoly Sokolov
2010-05-19 20:00   ` Anatoly Sokolov [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1805129171.20100520000040@post.ru \
    --to=aesok@post.ru \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=java-patches@gcc.gnu.org \
    --cc=richard.guenther@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).