diff options
author | Richard Biener <rguenther@suse.de> | 2015-01-14 11:06:18 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2015-01-14 11:06:18 +0000 |
commit | 683750ce0915e3703cf50d21c3150ed947b57617 (patch) | |
tree | 8afd1b515e2f55b1e3d1a9e476a1cfa2999bac63 /gcc/tree-inline.c | |
parent | 217c08c57118c5afc573dbaa4bcef5874787616f (diff) | |
download | gcc-683750ce0915e3703cf50d21c3150ed947b57617.zip gcc-683750ce0915e3703cf50d21c3150ed947b57617.tar.gz gcc-683750ce0915e3703cf50d21c3150ed947b57617.tar.bz2 |
re PR middle-end/64415 (ICE: verify_ssa failed / segmentation fault with LTO)
2015-01-14 Richard Biener <rguenther@suse.de>
PR lto/64415
* tree-inline.c (insert_debug_decl_map): Check destination
function MAY_HAVE_DEBUG_STMTS.
(insert_init_debug_bind): Likewise.
(insert_init_stmt): Remove redundant check.
(remap_gimple_stmt): Drop debug stmts if the destination
function has var-tracking assignments disabled.
* gcc.dg/lto/pr64415_0.c: New testcase.
* gcc.dg/lto/pr64415_1.c: Likewise.
From-SVN: r219588
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r-- | gcc/tree-inline.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 4a47fd2..8fe92e4 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -192,7 +192,7 @@ insert_debug_decl_map (copy_body_data *id, tree key, tree value) if (!gimple_in_ssa_p (id->src_cfun)) return; - if (!MAY_HAVE_DEBUG_STMTS) + if (!opt_for_fn (id->dst_fn, flag_var_tracking_assignments)) return; if (!target_for_debug_bind (key)) @@ -1348,6 +1348,10 @@ remap_gimple_stmt (gimple stmt, copy_body_data *id) bool skip_first = false; gimple_seq stmts = NULL; + if (is_gimple_debug (stmt) + && !opt_for_fn (id->dst_fn, flag_var_tracking_assignments)) + return stmts; + /* Begin by recognizing trees that we'll completely rewrite for the inlining context. Our output for these trees is completely different from out input (e.g. RETURN_EXPR is deleted, and morphs @@ -3007,7 +3011,7 @@ insert_init_debug_bind (copy_body_data *id, if (!gimple_in_ssa_p (id->src_cfun)) return NULL; - if (!MAY_HAVE_DEBUG_STMTS) + if (!opt_for_fn (id->dst_fn, flag_var_tracking_assignments)) return NULL; tracked_var = target_for_debug_bind (var); @@ -3063,7 +3067,7 @@ insert_init_stmt (copy_body_data *id, basic_block bb, gimple init_stmt) gsi_insert_after (&si, init_stmt, GSI_NEW_STMT); gimple_regimplify_operands (init_stmt, &si); - if (!is_gimple_debug (init_stmt) && MAY_HAVE_DEBUG_STMTS) + if (!is_gimple_debug (init_stmt)) { tree def = gimple_assign_lhs (init_stmt); insert_init_debug_bind (id, bb, def, def, init_stmt); |