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
This commit is contained in:
Richard Biener 2019-06-26 11:16:56 +00:00 committed by Richard Biener
parent 6ab601efaa
commit baf8d2ecd7
4 changed files with 43 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2019-06-26 Richard Biener <rguenther@suse.de>
PR ipa/90982
* tree-inline.c (remap_ssa_name): Copy SSA range info.
2019-06-26 Richard Biener <rguenther@suse.de>
* lto-streamer.h (lto_bitmap_alloc): Remove.

View File

@ -1,3 +1,8 @@
2019-06-26 Richard Biener <rguenther@suse.de>
PR ipa/90982
* g++.dg/torture/pr90982.C: New testcase.
2019-06-26 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/67184

View File

@ -0,0 +1,23 @@
// { dg-do compile }
template <int n> struct S
{
long c[n];
void f (S d)
{
for (int i = 2;; i++)
c[i] &= d.c[i];
}
};
template <int m> struct T:S<m/64>
{
void operator &= (T d)
{ this -> f (d); }
};
void g (T<192> &d)
{
T<192> v;
d &= v;
}

View File

@ -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