aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/trans.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2007-02-16 23:40:52 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2007-02-16 23:40:52 +0000
commit9f3432b8a677aa18c1e12cdd9604f533b0745e2c (patch)
treef2b1452445646bd9dfaa1a7a6c7e058bcdedd189 /gcc/ada/trans.c
parent599b39ce9dcaba10e1c53934e50cca5f671a7f6e (diff)
downloadgcc-9f3432b8a677aa18c1e12cdd9604f533b0745e2c.zip
gcc-9f3432b8a677aa18c1e12cdd9604f533b0745e2c.tar.gz
gcc-9f3432b8a677aa18c1e12cdd9604f533b0745e2c.tar.bz2
trans.c (call_to_gnu): Use build_call_list instead of build3 to build the call expression.
* trans.c (call_to_gnu): Use build_call_list instead of build3 to build the call expression. (gnat_stabilize_reference_1): Handle tcc_vl_exp. * utils.c (max_size) <tcc_exceptional>: Delete. <tcc_vl_exp>: New case. <tcc_expression>: Delete CALL_EXPR subcase. (build_global_cdtor): Use build_call_nary instead of build3. * utils2.c (build_call_1_expr): Likewise. (build_call_2_expr): Likewise. (build_call_0_expr): Likewise. (build_call_alloc_dealloc): Likewise. Co-Authored-By: Sandra Loosemore <sandra@codesourcery.com> From-SVN: r122058
Diffstat (limited to 'gcc/ada/trans.c')
-rw-r--r--gcc/ada/trans.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/gcc/ada/trans.c b/gcc/ada/trans.c
index eee950b..6788012 100644
--- a/gcc/ada/trans.c
+++ b/gcc/ada/trans.c
@@ -389,12 +389,12 @@ Identifier_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p)
enclosing block, but we have no way of testing that right now.
??? We used to essentially set the TREE_ADDRESSABLE flag on the variable
-     here, but it can now be removed by the Tree aliasing machinery if the
-     address of the variable is never taken.  All we can do is to make the
-     variable volatile, which might incur the generation of temporaries just
- to access the memory in some circumstances.  This can be avoided for
-     variables of non-constant size because they are automatically allocated
-     to memory. There might be no way of allocating a proper temporary for
+ here, but it can now be removed by the Tree aliasing machinery if the
+ address of the variable is never taken. All we can do is to make the
+ variable volatile, which might incur the generation of temporaries just
+ to access the memory in some circumstances. This can be avoided for
+ variables of non-constant size because they are automatically allocated
+ to memory. There might be no way of allocating a proper temporary for
them in any case. We only do this for SJLJ though. */
if (TREE_VALUE (gnu_except_ptr_stack)
&& TREE_CODE (gnu_result) == VAR_DECL
@@ -1992,9 +1992,9 @@ call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target)
gnu_actual_list = tree_cons (NULL_TREE, gnu_actual, gnu_actual_list);
}
- gnu_subprog_call = build3 (CALL_EXPR, TREE_TYPE (gnu_subprog_type),
- gnu_subprog_addr, nreverse (gnu_actual_list),
- NULL_TREE);
+ gnu_subprog_call = build_call_list (TREE_TYPE (gnu_subprog_type),
+ gnu_subprog_addr,
+ nreverse (gnu_actual_list));
/* If we return by passing a target, we emit the call and return the target
as our result. */
@@ -6132,6 +6132,7 @@ gnat_stabilize_reference_1 (tree e, bool force)
case tcc_statement:
case tcc_expression:
case tcc_reference:
+ case tcc_vl_exp:
/* If this is a COMPONENT_REF of a fat pointer, save the entire
fat pointer. This may be more efficient, but will also allow
us to more easily find the match for the PLACEHOLDER_EXPR. */