From: Eric Botcazou Date: Wed, 24 Jul 2019 15:29:34 +0000 (+0000) Subject: tree-nested.c (build_simple_mem_ref_notrap): New function. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=58f3f2c397133235dd7cce69f4a93561005fe391;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5a94c2fdd6a..694340e3bad 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2019-07-24 Eric Botcazou + + * 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 * config/arc/arc-protos.h (arc_output_function_epilogue): Delete diff --git a/gcc/tree-nested.c b/gcc/tree-nested.c index 1527456e0c5..5d189572e19 100644 --- a/gcc/tree-nested.c +++ b/gcc/tree-nested.c @@ -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); } }