diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2010-04-17 08:14:08 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2010-04-17 08:14:08 +0000 |
commit | 1081f5a7c753c0850becc3758adee1ce3f968ec9 (patch) | |
tree | f52b778a479d5827dea31191f94c7e6e2e92abf9 /gcc/ada/gcc-interface/trans.c | |
parent | 80d56d040e2050cf478e7e0703d5fe9af30eaac1 (diff) | |
download | gcc-1081f5a7c753c0850becc3758adee1ce3f968ec9.zip gcc-1081f5a7c753c0850becc3758adee1ce3f968ec9.tar.gz gcc-1081f5a7c753c0850becc3758adee1ce3f968ec9.tar.bz2 |
gigi.h (enum standard_datatypes): Add new values ADT_sbitsize_one_node and ADT_sbitsize_unit_node.
* gcc-interface/gigi.h (enum standard_datatypes): Add new values
ADT_sbitsize_one_node and ADT_sbitsize_unit_node.
(sbitsize_one_node): New macro.
(sbitsize_unit_node): Likewise.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Subtype>: Fix
latent bug in the computation of subrange_p. Fold wider_p predicate.
(cannot_be_superflat_p): Use an explicitly signed 64-bit type to do
the final comparison.
(make_aligning_type): Build real negation and use sizetype throughout
the offset computation.
(maybe_pad_type): Do not issue the warning when the new size expression
is too complex.
(annotate_value) <INTEGER_CST>: Simplify code handling negative values.
* gcc-interface/misc.c (gnat_init): Initialize sbitsize_one_node and
sbitsize_unit_node.
* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Pool_Address>: Fold
double negation.
(gnat_to_gnu) <N_Free_Statement>: Likewise.
* gcc-interface/utils.c (convert): Use sbitsize_unit_node.
* gcc-interface/utils2.c (compare_arrays): Compute real lengths and use
constants in sizetype. Remove dead code and tweak comments. Generate
equality instead of inequality comparisons for zero length tests.
From-SVN: r158461
Diffstat (limited to 'gcc/ada/gcc-interface/trans.c')
-rw-r--r-- | gcc/ada/gcc-interface/trans.c | 16 |
1 files changed, 2 insertions, 14 deletions
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index 7f35bc2..4b7946c 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -1356,15 +1356,9 @@ Attribute_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, int attribute) { tree gnu_char_ptr_type = build_pointer_type (char_type_node); tree gnu_pos = byte_position (TYPE_FIELDS (gnu_obj_type)); - tree gnu_byte_offset - = convert (sizetype, - size_diffop (size_zero_node, gnu_pos)); - gnu_byte_offset - = fold_build1 (NEGATE_EXPR, sizetype, gnu_byte_offset); - gnu_ptr = convert (gnu_char_ptr_type, gnu_ptr); gnu_ptr = build_binary_op (POINTER_PLUS_EXPR, gnu_char_ptr_type, - gnu_ptr, gnu_byte_offset); + gnu_ptr, gnu_pos); } gnu_result = convert (gnu_result_type, gnu_ptr); @@ -5399,15 +5393,9 @@ gnat_to_gnu (Node_Id gnat_node) { tree gnu_char_ptr_type = build_pointer_type (char_type_node); tree gnu_pos = byte_position (TYPE_FIELDS (gnu_obj_type)); - tree gnu_byte_offset - = convert (sizetype, - size_diffop (size_zero_node, gnu_pos)); - gnu_byte_offset - = fold_build1 (NEGATE_EXPR, sizetype, gnu_byte_offset); - gnu_ptr = convert (gnu_char_ptr_type, gnu_ptr); gnu_ptr = build_binary_op (POINTER_PLUS_EXPR, gnu_char_ptr_type, - gnu_ptr, gnu_byte_offset); + gnu_ptr, gnu_pos); } gnu_result |