diff options
author | aesok <aesok@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-05-19 20:09:57 +0000 |
---|---|---|
committer | aesok <aesok@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-05-19 20:09:57 +0000 |
commit | c5083e8b59f188c155a36a3335d803220428f7a9 (patch) | |
tree | 89268be053049f4ffb484bf22fb0818f0c2db8b7 /gcc | |
parent | 628de148ef004d49539b5d7d069af8c7438fcab6 (diff) | |
download | gcc-c5083e8b59f188c155a36a3335d803220428f7a9.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159595 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/dojump.c | 2 | ||||
-rw-r--r-- | gcc/double-int.h | 13 | ||||
-rw-r--r-- | gcc/fold-const.c | 13 | ||||
-rw-r--r-- | gcc/java/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/java/jcf-parse.c | 19 | ||||
-rw-r--r-- | gcc/stor-layout.c | 4 | ||||
-rw-r--r-- | gcc/tree.c | 11 | ||||
-rw-r--r-- | gcc/tree.h | 2 |
9 files changed, 48 insertions, 32 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index aaaa6cbef06..e215a91fba8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/dojump.c b/gcc/dojump.c index d4ce6cfc458..0ebf932cfc5 100644 --- a/gcc/dojump.c +++ b/gcc/dojump.c @@ -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; } diff --git a/gcc/double-int.h b/gcc/double-int.h index 65d25ef04cb..370f61965c9 100644 --- a/gcc/double-int.h +++ b/gcc/double-int.h @@ -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); diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 17a753692d5..e92a674277a 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -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); } diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index c26e950bcf9..9a68dcdae89 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -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. diff --git a/gcc/java/jcf-parse.c b/gcc/java/jcf-parse.c index 2fe97bc6b46..4768c715489 100644 --- a/gcc/java/jcf-parse.c +++ b/gcc/java/jcf-parse.c @@ -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; } diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index 20b03a8acac..57287a4d81c 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -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"); diff --git a/gcc/tree.c b/gcc/tree.c index fbf24b1e8bc..887326664fa 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -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. */ diff --git a/gcc/tree.h b/gcc/tree.h index e2f54a3f08f..8d7ab6dd5b5 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -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) *); |