summaryrefslogtreecommitdiff
path: root/gcc/shrink-wrap.h
diff options
context:
space:
mode:
authorzqchen <zqchen@138bc75d-0d04-0410-961f-82ee72b054a4>2014-05-13 07:05:46 +0000
committerzqchen <zqchen@138bc75d-0d04-0410-961f-82ee72b054a4>2014-05-13 07:05:46 +0000
commitc562205f63ebab531efdc82c26a95566011f5dcd (patch)
tree44f546db36bc06184820b9e3e50274a291e03143 /gcc/shrink-wrap.h
parent2371bf7cac40c5af4c7867f1ace23bb2992bd828 (diff)
downloadgcc-c562205f63ebab531efdc82c26a95566011f5dcd.tar.gz
2014-05-13 Zhenqiang Chen <zhenqiang.chen@linaro.org>
* Makefile.in: add shrink-wrap.o. * config/i386/i386.c: include "shrink-wrap.h" * function.c: Likewise. (requires_stack_frame_p, next_block_for_reg, move_insn_for_shrink_wrap, prepare_shrink_wrap, dup_block_and_redirect): Move to shrink-wrap.c (thread_prologue_and_epilogue_insns): Extract three code segments as functions in shrink-wrap.c * function.h: Move #ifdef HAVE_simple_return ... #endif block to shrink-wrap.h * shrink-wrap.c: New file. * shrink-wrap.h: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@210351 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/shrink-wrap.h')
-rw-r--r--gcc/shrink-wrap.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/gcc/shrink-wrap.h b/gcc/shrink-wrap.h
new file mode 100644
index 00000000000..22b1d5c5165
--- /dev/null
+++ b/gcc/shrink-wrap.h
@@ -0,0 +1,52 @@
+/* Structure for saving state for a nested function.
+ Copyright (C) 1989-2014 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+#ifndef GCC_SHRINK_WRAP_H
+#define GCC_SHRINK_WRAP_H
+
+#include "hashtab.h"
+#include "vec.h"
+#include "machmode.h"
+
+#ifdef HAVE_simple_return
+/* In function.c. */
+extern void emit_return_into_block (bool simple_p, basic_block bb);
+extern bool active_insn_between (rtx head, rtx tail);
+extern vec<edge> convert_jumps_to_returns (basic_block last_bb, bool simple_p,
+ vec<edge> unconverted);
+extern basic_block emit_return_for_exit (edge exit_fallthru_edge,
+ bool simple_p);
+
+/* In shrink-wrap.c. */
+extern bool requires_stack_frame_p (rtx, HARD_REG_SET, HARD_REG_SET);
+extern void prepare_shrink_wrap (basic_block entry_block);
+extern void dup_block_and_redirect (basic_block bb, basic_block copy_bb,
+ rtx before, bitmap_head *need_prologue);
+extern void try_shrink_wrapping (edge *entry_edge, edge orig_entry_edge,
+ bitmap_head *bb_flags, rtx prologue_seq);
+extern edge get_unconverted_simple_return (edge, bitmap_head,
+ vec<edge> *, rtx *);
+extern void convert_to_simple_return (edge entry_edge, edge orig_entry_edge,
+ bitmap_head bb_flags, rtx returnjump,
+ vec<edge> unconverted_simple_returns);
+#endif
+
+#endif /* GCC_SHRINK_WRAP_H */
+
+