diff options
author | uweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-12-02 13:50:52 +0000 |
---|---|---|
committer | uweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-12-02 13:50:52 +0000 |
commit | aaf45dfea47c5442092b42425f2997f679ad8593 (patch) | |
tree | 7e4051e9b7fae9d73287f5c8056ee0a287a5ce90 /gcc/tree.c | |
parent | 1d2a2cf439e96522226696a8567e35994a13fd6d (diff) | |
download | gcc-aaf45dfea47c5442092b42425f2997f679ad8593.tar.gz |
gcc/
PR middle-end/42224
* tree.h (int_or_pointer_precision): Remove.
* tree.c (int_or_pointer_precision): Remove.
(integer_pow2p): Use TYPE_PRECISION instead.
(tree_log2): Likewise.
(tree_floor_log2): Likewise.
(signed_or_unsigned_type_for): Likewise.
* fold-const.c (fit_double_type): Likewise.
* varasm.c (initializer_constant_valid_p): Likewise.
gcc/testsuite/
PR middle-end/42224
* gcc.target/s390/pr42224.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154908 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree.c')
-rw-r--r-- | gcc/tree.c | 47 |
1 files changed, 4 insertions, 43 deletions
diff --git a/gcc/tree.c b/gcc/tree.c index f8fb6ce8770..c533fd8c12c 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -1685,7 +1685,7 @@ integer_pow2p (const_tree expr) if (TREE_CODE (expr) != INTEGER_CST) return 0; - prec = int_or_pointer_precision (TREE_TYPE (expr)); + prec = TYPE_PRECISION (TREE_TYPE (expr)); high = TREE_INT_CST_HIGH (expr); low = TREE_INT_CST_LOW (expr); @@ -1749,7 +1749,7 @@ tree_log2 (const_tree expr) if (TREE_CODE (expr) == COMPLEX_CST) return tree_log2 (TREE_REALPART (expr)); - prec = int_or_pointer_precision (TREE_TYPE (expr)); + prec = TYPE_PRECISION (TREE_TYPE (expr)); high = TREE_INT_CST_HIGH (expr); low = TREE_INT_CST_LOW (expr); @@ -1785,7 +1785,7 @@ tree_floor_log2 (const_tree expr) if (TREE_CODE (expr) == COMPLEX_CST) return tree_log2 (TREE_REALPART (expr)); - prec = int_or_pointer_precision (TREE_TYPE (expr)); + prec = TYPE_PRECISION (TREE_TYPE (expr)); high = TREE_INT_CST_HIGH (expr); low = TREE_INT_CST_LOW (expr); @@ -9685,12 +9685,8 @@ signed_or_unsigned_type_for (int unsignedp, tree type) based on the named address space it points to. */ if (!TYPE_ADDR_SPACE (TREE_TYPE (t))) t = size_type_node; - else - { - int prec = int_or_pointer_precision (t); - return lang_hooks.types.type_for_size (prec, unsignedp); - } + return lang_hooks.types.type_for_size (TYPE_PRECISION (t), unsignedp); } if (!INTEGRAL_TYPE_P (t) || TYPE_UNSIGNED (t) == unsignedp) @@ -10565,41 +10561,6 @@ build_target_option_node (void) return t; } -/* Return the size in bits of an integer or pointer type. TYPE_PRECISION - contains the bits, but in the past it was not set in some cases and there - was special purpose code that checked for POINTER_TYPE_P or OFFSET_TYPE, so - check that it is consitant when assertion checking is used. */ - -unsigned int -int_or_pointer_precision (const_tree type) -{ -#if ENABLE_ASSERT_CHECKING - unsigned int prec; - - if (POINTER_TYPE_P (type)) - { - addr_space_t as = TYPE_ADDR_SPACE (TREE_TYPE (type)); - prec = GET_MODE_BITSIZE (targetm.addr_space.pointer_mode (as)); - gcc_assert (prec == TYPE_PRECISION (type)); - } - else if (TREE_CODE (type) == OFFSET_TYPE) - { - prec = POINTER_SIZE; - gcc_assert (prec == TYPE_PRECISION (type)); - } - else - { - prec = TYPE_PRECISION (type); - gcc_assert (prec != 0); - } - - return prec; - -#else - return TYPE_PRECISION (type); -#endif -} - /* Determine the "ultimate origin" of a block. The block may be an inlined instance of an inlined instance of a block which is local to an inline function, so we have to trace all of the way back through the origin chain |