Fix IPA SRA removal of DECL_BY_REFERENCE return
While doing bogus call LHS removal I noticed that cloning with dropping a return value creates a bogus replacement for a DECL_BY_REFERENCE DECL_RESULT, resulting in MEM_REFs of aggregates rather than pointers. The following fixes this latent issue. 2021-05-06 Richard Biener <rguenther@suse.de> * tree-inline.c (tree_function_versioning): Fix DECL_BY_REFERENCE return variable removal.
This commit is contained in:
parent
e82e87a851
commit
1698f496c5
@ -6367,6 +6367,8 @@ tree_function_versioning (tree old_decl, tree new_decl,
|
||||
tree resdecl_repl = copy_result_decl_to_var (DECL_RESULT (old_decl),
|
||||
&id);
|
||||
declare_inline_vars (NULL, resdecl_repl);
|
||||
if (DECL_BY_REFERENCE (DECL_RESULT (old_decl)))
|
||||
resdecl_repl = build_fold_addr_expr (resdecl_repl);
|
||||
insert_decl_map (&id, DECL_RESULT (old_decl), resdecl_repl);
|
||||
|
||||
DECL_RESULT (new_decl)
|
||||
|
Loading…
Reference in New Issue
Block a user