mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-19 06:20:27 +08:00
tree-nested.c (build_simple_mem_ref_notrap): New function.
* tree-nested.c (build_simple_mem_ref_notrap): New function. (get_static_chain): Call it instead of build_simple_mem_ref. (get_frame_field): Likewise. (get_nonlocal_debug_decl): Likewise. (convert_nonlocal_reference_op): Likewise. From-SVN: r273763
This commit is contained in:
parent
ce9dbf20f4
commit
58f3f2c397
@ -1,3 +1,11 @@
|
||||
2019-07-24 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* tree-nested.c (build_simple_mem_ref_notrap): New function.
|
||||
(get_static_chain): Call it instead of build_simple_mem_ref.
|
||||
(get_frame_field): Likewise.
|
||||
(get_nonlocal_debug_decl): Likewise.
|
||||
(convert_nonlocal_reference_op): Likewise.
|
||||
|
||||
2019-07-24 Claudiu Zissulescu <claziss@synopsys.com>
|
||||
|
||||
* config/arc/arc-protos.h (arc_output_function_epilogue): Delete
|
||||
|
@ -169,6 +169,16 @@ create_tmp_var_for (struct nesting_info *info, tree type, const char *prefix)
|
||||
return tmp_var;
|
||||
}
|
||||
|
||||
/* Like build_simple_mem_ref, but set TREE_THIS_NOTRAP on the result. */
|
||||
|
||||
static tree
|
||||
build_simple_mem_ref_notrap (tree ptr)
|
||||
{
|
||||
tree t = build_simple_mem_ref (ptr);
|
||||
TREE_THIS_NOTRAP (t) = 1;
|
||||
return t;
|
||||
}
|
||||
|
||||
/* Take the address of EXP to be used within function CONTEXT.
|
||||
Mark it for addressability as necessary. */
|
||||
|
||||
@ -877,7 +887,7 @@ get_static_chain (struct nesting_info *info, tree target_context,
|
||||
{
|
||||
tree field = get_chain_field (i);
|
||||
|
||||
x = build_simple_mem_ref (x);
|
||||
x = build_simple_mem_ref_notrap (x);
|
||||
x = build3 (COMPONENT_REF, TREE_TYPE (field), x, field, NULL_TREE);
|
||||
x = init_tmp_var (info, x, gsi);
|
||||
}
|
||||
@ -914,12 +924,12 @@ get_frame_field (struct nesting_info *info, tree target_context,
|
||||
{
|
||||
tree field = get_chain_field (i);
|
||||
|
||||
x = build_simple_mem_ref (x);
|
||||
x = build_simple_mem_ref_notrap (x);
|
||||
x = build3 (COMPONENT_REF, TREE_TYPE (field), x, field, NULL_TREE);
|
||||
x = init_tmp_var (info, x, gsi);
|
||||
}
|
||||
|
||||
x = build_simple_mem_ref (x);
|
||||
x = build_simple_mem_ref_notrap (x);
|
||||
}
|
||||
|
||||
x = build3 (COMPONENT_REF, TREE_TYPE (field), x, field, NULL_TREE);
|
||||
@ -963,16 +973,16 @@ get_nonlocal_debug_decl (struct nesting_info *info, tree decl)
|
||||
for (i = info->outer; i->context != target_context; i = i->outer)
|
||||
{
|
||||
field = get_chain_field (i);
|
||||
x = build_simple_mem_ref (x);
|
||||
x = build_simple_mem_ref_notrap (x);
|
||||
x = build3 (COMPONENT_REF, TREE_TYPE (field), x, field, NULL_TREE);
|
||||
}
|
||||
x = build_simple_mem_ref (x);
|
||||
x = build_simple_mem_ref_notrap (x);
|
||||
}
|
||||
|
||||
field = lookup_field_for_decl (i, decl, INSERT);
|
||||
x = build3 (COMPONENT_REF, TREE_TYPE (field), x, field, NULL_TREE);
|
||||
if (use_pointer_in_frame (decl))
|
||||
x = build_simple_mem_ref (x);
|
||||
x = build_simple_mem_ref_notrap (x);
|
||||
|
||||
/* ??? We should be remapping types as well, surely. */
|
||||
new_decl = build_decl (DECL_SOURCE_LOCATION (decl),
|
||||
@ -1060,7 +1070,7 @@ convert_nonlocal_reference_op (tree *tp, int *walk_subtrees, void *data)
|
||||
if (use_pointer_in_frame (t))
|
||||
{
|
||||
x = init_tmp_var (info, x, &wi->gsi);
|
||||
x = build_simple_mem_ref (x);
|
||||
x = build_simple_mem_ref_notrap (x);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user