diff options
author | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-04-11 11:49:22 +0000 |
---|---|---|
committer | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-04-11 11:49:22 +0000 |
commit | c92ff1b0dc0734b64f6a653441c1b306d2782429 (patch) | |
tree | 4de7dc724b7c55a6130ca6a06a873f4b2cfaaf7e /gcc/ada/gcc-interface/utils.c | |
parent | 3a701cae672f8f63a4472c34bae9f32975b9663b (diff) | |
download | ppe42-gcc-c92ff1b0dc0734b64f6a653441c1b306d2782429.tar.gz ppe42-gcc-c92ff1b0dc0734b64f6a653441c1b306d2782429.zip |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158202 138bc75d-0d04-0410-961f-82ee72b054a4
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 a59b565b77b..fed723fa929 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 |