aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-low.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2014-04-04 11:52:35 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2014-04-04 11:52:35 +0000
commit45b6259486e4a1201c630186338e0845ffeab2f5 (patch)
tree5d195f2c96f8f418bd1d795709474cd7c6d0007d /gcc/gimple-low.c
parentbb609c35be50a8b8a89005d1f5f4896a29c4ffae (diff)
downloadgcc-45b6259486e4a1201c630186338e0845ffeab2f5.zip
gcc-45b6259486e4a1201c630186338e0845ffeab2f5.tar.gz
gcc-45b6259486e4a1201c630186338e0845ffeab2f5.tar.bz2
re PR middle-end/60746 (ICE segfault in gimple-expr.c:314)
2014-04-04 Richard Biener <rguenther@suse.de> PR ipa/60746 * tree-ssanames.c (make_ssa_name_fn): Fix assert. * gimple.c (gimple_set_bb): Avoid ICEing for NULL cfun for non-GIMPLE_LABELs. * gimplify.h (gimple_add_tmp_var_fn): Declare. * gimplify.c (gimple_add_tmp_var_fn): New function. * gimple-expr.h (create_tmp_reg_fn): Declare. * gimple-expr.c (create_tmp_reg_fn): New function. * gimple-low.c (record_vars_into): Don't change cfun. * cgraph.c (cgraph_redirect_edge_call_stmt_to_callee): Fix code generation without cfun. * g++.dg/torture/pr60746.C: New testcase. From-SVN: r209079
Diffstat (limited to 'gcc/gimple-low.c')
-rw-r--r--gcc/gimple-low.c10
1 files changed, 1 insertions, 9 deletions
diff --git a/gcc/gimple-low.c b/gcc/gimple-low.c
index 80fd786..da3fb9f 100644
--- a/gcc/gimple-low.c
+++ b/gcc/gimple-low.c
@@ -841,11 +841,6 @@ lower_builtin_posix_memalign (gimple_stmt_iterator *gsi)
void
record_vars_into (tree vars, tree fn)
{
- bool change_cfun = fn != current_function_decl;
-
- if (change_cfun)
- push_cfun (DECL_STRUCT_FUNCTION (fn));
-
for (; vars; vars = DECL_CHAIN (vars))
{
tree var = vars;
@@ -860,11 +855,8 @@ record_vars_into (tree vars, tree fn)
continue;
/* Record the variable. */
- add_local_decl (cfun, var);
+ add_local_decl (DECL_STRUCT_FUNCTION (fn), var);
}
-
- if (change_cfun)
- pop_cfun ();
}