aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/decl.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2010-04-09 10:49:46 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2010-04-09 10:49:46 +0000
commit7d7a1fe85989e4f3998060ed9f2d4d6973e39eed (patch)
tree14bd037437f5ca3585e8edde0baa10576ffe4886 /gcc/ada/gcc-interface/decl.c
parent3f2060fd386c382197ec67f0c64eebdf44c79cf4 (diff)
downloadgcc-7d7a1fe85989e4f3998060ed9f2d4d6973e39eed.zip
gcc-7d7a1fe85989e4f3998060ed9f2d4d6973e39eed.tar.gz
gcc-7d7a1fe85989e4f3998060ed9f2d4d6973e39eed.tar.bz2
gigi.h (maybe_variable): Delete.
* gcc-interface/gigi.h (maybe_variable): Delete. (protect_multiple_eval): Likewise. (maybe_stabilize_reference): Likewise. (gnat_save_expr): Declare. (gnat_protect_expr): Likewise. (gnat_stabilize_reference): Likewise. * gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Use gnat_stabilize_reference. (maybe_variable): Delete. (elaborate_expression_1): Use gnat_save_expr. * gcc-interface/trans.c (Attribute_to_gnu): Use gnat_protect_expr. (call_to_gnu): Pass NULL to gnat_stabilize_reference. (gnat_to_gnu) <N_Object_Declaration>: Use gnat_save_expr. <N_Slice>: Use gnat_protect_exp. <N_Selected_Component>: Pass NULL to gnat_stabilize_reference. <N_In>: Use gnat_protect_expr. Pass NULL to gnat_stabilize_reference. (build_unary_op_trapv): Use gnat_protect_expr. (build_binary_op_trapv): Likewise. (emit_range_check): Likewise. (emit_index_check): Likewise. (convert_with_check): Likewise. (protect_multiple_eval): Move to utils2.c file. (maybe_stabilize_reference): Merge into... (gnat_stabilize_reference): ...this. Move to utils2.c file. (gnat_stabilize_reference_1): Likewise. * gcc-interface/utils.c (convert_to_fat_pointer): Use gnat_protect_expr instead of protect_multiple_eval. * gcc-interface/utils2.c (compare_arrays): Likewise. (nonbinary_modular_operation): Likewise. (maybe_wrap_malloc): Likewise. (build_allocator): Likewise. (gnat_save_expr): New function. (gnat_protect_expr): Rename from protect_multiple_eval. Early return in common cases. Propagate TREE_READONLY onto dereferences. (gnat_stabilize_reference_1): Move from trans.c file. (gnat_stabilize_reference): Likewise. From-SVN: r158159
Diffstat (limited to 'gcc/ada/gcc-interface/decl.c')
-rw-r--r--gcc/ada/gcc-interface/decl.c29
1 files changed, 3 insertions, 26 deletions
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c
index 03938d1..dd76891 100644
--- a/gcc/ada/gcc-interface/decl.c
+++ b/gcc/ada/gcc-interface/decl.c
@@ -897,7 +897,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
&& !TREE_SIDE_EFFECTS (gnu_expr))))
{
maybe_stable_expr
- = maybe_stabilize_reference (gnu_expr, true, &stable);
+ = gnat_stabilize_reference (gnu_expr, true, &stable);
if (stable)
{
@@ -973,7 +973,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
else
{
maybe_stable_expr
- = maybe_stabilize_reference (gnu_expr, true, &stable);
+ = gnat_stabilize_reference (gnu_expr, true, &stable);
if (stable)
renamed_obj = maybe_stable_expr;
@@ -5727,29 +5727,6 @@ prepend_attributes (Entity_Id gnat_entity, struct attrib ** attr_list)
}
}
-/* Called when we need to protect a variable object using a SAVE_EXPR. */
-
-tree
-maybe_variable (tree gnu_operand)
-{
- if (TREE_CONSTANT (gnu_operand)
- || TREE_READONLY (gnu_operand)
- || TREE_CODE (gnu_operand) == SAVE_EXPR
- || TREE_CODE (gnu_operand) == NULL_EXPR)
- return gnu_operand;
-
- if (TREE_CODE (gnu_operand) == UNCONSTRAINED_ARRAY_REF)
- {
- tree gnu_result
- = build1 (UNCONSTRAINED_ARRAY_REF, TREE_TYPE (gnu_operand),
- variable_size (TREE_OPERAND (gnu_operand, 0)));
- TREE_READONLY (gnu_result) = TYPE_READONLY (TREE_TYPE (gnu_operand));
- return gnu_result;
- }
-
- return variable_size (gnu_operand);
-}
-
/* Given a GNAT tree GNAT_EXPR, for an expression which is a value within a
type definition (either a bound or a discriminant value) for GNAT_ENTITY,
return the GCC tree to use for that expression. GNU_NAME is the suffix
@@ -5852,7 +5829,7 @@ elaborate_expression_1 (tree gnu_expr, Entity_Id gnat_entity, tree gnu_name,
if (expr_global && expr_variable)
return gnu_decl;
- return expr_variable ? maybe_variable (gnu_expr) : gnu_expr;
+ return expr_variable ? gnat_save_expr (gnu_expr) : gnu_expr;
}
/* Create a record type that contains a SIZE bytes long field of TYPE with a