aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/utils2.c
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2014-08-01 15:46:29 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2014-08-01 15:46:29 +0200
commit1eb5852081801218c02c934db5aa9852fc284645 (patch)
tree17c3243a6166917936352164905bb90a504297ef /gcc/ada/gcc-interface/utils2.c
parentecda544d41f26433d80a0632c09dec07fd2a8dfd (diff)
downloadgcc-1eb5852081801218c02c934db5aa9852fc284645.zip
gcc-1eb5852081801218c02c934db5aa9852fc284645.tar.gz
gcc-1eb5852081801218c02c934db5aa9852fc284645.tar.bz2
ada-tree.h (DECL_BY_DESCRIPTOR_P): Delete.
2014-08-01 Eric Botcazou <ebotcazou@adacore.com> * gcc-interface/ada-tree.h (DECL_BY_DESCRIPTOR_P): Delete. (DECL_FUNCTION_STUB): Likewise. (SET_DECL_FUNCTION_STUB): Likewise. (DECL_PARM_ALT_TYPE): Likewise. (SET_DECL_PARM_ALT_TYPE): Likewise. (TYPE_VAX_FLOATING_POINT_P): Delete. (TYPE_DIGITS_VALUE): Likewise. (SET_TYPE_DIGITS_VALUE): Likewise. * gcc-interface/gigi.h (standard_datatypes): Remove ADT_malloc32_decl. (malloc32_decl): Delete. (build_vms_descriptor): Likewise. (build_vms_descriptor32): Likewise. (fill_vms_descriptor): Likewise. (convert_vms_descriptor): Likewise. (TARGET_ABI_OPEN_VMS): Likewise. (TARGET_MALLOC64): Likewise. * gcc-interface/decl.c (add_parallel_type_for_packed_array): New. (gnat_to_gnu_entity): Call it to add the original type as a parallel type to the implementation type of a packed array type. <E_Procedure>: Remove now obsolete kludge. <E_Exception>: Delete obsolete comment. <object>: Small tweak. <E_Subprogram_Type>: Remove support for stub subprograms, as well as for the descriptor passing mechanism. (gnat_to_gnu_param): Likewise. * gcc-interface/misc.c (gnat_init_gcc_fp): Remove special case. (gnat_print_type): Adjust. * gcc-interface/trans.c (gigi): Remove obsolete initializations. (vms_builtin_establish_handler_decl): Delete. (gnat_vms_condition_handler_decl): Likewise. (establish_gnat_vms_condition_handler): Likewise. (build_function_stub): Likewise. (Subprogram_Body_to_gnu): Do not call above functions. (Call_to_gnu): Remove support for the descriptor passing mechanism. * gcc-interface/utils.c (make_descriptor_field): Delete. (build_vms_descriptor32): Likewise. (build_vms_descriptor): Likewise. (fill_vms_descriptor): Likewise. (convert_vms_descriptor64): Likewise. (convert_vms_descriptor32): Likewise. (convert_vms_descriptor): Likewise. * gcc-interface/utils.c (unchecked_convert): Likewise. * gcc-interface/utils2.c (maybe_wrap_malloc): Remove obsolete stuff. 2014-08-01 Eric Botcazou <ebotcazou@adacore.com> * gcc-interface/trans.c (gigi): Use gnat_to_gnu_type for the exception type and get_unpadded_type for the longest FP type. (Attribute_to_gnu) <Machine>: Compare the precision of the types. (convert_with_check): Adjust formatting and remove FIXME. 2014-08-01 Eric Botcazou <ebotcazou@adacore.com> * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Signed_Integer_Subtype>: Do not convert the RM bounds to the base type. (E_Floating_Point_Subtype): Likewise. (E_Array_Subtype): Convert the bounds to the base type. * gcc-interface/trans.c (get_type_length): New function. (Attribute_to_gnu) <Range_Length>: Call it. <Length>: Likewise. (Loop_Statement_to_gnu): Convert the bounds to the base type. (gnat_to_gnu) <N_In>: Likewise. * gcc-interface/utils.c (make_type_from_size): Do not convert the RM bounds to the base type. (create_range_type): Likewise. (convert): Convert the bounds to the base type for biased types. * gcc-interface/utils2.c (compare_arrays): Convert the bounds to the base type. 2014-08-01 Eric Botcazou <ebotcazou@adacore.com> * gcc-interface/trans.c (gnat_to_gnu) <N_Selected_Component>: Remove incorrect implicit type derivation. * gcc-interface/utils.c (max_size) <tcc_reference>: Convert the bounds to the base type. From-SVN: r213462
Diffstat (limited to 'gcc/ada/gcc-interface/utils2.c')
-rw-r--r--gcc/ada/gcc-interface/utils2.c40
1 files changed, 18 insertions, 22 deletions
diff --git a/gcc/ada/gcc-interface/utils2.c b/gcc/ada/gcc-interface/utils2.c
index e6e4887..3e4a094 100644
--- a/gcc/ada/gcc-interface/utils2.c
+++ b/gcc/ada/gcc-interface/utils2.c
@@ -300,10 +300,14 @@ compare_arrays (location_t loc, tree result_type, tree a1, tree a2)
last < first holds. */
if (integer_zerop (length2))
{
+ tree b = get_base_type (TYPE_INDEX_TYPE (TYPE_DOMAIN (t1)));
+
length_zero_p = true;
- ub1 = TYPE_MAX_VALUE (TYPE_INDEX_TYPE (TYPE_DOMAIN (t1)));
- lb1 = TYPE_MIN_VALUE (TYPE_INDEX_TYPE (TYPE_DOMAIN (t1)));
+ ub1
+ = convert (b, TYPE_MAX_VALUE (TYPE_INDEX_TYPE (TYPE_DOMAIN (t1))));
+ lb1
+ = convert (b, TYPE_MIN_VALUE (TYPE_INDEX_TYPE (TYPE_DOMAIN (t1))));
comparison = fold_build2_loc (loc, LT_EXPR, result_type, ub1, lb1);
comparison = SUBSTITUTE_PLACEHOLDER_IN_EXPR (comparison, a1);
@@ -319,20 +323,23 @@ compare_arrays (location_t loc, tree result_type, tree a1, tree a2)
just use its length computed from the actual stored bounds. */
else if (TREE_CODE (length2) == INTEGER_CST)
{
- tree bt;
+ tree b = get_base_type (TYPE_INDEX_TYPE (TYPE_DOMAIN (t1)));
- ub1 = TYPE_MAX_VALUE (TYPE_INDEX_TYPE (TYPE_DOMAIN (t1)));
- lb1 = TYPE_MIN_VALUE (TYPE_INDEX_TYPE (TYPE_DOMAIN (t1)));
+ ub1
+ = convert (b, TYPE_MAX_VALUE (TYPE_INDEX_TYPE (TYPE_DOMAIN (t1))));
+ lb1
+ = convert (b, TYPE_MIN_VALUE (TYPE_INDEX_TYPE (TYPE_DOMAIN (t1))));
/* Note that we know that UB2 and LB2 are constant and hence
cannot contain a PLACEHOLDER_EXPR. */
- ub2 = TYPE_MAX_VALUE (TYPE_INDEX_TYPE (TYPE_DOMAIN (t2)));
- lb2 = TYPE_MIN_VALUE (TYPE_INDEX_TYPE (TYPE_DOMAIN (t2)));
- bt = get_base_type (TREE_TYPE (ub1));
+ ub2
+ = convert (b, TYPE_MAX_VALUE (TYPE_INDEX_TYPE (TYPE_DOMAIN (t2))));
+ lb2
+ = convert (b, TYPE_MIN_VALUE (TYPE_INDEX_TYPE (TYPE_DOMAIN (t2))));
comparison
= fold_build2_loc (loc, EQ_EXPR, result_type,
- build_binary_op (MINUS_EXPR, bt, ub1, lb1),
- build_binary_op (MINUS_EXPR, bt, ub2, lb2));
+ build_binary_op (MINUS_EXPR, b, ub1, lb1),
+ build_binary_op (MINUS_EXPR, b, ub2, lb2));
comparison = SUBSTITUTE_PLACEHOLDER_IN_EXPR (comparison, a1);
if (EXPR_P (comparison))
SET_EXPR_LOCATION (comparison, loc);
@@ -2152,18 +2159,7 @@ maybe_wrap_malloc (tree data_size, tree data_type, Node_Id gnat_node)
tree size_to_malloc
= aligning_type ? TYPE_SIZE_UNIT (aligning_type) : data_size;
- tree malloc_ptr;
-
- /* On VMS, if pointers are 64-bit and the allocator size is 32-bit or
- Convention C, allocate 32-bit memory. */
- if (TARGET_ABI_OPEN_VMS
- && POINTER_SIZE == 64
- && Nkind (gnat_node) == N_Allocator
- && (UI_To_Int (Esize (Etype (gnat_node))) == 32
- || Convention (Etype (gnat_node)) == Convention_C))
- malloc_ptr = build_call_n_expr (malloc32_decl, 1, size_to_malloc);
- else
- malloc_ptr = build_call_n_expr (malloc_decl, 1, size_to_malloc);
+ tree malloc_ptr = build_call_n_expr (malloc_decl, 1, size_to_malloc);
if (aligning_type)
{