diff options
author | zqchen <zqchen@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-05-13 07:05:46 +0000 |
---|---|---|
committer | zqchen <zqchen@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-05-13 07:05:46 +0000 |
commit | c562205f63ebab531efdc82c26a95566011f5dcd (patch) | |
tree | 44f546db36bc06184820b9e3e50274a291e03143 /gcc/shrink-wrap.h | |
parent | 2371bf7cac40c5af4c7867f1ace23bb2992bd828 (diff) | |
download | gcc-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.h | 52 |
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 */ + + |