aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/utils.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2010-04-09 10:10:25 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2010-04-09 10:10:25 +0000
commitced572837c918c138eee3e901d4b11a9996d7f07 (patch)
tree5a9512bd856f8febed5a570cb5d9132498eca27c /gcc/ada/gcc-interface/utils.c
parent3e65f25191da23215ba847ed49d10af5cf207490 (diff)
downloadgcc-ced572837c918c138eee3e901d4b11a9996d7f07.zip
gcc-ced572837c918c138eee3e901d4b11a9996d7f07.tar.gz
gcc-ced572837c918c138eee3e901d4b11a9996d7f07.tar.bz2
gigi.h (gnat_mark_addressable): Rename parameter.
* gcc-interface/gigi.h (gnat_mark_addressable): Rename parameter. * gcc-interface/decl.c (maybe_variable): Do not set TREE_STATIC on _REF node. Use the type of the operand to set TREE_READONLY. * gcc-interface/trans.c (Identifier_to_gnu): Do not set TREE_STATIC on _REF node. Do not overwrite TREE_READONLY. (call_to_gnu): Rename local variable and fix various nits. In the copy-in/copy-out case, build the SAVE_EXPR manually. (convert_with_check): Call protect_multiple_eval in lieu of save_expr and fold the computations. (protect_multiple_eval): Always save entire fat pointers. (maybe_stabilize_reference): Minor tweaks. (gnat_stabilize_reference_1): Likewise. Do not deal with tcc_constant, tcc_type and tcc_statement. * gcc-interface/utils.c (convert_to_fat_pointer): Call protect_multiple_eval in lieu of save_expr. (convert): Minor tweaks. (maybe_unconstrained_array): Do not set TREE_STATIC on _REF node. (builtin_type_for_size): Call gnat_type_for_size directly. * gcc-interface/utils2.c (contains_save_expr_p): Delete. (contains_null_expr): Likewise (gnat_build_constructor): Do not call it. (compare_arrays): Deal with all side-effects, use protect_multiple_eval instead of gnat_stabilize_reference to protect the operands. (nonbinary_modular_operation): Call protect_multiple_eval in lieu of save_expr. (maybe_wrap_malloc): Likewise. (build_allocator): Likewise. (build_unary_op) <INDIRECT_REF>: Do not set TREE_STATIC on _REF node. (gnat_mark_addressable): Rename parameter. From-SVN: r158156
Diffstat (limited to 'gcc/ada/gcc-interface/utils.c')
-rw-r--r--gcc/ada/gcc-interface/utils.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c
index 412aa3a..f35e9c7 100644
--- a/gcc/ada/gcc-interface/utils.c
+++ b/gcc/ada/gcc-interface/utils.c
@@ -3587,7 +3587,7 @@ convert_to_fat_pointer (tree type, tree expr)
{
tree fields = TYPE_FIELDS (TREE_TYPE (etype));
- expr = save_expr (expr);
+ expr = protect_multiple_eval (expr);
if (TREE_CODE (expr) == ADDR_EXPR)
expr = TREE_OPERAND (expr, 0);
else
@@ -3881,7 +3881,8 @@ convert (tree type, tree expr)
/* If packing has made this field a bitfield and the input
value couldn't be emitted statically any more, we need to
clear TREE_CONSTANT on our output. */
- if (!clear_constant && TREE_CONSTANT (expr)
+ if (!clear_constant
+ && TREE_CONSTANT (expr)
&& !CONSTRUCTOR_BITFIELD_P (efield)
&& CONSTRUCTOR_BITFIELD_P (field)
&& !initializer_constant_valid_for_bitfield_p (value))
@@ -3900,7 +3901,7 @@ convert (tree type, tree expr)
TREE_TYPE (expr) = type;
CONSTRUCTOR_ELTS (expr) = v;
if (clear_constant)
- TREE_CONSTANT (expr) = TREE_STATIC (expr) = false;
+ TREE_CONSTANT (expr) = TREE_STATIC (expr) = 0;
return expr;
}
}
@@ -4251,8 +4252,7 @@ maybe_unconstrained_array (tree exp)
build_component_ref (TREE_OPERAND (exp, 0),
get_identifier ("P_ARRAY"),
NULL_TREE, false));
- TREE_READONLY (new_exp) = TREE_STATIC (new_exp)
- = TREE_READONLY (exp);
+ TREE_READONLY (new_exp) = TREE_READONLY (exp);
return new_exp;
}
@@ -4735,7 +4735,7 @@ build_void_list_node (void)
static tree
builtin_type_for_size (int size, bool unsignedp)
{
- tree type = lang_hooks.types.type_for_size (size, unsignedp);
+ tree type = gnat_type_for_size (size, unsignedp);
return type ? type : error_mark_node;
}