diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2010-04-09 10:10:25 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2010-04-09 10:10:25 +0000 |
commit | ced572837c918c138eee3e901d4b11a9996d7f07 (patch) | |
tree | 5a9512bd856f8febed5a570cb5d9132498eca27c /gcc/ada/gcc-interface/utils.c | |
parent | 3e65f25191da23215ba847ed49d10af5cf207490 (diff) | |
download | gcc-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.c | 12 |
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; } |