From 72aa3dcaf5e9aacc00c9ba56e05a750bcbd46415 Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Sun, 4 Jul 2010 12:20:14 +0000 Subject: [PATCH] re PR middle-end/44785 (Invalid memory access in gfortran.dg/extends_3.f03) 2010-07-04 Richard Guenther PR middle-end/44785 * tree-inline.c (initialize_inlined_parameters): Do not re-use pointer-map slot over remap_type call. From-SVN: r161800 --- gcc/ChangeLog | 6 ++++++ gcc/tree-inline.c | 11 ++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b7b6b00ebcc..5da41db4363 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-07-04 Richard Guenther + + 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 * tree-ssa-sccvn.c (vn_reference_lookup_3): Fix last commit. diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 3b1c459128f..46c604f08fd 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -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); } } } -- 2.30.2