4.3.2-6
This commit is contained in:
parent
a3328a1d29
commit
5565b20a6b
105
gcc43-pr29609-2.patch
Normal file
105
gcc43-pr29609-2.patch
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
2008-10-09 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* tree-ssa-live.c (remove_unused_locals): Mark all edge's goto_block
|
||||||
|
as used.
|
||||||
|
* gimple-low.c (lower_return_expr, lower_builtin_setjmp): Set
|
||||||
|
TREE_BLOCK on the newly created stmts.
|
||||||
|
* tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Only set
|
||||||
|
goto_block on edges if goto_locus is known.
|
||||||
|
|
||||||
|
--- gcc/tree-ssa-live.c.jj 2008-10-07 21:25:57.000000000 +0200
|
||||||
|
+++ gcc/tree-ssa-live.c 2008-10-09 00:25:20.000000000 +0200
|
||||||
|
@@ -591,6 +591,8 @@ remove_unused_locals (void)
|
||||||
|
{
|
||||||
|
block_stmt_iterator bsi;
|
||||||
|
tree phi, def;
|
||||||
|
+ edge_iterator ei;
|
||||||
|
+ edge e;
|
||||||
|
|
||||||
|
/* Walk the statements. */
|
||||||
|
for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi))
|
||||||
|
@@ -614,6 +616,10 @@ remove_unused_locals (void)
|
||||||
|
mark_all_vars_used (&arg, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ FOR_EACH_EDGE (e, ei, bb->succs)
|
||||||
|
+ if (e->goto_locus)
|
||||||
|
+ TREE_USED (e->goto_block) = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Remove unmarked local vars from unexpanded_var_list. */
|
||||||
|
--- gcc/gimple-low.c.jj 2008-10-07 21:25:58.000000000 +0200
|
||||||
|
+++ gcc/gimple-low.c 2008-10-09 00:42:31.000000000 +0200
|
||||||
|
@@ -590,6 +590,7 @@ lower_return_expr (tree_stmt_iterator *t
|
||||||
|
found:
|
||||||
|
t = build1 (GOTO_EXPR, void_type_node, label);
|
||||||
|
SET_EXPR_LOCUS (t, EXPR_LOCUS (stmt));
|
||||||
|
+ TREE_BLOCK (t) = TREE_BLOCK (stmt);
|
||||||
|
tsi_link_before (tsi, t, TSI_SAME_STMT);
|
||||||
|
tsi_delink (tsi);
|
||||||
|
}
|
||||||
|
@@ -672,6 +673,7 @@ lower_builtin_setjmp (tree_stmt_iterator
|
||||||
|
t = implicit_built_in_decls[BUILT_IN_SETJMP_SETUP];
|
||||||
|
t = build_call_expr (t, 2, CALL_EXPR_ARG (stmt, 0), arg);
|
||||||
|
SET_EXPR_LOCUS (t, EXPR_LOCUS (stmt));
|
||||||
|
+ TREE_BLOCK (t) = TREE_BLOCK (stmt);
|
||||||
|
tsi_link_before (tsi, t, TSI_SAME_STMT);
|
||||||
|
|
||||||
|
/* Build 'DEST = 0' and insert. */
|
||||||
|
@@ -680,6 +682,7 @@ lower_builtin_setjmp (tree_stmt_iterator
|
||||||
|
t = build_gimple_modify_stmt (dest, fold_convert (TREE_TYPE (dest),
|
||||||
|
integer_zero_node));
|
||||||
|
SET_EXPR_LOCUS (t, EXPR_LOCUS (stmt));
|
||||||
|
+ TREE_BLOCK (t) = TREE_BLOCK (stmt);
|
||||||
|
tsi_link_before (tsi, t, TSI_SAME_STMT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -696,6 +699,7 @@ lower_builtin_setjmp (tree_stmt_iterator
|
||||||
|
t = implicit_built_in_decls[BUILT_IN_SETJMP_RECEIVER];
|
||||||
|
t = build_call_expr (t, 1, arg);
|
||||||
|
SET_EXPR_LOCUS (t, EXPR_LOCUS (stmt));
|
||||||
|
+ TREE_BLOCK (t) = TREE_BLOCK (stmt);
|
||||||
|
tsi_link_before (tsi, t, TSI_SAME_STMT);
|
||||||
|
|
||||||
|
/* Build 'DEST = 1' and insert. */
|
||||||
|
@@ -704,6 +708,7 @@ lower_builtin_setjmp (tree_stmt_iterator
|
||||||
|
t = build_gimple_modify_stmt (dest, fold_convert (TREE_TYPE (dest),
|
||||||
|
integer_one_node));
|
||||||
|
SET_EXPR_LOCUS (t, EXPR_LOCUS (stmt));
|
||||||
|
+ TREE_BLOCK (t) = TREE_BLOCK (stmt);
|
||||||
|
tsi_link_before (tsi, t, TSI_SAME_STMT);
|
||||||
|
}
|
||||||
|
|
||||||
|
--- gcc/tree-cfg.c.jj 2008-10-07 21:39:14.000000000 +0200
|
||||||
|
+++ gcc/tree-cfg.c 2008-10-09 00:00:48.000000000 +0200
|
||||||
|
@@ -634,7 +634,8 @@ make_cond_expr_edges (basic_block bb)
|
||||||
|
#else
|
||||||
|
e->goto_locus = EXPR_LOCUS (COND_EXPR_THEN (entry));
|
||||||
|
#endif
|
||||||
|
- e->goto_block = TREE_BLOCK (COND_EXPR_THEN (entry));
|
||||||
|
+ if (e->goto_locus)
|
||||||
|
+ e->goto_block = TREE_BLOCK (COND_EXPR_THEN (entry));
|
||||||
|
e = make_edge (bb, else_bb, EDGE_FALSE_VALUE);
|
||||||
|
if (e)
|
||||||
|
{
|
||||||
|
@@ -643,7 +644,8 @@ make_cond_expr_edges (basic_block bb)
|
||||||
|
#else
|
||||||
|
e->goto_locus = EXPR_LOCUS (COND_EXPR_ELSE (entry));
|
||||||
|
#endif
|
||||||
|
- e->goto_block = TREE_BLOCK (COND_EXPR_ELSE (entry));
|
||||||
|
+ if (e->goto_locus)
|
||||||
|
+ e->goto_block = TREE_BLOCK (COND_EXPR_ELSE (entry));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* We do not need the gotos anymore. */
|
||||||
|
@@ -843,7 +845,8 @@ make_goto_expr_edges (basic_block bb)
|
||||||
|
#else
|
||||||
|
e->goto_locus = EXPR_LOCUS (goto_t);
|
||||||
|
#endif
|
||||||
|
- e->goto_block = TREE_BLOCK (goto_t);
|
||||||
|
+ if (e->goto_locus)
|
||||||
|
+ e->goto_block = TREE_BLOCK (goto_t);
|
||||||
|
bsi_remove (&last, true);
|
||||||
|
return;
|
||||||
|
}
|
@ -1,3 +1,16 @@
|
|||||||
|
2008-10-09 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* rtl.h (locator_eq): New decl.
|
||||||
|
* cfglayout.c (locator_scope): New function.
|
||||||
|
(insn_scope): Use it.
|
||||||
|
(locator_eq): New function.
|
||||||
|
(fixup_reorder_chain): Search for last insn in src bb
|
||||||
|
that has locator set or first insn in dest bb. Use
|
||||||
|
locator_eq instead of == to compare locators.
|
||||||
|
* cfgrtl.c (cfg_layout_merge_blocks): Likewise.
|
||||||
|
* cfgcleanup.c (try_forward_edges): Use locator_eq instead of
|
||||||
|
== to compare locators.
|
||||||
|
|
||||||
--- gcc/cfglayout.c.jj 2008-10-07 21:35:33.000000000 +0200
|
--- gcc/cfglayout.c.jj 2008-10-07 21:35:33.000000000 +0200
|
||||||
+++ gcc/cfglayout.c 2008-10-09 11:18:51.000000000 +0200
|
+++ gcc/cfglayout.c 2008-10-09 11:18:51.000000000 +0200
|
||||||
@@ -448,13 +448,12 @@ change_scope (rtx orig_insn, tree s1, tr
|
@@ -448,13 +448,12 @@ change_scope (rtx orig_insn, tree s1, tr
|
||||||
|
@ -471,7 +471,7 @@ which are required to run programs compiled with the GNAT.
|
|||||||
%patch24 -p0 -b .pr29609~
|
%patch24 -p0 -b .pr29609~
|
||||||
%patch25 -p0 -b .aes~
|
%patch25 -p0 -b .aes~
|
||||||
%patch26 -p0 -b .pr29609-2~
|
%patch26 -p0 -b .pr29609-2~
|
||||||
%patch26 -p0 -b .pr29609-3~
|
%patch27 -p0 -b .pr29609-3~
|
||||||
|
|
||||||
tar xzf %{SOURCE4}
|
tar xzf %{SOURCE4}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user