re PR middle-end/44785 (Invalid memory access in gfortran.dg/extends_3.f03)

2010-07-04  Richard Guenther  <rguenther@suse.de>

	PR middle-end/44785
	* tree-inline.c (initialize_inlined_parameters): Do not
	re-use pointer-map slot over remap_type call.

From-SVN: r161800
This commit is contained in:
Richard Guenther 2010-07-04 12:20:14 +00:00 committed by Richard Biener
parent ef2a9157f4
commit 72aa3dcaf5
2 changed files with 12 additions and 5 deletions

View File

@ -1,3 +1,9 @@
2010-07-04 Richard Guenther <rguenther@suse.de>
PR middle-end/44785
* tree-inline.c (initialize_inlined_parameters): Do not
re-use pointer-map slot over remap_type call.
2010-07-04 Richard Guenther <rguenther@suse.de>
* tree-ssa-sccvn.c (vn_reference_lookup_3): Fix last commit.

View File

@ -2690,19 +2690,20 @@ initialize_inlined_parameters (copy_body_data *id, gimple stmt,
if (varp
&& TREE_CODE (*varp) == VAR_DECL)
{
tree def = (gimple_in_ssa_p (cfun)
tree def = (gimple_in_ssa_p (cfun) && is_gimple_reg (p)
? gimple_default_def (id->src_cfun, p) : NULL);
TREE_TYPE (*varp) = remap_type (TREE_TYPE (*varp), id);
tree var = *varp;
TREE_TYPE (var) = remap_type (TREE_TYPE (var), id);
/* Also remap the default definition if it was remapped
to the default definition of the parameter replacement
by the parameter setup. */
if (def && gimple_in_ssa_p (cfun) && is_gimple_reg (p))
if (def)
{
tree *defp = (tree *) pointer_map_contains (id->decl_map, def);
if (defp
&& TREE_CODE (*defp) == SSA_NAME
&& SSA_NAME_VAR (*defp) == *varp)
TREE_TYPE (*defp) = TREE_TYPE (*varp);
&& SSA_NAME_VAR (*defp) == var)
TREE_TYPE (*defp) = TREE_TYPE (var);
}
}
}