summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSteven Bosscher <steven@gcc.gnu.org>2004-11-29 20:46:14 +0000
committerSteven Bosscher <steven@gcc.gnu.org>2004-11-29 20:46:14 +0000
commit6be85b25c2fadc5c1912f4e664d075fa08fa3e15 (patch)
tree19ff7e4a9275ba4b32556d6dcb4edd68c18e5bf5 /gcc
parent5e23162d1a2ebf9f9a765f5d8c1c8a1b99a3dfa2 (diff)
downloadgcc-6be85b25c2fadc5c1912f4e664d075fa08fa3e15.tar.gz
cfgcleanup.c (outgoing_edges_match, [...]): Remove CASE_DROPS_THROUGH checks, it is never defined.
* cfgcleanup.c (outgoing_edges_match, try_crossjump_to_edge): Remove CASE_DROPS_THROUGH checks, it is never defined. * cfglyout.c (fixup_reorder_chain): Likewise. * cfgrtl.c (rtl_verify_flow_info): Likewise. * stmt.c (expand_case): Likewise. * cfgbuild.c (make_edges): Likewise. Also remove force_fallthru, it is now always 0. * system.h (CASE_DROPS_THROUGH): Poison. * doc/md.texi (casesi): Remove documentation of CASE_DROPS_THROUGH. * doc/tm.texi (casesi): Remove documentation of CASE_DROPS_THROUGH. * config/v850/v850.h: Remove commented out CASE_DROPS_THROUGH. From-SVN: r91488
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog17
-rw-r--r--gcc/cfgbuild.c11
-rw-r--r--gcc/cfgcleanup.c4
-rw-r--r--gcc/cfglayout.c10
-rw-r--r--gcc/cfgrtl.c8
-rw-r--r--gcc/config/v850/v850.h5
-rw-r--r--gcc/doc/md.texi5
-rw-r--r--gcc/doc/tm.texi6
-rw-r--r--gcc/stmt.c8
-rw-r--r--gcc/system.h3
10 files changed, 22 insertions, 55 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 54334091193..801ecee75e7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,18 @@
+2004-11-29 Steven Bosscher <stevenb@suse.de>
+
+ * cfgcleanup.c (outgoing_edges_match, try_crossjump_to_edge):
+ Remove CASE_DROPS_THROUGH checks, it is never defined.
+ * cfglyout.c (fixup_reorder_chain): Likewise.
+ * cfgrtl.c (rtl_verify_flow_info): Likewise.
+ * stmt.c (expand_case): Likewise.
+ * cfgbuild.c (make_edges): Likewise. Also remove force_fallthru,
+ it is now always 0.
+ * system.h (CASE_DROPS_THROUGH): Poison.
+ * doc/md.texi (casesi): Remove documentation of CASE_DROPS_THROUGH.
+ * doc/tm.texi (casesi): Remove documentation of CASE_DROPS_THROUGH.
+
+ * config/v850/v850.h: Remove commented out CASE_DROPS_THROUGH.
+
2004-11-29 Andrew Pinski <pinskia@physics.uc.edu>
PR middle-end/18725
@@ -802,7 +817,7 @@
Use amd64 instead of 64.
2004-11-24 Mark Mitchell <mark@codesourcery.com>
- Joseph Myers <joseph@codesourcery.com>
+ Joseph Myers <joseph@codesourcery.com>
* crtstuff.c (IN_LIBGCC2): Define it.
(EH_FRAME_SECTION_CONST): Check EH_TABLES_CAN_BE_READ_ONLY
diff --git a/gcc/cfgbuild.c b/gcc/cfgbuild.c
index 134a984fa76..5761cd2f56e 100644
--- a/gcc/cfgbuild.c
+++ b/gcc/cfgbuild.c
@@ -269,7 +269,6 @@ make_edges (basic_block min, basic_block max, int update_p)
{
rtx insn, x;
enum rtx_code code;
- int force_fallthru = 0;
edge e;
if (LABEL_P (BB_HEAD (bb))
@@ -320,12 +319,6 @@ make_edges (basic_block min, basic_block max, int update_p)
&& GET_CODE (XEXP (SET_SRC (tmp), 2)) == LABEL_REF)
make_label_edge (edge_cache, bb,
XEXP (XEXP (SET_SRC (tmp), 2), 0), 0);
-
-#ifdef CASE_DROPS_THROUGH
- /* Silly VAXen. The ADDR_VEC is going to be in the way of
- us naturally detecting fallthru into the next block. */
- force_fallthru = 1;
-#endif
}
/* If this is a computed jump, then mark it as reaching
@@ -398,11 +391,11 @@ make_edges (basic_block min, basic_block max, int update_p)
&& NOTE_LINE_NUMBER (insn) != NOTE_INSN_BASIC_BLOCK)
insn = NEXT_INSN (insn);
- if (!insn || (bb->next_bb == EXIT_BLOCK_PTR && force_fallthru))
+ if (!insn)
cached_make_edge (edge_cache, bb, EXIT_BLOCK_PTR, EDGE_FALLTHRU);
else if (bb->next_bb != EXIT_BLOCK_PTR)
{
- if (force_fallthru || insn == BB_HEAD (bb->next_bb))
+ if (insn == BB_HEAD (bb->next_bb))
cached_make_edge (edge_cache, bb, bb->next_bb, EDGE_FALLTHRU);
}
}
diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c
index 373be911eb6..1cb3f2ed86e 100644
--- a/gcc/cfgcleanup.c
+++ b/gcc/cfgcleanup.c
@@ -1353,7 +1353,6 @@ outgoing_edges_match (int mode, basic_block bb1, basic_block bb2)
/* Generic case - we are seeing a computed jump, table jump or trapping
instruction. */
-#ifndef CASE_DROPS_THROUGH
/* Check whether there are tablejumps in the end of BB1 and BB2.
Return true if they are identical. */
{
@@ -1427,7 +1426,6 @@ outgoing_edges_match (int mode, basic_block bb1, basic_block bb2)
return false;
}
}
-#endif
/* First ensure that the instructions match. There may be many outgoing
edges so this test is generally cheaper. */
@@ -1565,7 +1563,6 @@ try_crossjump_to_edge (int mode, edge e1, edge e2)
&& (newpos1 != BB_HEAD (src1)))
return false;
-#ifndef CASE_DROPS_THROUGH
/* Here we know that the insns in the end of SRC1 which are common with SRC2
will be deleted.
If we have tablejumps in the end of SRC1 and SRC2
@@ -1596,7 +1593,6 @@ try_crossjump_to_edge (int mode, edge e1, edge e2)
}
}
}
-#endif
/* Avoid splitting if possible. */
if (newpos2 == BB_HEAD (src2))
diff --git a/gcc/cfglayout.c b/gcc/cfglayout.c
index f680eee8794..241e97628e3 100644
--- a/gcc/cfglayout.c
+++ b/gcc/cfglayout.c
@@ -739,21 +739,11 @@ fixup_reorder_chain (void)
}
else
{
-#ifndef CASE_DROPS_THROUGH
/* Otherwise we have some return, switch or computed
jump. In the 99% case, there should not have been a
fallthru edge. */
gcc_assert (returnjump_p (bb_end_insn) || !e_fall);
continue;
-#else
- if (returnjump_p (bb_end_insn) || !e_fall)
- continue;
- /* Except for VAX. Since we didn't have predication for the
- tablejump, the fallthru block should not have moved. */
- if (bb->rbi->next == e_fall->dest)
- continue;
- bb_end_insn = skip_insns_after_block (bb);
-#endif
}
}
else
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index a439b8d857d..ec92966fb87 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -2191,13 +2191,7 @@ rtl_verify_flow_info (void)
else
for (insn = NEXT_INSN (BB_END (e->src)); insn != BB_HEAD (e->dest);
insn = NEXT_INSN (insn))
- if (BARRIER_P (insn)
-#ifndef CASE_DROPS_THROUGH
- || INSN_P (insn)
-#else
- || (INSN_P (insn) && ! JUMP_TABLE_DATA_P (insn))
-#endif
- )
+ if (BARRIER_P (insn) || INSN_P (insn))
{
error ("verify_flow_info: Incorrect fallthru %i->%i",
e->src->index, e->dest->index);
diff --git a/gcc/config/v850/v850.h b/gcc/config/v850/v850.h
index fe3a659c963..2b67c3f0f3f 100644
--- a/gcc/config/v850/v850.h
+++ b/gcc/config/v850/v850.h
@@ -1240,11 +1240,6 @@ zbss_section () \
for the index in the tablejump instruction. */
#define CASE_VECTOR_MODE (TARGET_BIG_SWITCH ? SImode : HImode)
-/* Define this if the case instruction drops through after the table
- when the index is out of range. Don't define it if the case insn
- jumps to the default label instead. */
-/* #define CASE_DROPS_THROUGH */
-
/* Define as C expression which evaluates to nonzero if the tablejump
instruction expects the table to contain offsets from the address of the
table.
diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi
index 9d7771c2770..9e11e44fd50 100644
--- a/gcc/doc/md.texi
+++ b/gcc/doc/md.texi
@@ -3500,11 +3500,6 @@ A label that precedes the table itself.
@item
A label to jump to if the index has a value outside the bounds.
-(If the machine-description macro @code{CASE_DROPS_THROUGH} is defined,
-then an out-of-bounds index drops through to the code following
-the jump table instead of jumping to this label. In that case,
-this label is not actually used by the @samp{casesi} instruction,
-but it is always provided as an operand.)
@end enumerate
The table is a @code{addr_vec} or @code{addr_diff_vec} inside of a
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index 5a044a5a13d..788bc420fc6 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -8717,12 +8717,6 @@ contain relative addresses only when @option{-fPIC} or @option{-fPIC}
is in effect.
@end defmac
-@defmac CASE_DROPS_THROUGH
-Define this if control falls through a @code{case} insn when the index
-value is out of range. This means the specified default-label is
-actually ignored by the @code{case} insn proper.
-@end defmac
-
@defmac CASE_VALUES_THRESHOLD
Define this to be the smallest number of different values for which it
is best to use a jump-table instead of a tree of conditional branches.
diff --git a/gcc/stmt.c b/gcc/stmt.c
index e22ae5aca16..5e3f3649fb3 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -2553,14 +2553,8 @@ expand_case (tree exp)
emit_jump_insn (gen_rtx_ADDR_VEC (CASE_VECTOR_MODE,
gen_rtvec_v (ncases, labelvec)));
- /* If the case insn drops through the table,
- after the table we must jump to the default-label.
- Otherwise record no drop-through after the table. */
-#ifdef CASE_DROPS_THROUGH
- emit_jump (default_label);
-#else
+ /* Record no drop-through after the table. */
emit_barrier ();
-#endif
}
before_case = NEXT_INSN (before_case);
diff --git a/gcc/system.h b/gcc/system.h
index c19f129f6a0..fb6b4850929 100644
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -658,7 +658,8 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
GDB_INV_REF_REGPARM_STABS_LETTER DBX_MEMPARM_STABS_LETTER \
PUT_SDB_SRC_FILE STABS_GCC_MARKER DBX_OUTPUT_FUNCTION_END \
DBX_OUTPUT_GCC_MARKER DBX_FINISH_SYMBOL SDB_GENERATE_FAKE \
- NON_SAVING_SETJMP TARGET_LATE_RTL_PROLOGUE_EPILOGUE
+ NON_SAVING_SETJMP TARGET_LATE_RTL_PROLOGUE_EPILOGUE \
+ CASE_DROPS_THROUGH
/* Hooks that are no longer used. */
#pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \