diff options
author | Richard Biener <rguenther@suse.de> | 2019-06-26 11:16:56 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-06-26 11:16:56 +0000 |
commit | baf8d2ecd702d4b2cd18e9549771db994c22ae15 (patch) | |
tree | da34906307ed2aa7c59dc8a0fc1d0c951b396699 /gcc/tree-inline.c | |
parent | 6ab601efaa82b47e0ea1d3c4b14e052b07c79280 (diff) | |
download | gcc-baf8d2ecd702d4b2cd18e9549771db994c22ae15.zip gcc-baf8d2ecd702d4b2cd18e9549771db994c22ae15.tar.gz gcc-baf8d2ecd702d4b2cd18e9549771db994c22ae15.tar.bz2 |
re PR middle-end/90982 (ICE in make_decl_rtl, at varasm.c:1344)
2019-06-26 Richard Biener <rguenther@suse.de>
PR ipa/90982
* tree-inline.c (remap_ssa_name): Copy SSA range info.
* g++.dg/torture/pr90982.C: New testcase.
From-SVN: r272688
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r-- | gcc/tree-inline.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 2de5e22..48619fb 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -259,6 +259,11 @@ remap_ssa_name (tree name, copy_body_data *id) struct ptr_info_def *new_pi = get_ptr_info (new_tree); new_pi->pt = pi->pt; } + /* So can range-info. */ + if (!POINTER_TYPE_P (TREE_TYPE (name)) + && SSA_NAME_RANGE_INFO (name)) + duplicate_ssa_name_range_info (new_tree, SSA_NAME_RANGE_TYPE (name), + SSA_NAME_RANGE_INFO (name)); return new_tree; } @@ -292,6 +297,11 @@ remap_ssa_name (tree name, copy_body_data *id) struct ptr_info_def *new_pi = get_ptr_info (new_tree); new_pi->pt = pi->pt; } + /* So can range-info. */ + if (!POINTER_TYPE_P (TREE_TYPE (name)) + && SSA_NAME_RANGE_INFO (name)) + duplicate_ssa_name_range_info (new_tree, SSA_NAME_RANGE_TYPE (name), + SSA_NAME_RANGE_INFO (name)); if (SSA_NAME_IS_DEFAULT_DEF (name)) { /* By inlining function having uninitialized variable, we might |