diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2010-04-11 11:49:22 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2010-04-11 11:49:22 +0000 |
commit | 3cd64bab882b6bebb364ba7df6da511552124feb (patch) | |
tree | 4de7dc724b7c55a6130ca6a06a873f4b2cfaaf7e /gcc/ada/gcc-interface/utils.c | |
parent | 87fa3d342b62a632f1e44008c18bc60a9ac90af1 (diff) | |
download | gcc-3cd64bab882b6bebb364ba7df6da511552124feb.zip gcc-3cd64bab882b6bebb364ba7df6da511552124feb.tar.gz gcc-3cd64bab882b6bebb364ba7df6da511552124feb.tar.bz2 |
trans.c (lvalue_required_for_attribute_p): New static function.
* gcc-interface/trans.c (lvalue_required_for_attribute_p): New static
function.
(lvalue_required_p) <N_Attribute_Reference>: Call it.
(gnat_to_gnu) <N_Selected_Component>: Prevent build_component_ref from
folding the result only if lvalue_required_for_attribute_p is true.
* gcc-interface/utils.c (maybe_unconstrained_array): Pass correctly
typed constant to build_component_ref.
(unchecked_convert): Likewise.
* gcc-interface/utils2.c (maybe_wrap_malloc): Likewise.
(build_allocator): Likewise.
From-SVN: r158202
Diffstat (limited to 'gcc/ada/gcc-interface/utils.c')
-rw-r--r-- | gcc/ada/gcc-interface/utils.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c index a59b565..fed723f 100644 --- a/gcc/ada/gcc-interface/utils.c +++ b/gcc/ada/gcc-interface/utils.c @@ -4274,12 +4274,13 @@ maybe_unconstrained_array (tree exp) build_component_ref (new_exp, NULL_TREE, TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (new_exp))), - 0); + false); } else if (TYPE_CONTAINS_TEMPLATE_P (TREE_TYPE (exp))) return build_component_ref (exp, NULL_TREE, - TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (exp))), 0); + TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (exp))), + false); break; default: @@ -4416,7 +4417,7 @@ unchecked_convert (tree type, tree expr, bool notrunc_p) layout_type (rec_type); expr = unchecked_convert (rec_type, expr, notrunc_p); - expr = build_component_ref (expr, NULL_TREE, field, 0); + expr = build_component_ref (expr, NULL_TREE, field, false); } /* Similarly if we are converting from an integral type whose precision |