From: Eric Botcazou Date: Sun, 20 Nov 2011 10:16:48 +0000 (+0000) Subject: trans.c (Subprogram_Body_to_gnu): Add comment. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0d24bf7601974f373cce377a50132c485d488e18;p=gcc.git trans.c (Subprogram_Body_to_gnu): Add comment. * gcc-interface/trans.c (Subprogram_Body_to_gnu): Add comment. (gnat_to_gnu) : Add 'else' to avoid doing a useless test. Tweak default case. : Use better formatting. * gcc-interface/utils2.c (maybe_wrap_malloc): Use INIT_EXPR instead of MODIFY_EXPR to initialize the storage. (build_allocator): Likewise. From-SVN: r181527 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 3e9e7ea45cd..49cd9570b38 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,13 @@ +2011-10-20 Eric Botcazou + + * gcc-interface/trans.c (Subprogram_Body_to_gnu): Add comment. + (gnat_to_gnu) : Add 'else' to avoid doing a useless + test. Tweak default case. + : Use better formatting. + * gcc-interface/utils2.c (maybe_wrap_malloc): Use INIT_EXPR instead of + MODIFY_EXPR to initialize the storage. + (build_allocator): Likewise. + 2011-11-20 Eric Botcazou * gcc-interface/decl.c (gnat_to_gnu_entity) : Adjust diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index 8a74e6ccb45..bc6172a7ac0 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -3278,6 +3278,7 @@ Subprogram_Body_to_gnu (Node_Id gnat_node) save_gnu_tree (gnat_param, NULL_TREE, false); } + /* Disconnect the variable created for the return value. */ if (gnu_return_var_elmt) TREE_VALUE (gnu_return_var_elmt) = void_type_node; @@ -5889,12 +5890,12 @@ gnat_to_gnu (Node_Id gnat_node) gnat_node, false); } - /* If the function returns by invisible reference, dereference + /* Otherwise, if it returns by invisible reference, dereference the pointer it is passed using the type of the return value and build the copy operation manually. This ensures that we don't copy too much data, for example if the return type is unconstrained with a maximum size. */ - if (TREE_ADDRESSABLE (gnu_subprog_type)) + else if (TREE_ADDRESSABLE (gnu_subprog_type)) { tree gnu_ret_deref = build_unary_op (INDIRECT_REF, TREE_TYPE (gnu_ret_val), @@ -5905,11 +5906,9 @@ gnat_to_gnu (Node_Id gnat_node) gnu_ret_val = NULL_TREE; } } + else - { - gnu_ret_obj = NULL_TREE; - gnu_ret_val = NULL_TREE; - } + gnu_ret_obj = gnu_ret_val = NULL_TREE; /* If we have a return label defined, convert this into a branch to that label. The return proper will be handled elsewhere. */ @@ -5934,8 +5933,8 @@ gnat_to_gnu (Node_Id gnat_node) break; case N_Goto_Statement: - gnu_result = build1 (GOTO_EXPR, void_type_node, - gnat_to_gnu (Name (gnat_node))); + gnu_result + = build1 (GOTO_EXPR, void_type_node, gnat_to_gnu (Name (gnat_node))); break; /***************************/ diff --git a/gcc/ada/gcc-interface/utils2.c b/gcc/ada/gcc-interface/utils2.c index c303e2f20a3..f9e48b79fe5 100644 --- a/gcc/ada/gcc-interface/utils2.c +++ b/gcc/ada/gcc-interface/utils2.c @@ -2126,7 +2126,7 @@ maybe_wrap_malloc (tree data_size, tree data_type, Node_Id gnat_node) return build2 (COMPOUND_EXPR, TREE_TYPE (aligning_field_addr), - build_binary_op (MODIFY_EXPR, NULL_TREE, + build_binary_op (INIT_EXPR, NULL_TREE, storage_ptr_slot, storage_ptr), aligning_field_addr); } @@ -2279,12 +2279,12 @@ build_allocator (tree type, tree init, tree result_type, Entity_Id gnat_proc, CONSTRUCTOR_APPEND_ELT (v, DECL_CHAIN (TYPE_FIELDS (storage_type)), init); storage_init - = build_binary_op (MODIFY_EXPR, NULL_TREE, storage_deref, + = build_binary_op (INIT_EXPR, NULL_TREE, storage_deref, gnat_build_constructor (storage_type, v)); } else storage_init - = build_binary_op (MODIFY_EXPR, NULL_TREE, + = build_binary_op (INIT_EXPR, NULL_TREE, build_component_ref (storage_deref, NULL_TREE, TYPE_FIELDS (storage_type), false), @@ -2332,7 +2332,7 @@ build_allocator (tree type, tree init, tree result_type, Entity_Id gnat_proc, storage_deref = build_unary_op (INDIRECT_REF, NULL_TREE, storage); TREE_THIS_NOTRAP (storage_deref) = 1; storage_init - = build_binary_op (MODIFY_EXPR, NULL_TREE, storage_deref, init); + = build_binary_op (INIT_EXPR, NULL_TREE, storage_deref, init); return build2 (COMPOUND_EXPR, result_type, storage_init, storage); }