diff options
Diffstat (limited to 'gcc/ada/gcc-interface/utils2.c')
-rw-r--r-- | gcc/ada/gcc-interface/utils2.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/ada/gcc-interface/utils2.c b/gcc/ada/gcc-interface/utils2.c index dcd4134..7f3a3d3 100644 --- a/gcc/ada/gcc-interface/utils2.c +++ b/gcc/ada/gcc-interface/utils2.c @@ -1439,8 +1439,8 @@ build_unary_op (enum tree_code op_code, tree result_type, tree operand) the offset to the field. Otherwise, do this the normal way. */ if (op_code == ATTR_ADDR_EXPR) { - HOST_WIDE_INT bitsize; - HOST_WIDE_INT bitpos; + poly_int64 bitsize; + poly_int64 bitpos; tree offset, inner; machine_mode mode; int unsignedp, reversep, volatilep; @@ -1460,8 +1460,9 @@ build_unary_op (enum tree_code op_code, tree result_type, tree operand) if (!offset) offset = size_zero_node; - offset = size_binop (PLUS_EXPR, offset, - size_int (bitpos / BITS_PER_UNIT)); + offset + = size_binop (PLUS_EXPR, offset, + size_int (bits_to_bytes_round_down (bitpos))); /* Take the address of INNER, convert it to a pointer to our type and add the offset. */ |