diff options
author | mrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-08-13 20:41:07 +0000 |
---|---|---|
committer | mrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-08-13 20:41:07 +0000 |
commit | e913b5cd5b6a9bd3a2ad58c65f9e3cd2bb55a28c (patch) | |
tree | f52a097017e3dcf89fad6525984e4591489f961e /gcc/tree-object-size.c | |
parent | 9a5942c1d4d9116ab74b0741cfe3894a89fd17fb (diff) |
Add wide-int branch.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/wide-int@201707 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-object-size.c')
-rw-r--r-- | gcc/tree-object-size.c | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/gcc/tree-object-size.c b/gcc/tree-object-size.c index 1a52a416a632..7066c56c45ef 100644 --- a/gcc/tree-object-size.c +++ b/gcc/tree-object-size.c @@ -77,8 +77,8 @@ static unsigned HOST_WIDE_INT offset_limit; static void init_offset_limit (void) { - if (host_integerp (TYPE_MAX_VALUE (sizetype), 1)) - offset_limit = tree_low_cst (TYPE_MAX_VALUE (sizetype), 1); + if (tree_fits_uhwi_p (TYPE_MAX_VALUE (sizetype))) + offset_limit = tree_to_uhwi (TYPE_MAX_VALUE (sizetype)); else offset_limit = -1; offset_limit /= 2; @@ -106,7 +106,7 @@ compute_object_offset (const_tree expr, const_tree var) t = TREE_OPERAND (expr, 1); off = size_binop (PLUS_EXPR, DECL_FIELD_OFFSET (t), - size_int (tree_low_cst (DECL_FIELD_BIT_OFFSET (t), 1) + size_int (tree_to_uhwi (DECL_FIELD_BIT_OFFSET (t)) / BITS_PER_UNIT)); break; @@ -141,7 +141,7 @@ compute_object_offset (const_tree expr, const_tree var) case MEM_REF: gcc_assert (TREE_CODE (TREE_OPERAND (expr, 0)) == ADDR_EXPR); - return double_int_to_tree (sizetype, mem_ref_offset (expr)); + return wide_int_to_tree (sizetype, mem_ref_offset (expr)); default: return error_mark_node; @@ -191,10 +191,10 @@ addr_object_size (struct object_size_info *osi, const_tree ptr, } if (sz != unknown[object_size_type]) { - double_int dsz = double_int::from_uhwi (sz) - mem_ref_offset (pt_var); - if (dsz.is_negative ()) + addr_wide_int dsz = addr_wide_int (sz) - mem_ref_offset (pt_var); + if (dsz.neg_p (SIGNED)) sz = 0; - else if (dsz.fits_uhwi ()) + else if (dsz.fits_uhwi_p ()) sz = dsz.to_uhwi (); else sz = unknown[object_size_type]; @@ -205,16 +205,16 @@ addr_object_size (struct object_size_info *osi, const_tree ptr, } else if (pt_var && DECL_P (pt_var) - && host_integerp (DECL_SIZE_UNIT (pt_var), 1) + && tree_fits_uhwi_p (DECL_SIZE_UNIT (pt_var)) && (unsigned HOST_WIDE_INT) - tree_low_cst (DECL_SIZE_UNIT (pt_var), 1) < offset_limit) + tree_to_uhwi (DECL_SIZE_UNIT (pt_var)) < offset_limit) pt_var_size = DECL_SIZE_UNIT (pt_var); else if (pt_var && TREE_CODE (pt_var) == STRING_CST && TYPE_SIZE_UNIT (TREE_TYPE (pt_var)) - && host_integerp (TYPE_SIZE_UNIT (TREE_TYPE (pt_var)), 1) + && tree_fits_uhwi_p (TYPE_SIZE_UNIT (TREE_TYPE (pt_var))) && (unsigned HOST_WIDE_INT) - tree_low_cst (TYPE_SIZE_UNIT (TREE_TYPE (pt_var)), 1) + tree_to_uhwi (TYPE_SIZE_UNIT (TREE_TYPE (pt_var))) < offset_limit) pt_var_size = TYPE_SIZE_UNIT (TREE_TYPE (pt_var)); else @@ -239,7 +239,7 @@ addr_object_size (struct object_size_info *osi, const_tree ptr, if (var != pt_var && TREE_CODE (var) == ARRAY_REF) var = TREE_OPERAND (var, 0); if (! TYPE_SIZE_UNIT (TREE_TYPE (var)) - || ! host_integerp (TYPE_SIZE_UNIT (TREE_TYPE (var)), 1) + || ! tree_fits_uhwi_p (TYPE_SIZE_UNIT (TREE_TYPE (var))) || (pt_var_size && tree_int_cst_lt (pt_var_size, TYPE_SIZE_UNIT (TREE_TYPE (var))))) @@ -367,8 +367,8 @@ addr_object_size (struct object_size_info *osi, const_tree ptr, else bytes = pt_var_size; - if (host_integerp (bytes, 1)) - return tree_low_cst (bytes, 1); + if (tree_fits_uhwi_p (bytes)) + return tree_to_uhwi (bytes); return unknown[object_size_type]; } @@ -397,9 +397,9 @@ alloc_object_size (const_gimple call, int object_size_type) { tree p = TREE_VALUE (alloc_size); - arg1 = TREE_INT_CST_LOW (TREE_VALUE (p))-1; + arg1 = tree_to_hwi (TREE_VALUE (p))-1; if (TREE_CHAIN (p)) - arg2 = TREE_INT_CST_LOW (TREE_VALUE (TREE_CHAIN (p)))-1; + arg2 = tree_to_hwi (TREE_VALUE (TREE_CHAIN (p)))-1; } if (DECL_BUILT_IN_CLASS (callee) == BUILT_IN_NORMAL) @@ -430,8 +430,8 @@ alloc_object_size (const_gimple call, int object_size_type) else if (arg1 >= 0) bytes = fold_convert (sizetype, gimple_call_arg (call, arg1)); - if (bytes && host_integerp (bytes, 1)) - return tree_low_cst (bytes, 1); + if (bytes && tree_fits_uhwi_p (bytes)) + return tree_to_uhwi (bytes); return unknown[object_size_type]; } @@ -791,13 +791,13 @@ plus_stmt_object_size (struct object_size_info *osi, tree var, gimple stmt) && (TREE_CODE (op0) == SSA_NAME || TREE_CODE (op0) == ADDR_EXPR)) { - if (! host_integerp (op1, 1)) + if (! tree_fits_uhwi_p (op1)) bytes = unknown[object_size_type]; else if (TREE_CODE (op0) == SSA_NAME) - return merge_object_sizes (osi, var, op0, tree_low_cst (op1, 1)); + return merge_object_sizes (osi, var, op0, tree_to_uhwi (op1)); else { - unsigned HOST_WIDE_INT off = tree_low_cst (op1, 1); + unsigned HOST_WIDE_INT off = tree_to_uhwi (op1); /* op0 will be ADDR_EXPR here. */ bytes = addr_object_size (osi, op0, object_size_type); @@ -1223,10 +1223,10 @@ compute_object_sizes (void) { tree ost = gimple_call_arg (call, 1); - if (host_integerp (ost, 1)) + if (tree_fits_uhwi_p (ost)) { unsigned HOST_WIDE_INT object_size_type - = tree_low_cst (ost, 1); + = tree_to_uhwi (ost); if (object_size_type < 2) result = fold_convert (size_type_node, |