aboutsummaryrefslogtreecommitdiff
path: root/gcc/flow.c
diff options
context:
space:
mode:
authorAlex Samuel <samuel@gcc.gnu.org>2000-03-10 08:16:55 +0000
committerAlex Samuel <samuel@gcc.gnu.org>2000-03-10 08:16:55 +0000
commitd9d4fb433e86047a5bab699548322cfa745795d6 (patch)
tree03e5dea61e82a209e52f9313b2506ef3fc4b78a4 /gcc/flow.c
parentea7f51a4af057b3a231b25fc037417373a5421cd (diff)
downloadgcc-d9d4fb433e86047a5bab699548322cfa745795d6.zip
gcc-d9d4fb433e86047a5bab699548322cfa745795d6.tar.gz
gcc-d9d4fb433e86047a5bab699548322cfa745795d6.tar.bz2
Changes in include:
* partition.h: New file. Changes in libiberty: * Makefile.in (CFILES): Add partition.c. (REQUIRED_OFILES): Add partition.o. (partition.o): New rule. * partition.c: New file. Changes in gcc: * Makefile.in (ssa.o): New rule. (OBJS): Add ssa.o. (STAGESTUFF): Add *.ssa and *.ussa. (mostlyclean): Delete *.ssa, *.ussa, */*.ssa, */*.ussa. * rtl.def (PHI): New RTL expression. * rtl.h (clear_log_links): New declaration. (convert_to_ssa): Likewise. (convert_from_ssa): Likewise. * flow.c (split_edge): If the entry node falls through to the split edge's source block, split the entry edge. (clear_log_links): New function. * toplev.c (ssa_dump): New variable. (flag_ssa): Likewise. (f_options): Add "ssa". (compile_file): Create SSA dump files. (rest_of_compilation): Go to and from SSA if enabled. (decide_d_option): Handle -de for SSA dump files. * ssa.c: New file. From-SVN: r32465
Diffstat (limited to 'gcc/flow.c')
-rw-r--r--gcc/flow.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/gcc/flow.c b/gcc/flow.c
index 5704835..799114e 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -362,6 +362,7 @@ static void fixup_reorder_chain PARAMS ((void));
it being unused. */
void verify_flow_info PARAMS ((void));
int flow_loop_outside_edge_p PARAMS ((const struct loop *, edge));
+void clear_log_links PARAMS ((rtx));
/* Find basic blocks of the current function.
F is the first insn of the function and NREGS the number of register
@@ -1369,7 +1370,8 @@ split_edge (edge_in)
basic_block jump_block;
rtx pos;
- if ((e->flags & EDGE_CRITICAL) == 0)
+ if ((e->flags & EDGE_CRITICAL) == 0
+ && e->src != ENTRY_BLOCK_PTR)
{
/* Non critical -- we can simply add a jump to the end
of the existing predecessor. */
@@ -7047,7 +7049,6 @@ flow_loop_outside_edge_p (loop, e)
}
-
typedef struct reorder_block_def {
int flags;
int index;
@@ -7769,3 +7770,14 @@ reorder_basic_blocks ()
flow_loops_free (&loops_info);
}
+
+/* Clear LOG_LINKS fields of insns in a chain. */
+void
+clear_log_links (insns)
+ rtx insns;
+{
+ rtx i;
+ for (i = insns; i; i = NEXT_INSN (i))
+ if (GET_RTX_CLASS (GET_CODE (i)) == 'i')
+ LOG_LINKS (i) = 0;
+}