cfglayout.h revision 132718
153541Sshin/* Basic block reordering routines for the GNU compiler.
253541Sshin   Copyright (C) 2000, 2003 Free Software Foundation, Inc.
353541Sshin
453541Sshin   This file is part of GCC.
553541Sshin
653541Sshin   GCC is free software; you can redistribute it and/or modify it
753541Sshin   under the terms of the GNU General Public License as published by
853541Sshin   the Free Software Foundation; either version 2, or (at your option)
953541Sshin   any later version.
1053541Sshin
1153541Sshin   GCC is distributed in the hope that it will be useful, but WITHOUT
1253541Sshin   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
1353541Sshin   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
1453541Sshin   License for more details.
1553541Sshin
1653541Sshin   You should have received a copy of the GNU General Public License
1753541Sshin   along with GCC; see the file COPYING.  If not, write to the Free
1853541Sshin   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
1953541Sshin   02111-1307, USA.  */
2053541Sshin
2153541Sshin/* Structure to hold information about the blocks during reordering.  */
2253541Sshintypedef struct reorder_block_def
2353541Sshin{
2453541Sshin  rtx header;
2553541Sshin  rtx footer;
2653541Sshin  basic_block next;
2753541Sshin  basic_block original;
2853541Sshin  /* Used by loop copying.  */
2953541Sshin  basic_block copy;
3053541Sshin  int duplicated;
3153541Sshin
3253541Sshin  /* These fields are used by bb-reorder pass.  */
3353541Sshin  int visited;
3453541Sshin} *reorder_block_def;
3553541Sshin
3653541Sshinextern rtx cfg_layout_function_footer;
3753541Sshin
3853541Sshinextern void cfg_layout_initialize (unsigned int);
3953541Sshinextern void cfg_layout_finalize (void);
4053541Sshinextern bool cfg_layout_can_duplicate_bb_p (basic_block);
4153541Sshinextern basic_block cfg_layout_duplicate_bb (basic_block, edge);
4253541Sshinextern void insn_locators_initialize (void);
4353541Sshinextern void reemit_insn_block_notes (void);
4453541Sshinextern bool can_copy_bbs_p (basic_block *, unsigned);
4553541Sshinextern void copy_bbs (basic_block *, unsigned, basic_block *,
4653541Sshin		      edge *, unsigned, edge *, struct loop *);
4753541Sshinextern void cfg_layout_initialize_rbi (basic_block);
4853541Sshin