aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrevor Saunders <tbsaunde+gcc@tbsaunde.org>2015-04-28 04:45:12 +0000
committerTrevor Saunders <tbsaunde@gcc.gnu.org>2015-04-28 04:45:12 +0000
commit5251b8b3505902ee4c5f49d8c58c42f2950ba6c1 (patch)
tree097a4454cae0a6804ad11961c8971610f939615b
parent08b7ff1e1dda0bb35741ad8156bf31ba5151ddea (diff)
downloadgcc-5251b8b3505902ee4c5f49d8c58c42f2950ba6c1.zip
gcc-5251b8b3505902ee4c5f49d8c58c42f2950ba6c1.tar.gz
gcc-5251b8b3505902ee4c5f49d8c58c42f2950ba6c1.tar.bz2
always define HAVE_epilogue
gcc/ChangeLog: 2015-04-27 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * defaults.h (gen_epilogue): New function. (HAVE_epilogue): Add default definition to false. * alias.c (init_alias_analysis): don't check if HAVE_epilogue is defined. * cfgrtl.c (cfg_layout_finalize): Likewise. * df-scan.c: Likewise. * function.c (thread_prologue_and_epilogue_insns): Likewise. (reposition_prologue_and_epilogue_notes): Likewise. * reorg.c (find_end_label): Likewise. * toplev.c: Likewise. From-SVN: r222506
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/alias.c10
-rw-r--r--gcc/cfgrtl.c6
-rw-r--r--gcc/defaults.h10
-rw-r--r--gcc/df-scan.c3
-rw-r--r--gcc/function.c12
-rw-r--r--gcc/reorg.c2
-rw-r--r--gcc/toplev.c3
8 files changed, 35 insertions, 23 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 578b95a..6eeba5f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,17 @@
2015-04-27 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
+ * defaults.h (gen_epilogue): New function.
+ * alias.c (init_alias_analysis): don't check if HAVE_epilogue is
+ defined.
+ * cfgrtl.c (cfg_layout_finalize): Likewise.
+ * df-scan.c: Likewise.
+ * function.c (thread_prologue_and_epilogue_insns): Likewise.
+ (reposition_prologue_and_epilogue_notes): Likewise.
+ * reorg.c (find_end_label): Likewise.
+ * toplev.c: Likewise.
+
+2015-04-27 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
+
* bb-reorder.c (HAVE_return): Don't check if its undefined.
* defaults.h (gen_simple_return): New function.
(gen_simple_return): Likewise.
diff --git a/gcc/alias.c b/gcc/alias.c
index 8f48660..7d9a3d9 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -2925,15 +2925,19 @@ init_alias_analysis (void)
{
rtx note, set;
-#if defined (HAVE_prologue) || defined (HAVE_epilogue)
+#if defined (HAVE_prologue)
+ static const bool prologue = true;
+#else
+ static const bool prologue = false;
+#endif
+
/* The prologue/epilogue insns are not threaded onto the
insn chain until after reload has completed. Thus,
there is no sense wasting time checking if INSN is in
the prologue/epilogue until after reload has completed. */
- if (reload_completed
+ if ((prologue || HAVE_epilogue) && reload_completed
&& prologue_epilogue_contains (insn))
continue;
-#endif
/* If this insn has a noalias note, process it, Otherwise,
scan for sets. A simple set will have no side effects
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index 7027502..8a75044 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -4339,11 +4339,7 @@ cfg_layout_finalize (void)
#endif
force_one_exit_fallthru ();
rtl_register_cfg_hooks ();
- if (reload_completed
-#ifdef HAVE_epilogue
- && !HAVE_epilogue
-#endif
- )
+ if (reload_completed && !HAVE_epilogue)
fixup_fallthru_exit_predecessor ();
fixup_reorder_chain ();
diff --git a/gcc/defaults.h b/gcc/defaults.h
index d3da328..4c87191 100644
--- a/gcc/defaults.h
+++ b/gcc/defaults.h
@@ -1418,6 +1418,16 @@ gen_return ()
}
#endif
+#ifndef HAVE_epilogue
+#define HAVE_epilogue 0
+static inline rtx
+gen_epilogue ()
+{
+ gcc_unreachable ();
+ return NULL;
+}
+#endif
+
#endif /* GCC_INSN_FLAGS_H */
#endif /* ! GCC_DEFAULTS_H */
diff --git a/gcc/df-scan.c b/gcc/df-scan.c
index 9f0e47f..a990a7b 100644
--- a/gcc/df-scan.c
+++ b/gcc/df-scan.c
@@ -62,9 +62,6 @@ along with GCC; see the file COPYING3. If not see
typedef struct df_mw_hardreg *df_mw_hardreg_ptr;
-#ifndef HAVE_epilogue
-#define HAVE_epilogue 0
-#endif
#ifndef HAVE_prologue
#define HAVE_prologue 0
#endif
diff --git a/gcc/function.c b/gcc/function.c
index 561a1c5..14afc53 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -6066,7 +6066,6 @@ thread_prologue_and_epilogue_insns (void)
if (exit_fallthru_edge == NULL)
goto epilogue_done;
-#ifdef HAVE_epilogue
if (HAVE_epilogue)
{
start_sequence ();
@@ -6090,7 +6089,6 @@ thread_prologue_and_epilogue_insns (void)
set_return_jump_label (returnjump);
}
else
-#endif
{
basic_block cur_bb;
@@ -6183,7 +6181,6 @@ epilogue_done:
}
#endif
-#ifdef HAVE_epilogue
if (epilogue_end)
{
rtx_insn *insn, *next;
@@ -6201,7 +6198,6 @@ epilogue_done:
reorder_insns (insn, insn, PREV_INSN (epilogue_end));
}
}
-#endif
bitmap_clear (&bb_flags);
@@ -6217,8 +6213,11 @@ epilogue_done:
void
reposition_prologue_and_epilogue_notes (void)
{
-#if defined (HAVE_prologue) || defined (HAVE_epilogue) \
- || defined (HAVE_sibcall_epilogue)
+#if ! defined (HAVE_prologue) && ! defined (HAVE_sibcall_epilogue)
+ if (!HAVE_epilogue)
+ return;
+#endif
+
/* Since the hash table is created on demand, the fact that it is
non-null is a signal that it is non-empty. */
if (prologue_insn_hash != NULL)
@@ -6315,7 +6314,6 @@ reposition_prologue_and_epilogue_notes (void)
}
}
}
-#endif /* HAVE_prologue or HAVE_epilogue */
}
/* Returns the name of function declared by FNDECL. */
diff --git a/gcc/reorg.c b/gcc/reorg.c
index a44d4a3..e9af7b7 100644
--- a/gcc/reorg.c
+++ b/gcc/reorg.c
@@ -484,14 +484,12 @@ find_end_label (rtx kind)
}
else
{
-#ifdef HAVE_epilogue
if (HAVE_epilogue && ! HAVE_return)
/* The RETURN insn has its delay slot filled so we cannot
emit the label just before it. Since we already have
an epilogue and cannot emit a new RETURN, we cannot
emit the label at all. */
return NULL;
-#endif /* HAVE_epilogue */
/* Otherwise, make a new label and emit a RETURN and BARRIER,
if needed. */
diff --git a/gcc/toplev.c b/gcc/toplev.c
index b06eed3..38de36b 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -128,9 +128,6 @@ along with GCC; see the file COPYING3. If not see
declarations for e.g. AIX 4.x. */
#endif
-#ifndef HAVE_epilogue
-#define HAVE_epilogue 0
-#endif
#ifndef HAVE_prologue
#define HAVE_prologue 0
#endif