home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2J (Developer) / os42jdev.iso / NextDeveloper / Source / GNU / gcc / basic-block.h < prev    next >
C/C++ Source or Header  |  1995-06-15  |  2KB  |  70 lines

  1. /* Define control and data flow tables, and regsets.
  2.    Copyright (C) 1987 Free Software Foundation, Inc.
  3.  
  4. This file is part of GNU CC.
  5.  
  6. GNU CC is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2, or (at your option)
  9. any later version.
  10.  
  11. GNU CC is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GNU CC; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 59 Temple Place - Suite 330,
  19. Boston, MA 02111-1307, USA.  */
  20.  
  21.  
  22. /* Number of bits in each actual element of a regset.  */
  23.  
  24. #define REGSET_ELT_BITS HOST_BITS_PER_WIDE_INT
  25.  
  26. /* Type to use for a regset element.  Note that lots of code assumes
  27.    that the initial part of a regset that contains information on the
  28.    hard registers is the same format as a HARD_REG_SET.  */
  29.  
  30. #define REGSET_ELT_TYPE unsigned HOST_WIDE_INT
  31.  
  32. /* Define the type for a pointer to a set with a bit for each
  33.    (hard or pseudo) register.  */
  34.  
  35. typedef REGSET_ELT_TYPE *regset;
  36.  
  37. /* Size of a regset for the current function,
  38.    in (1) bytes and (2) elements.  */
  39.  
  40. extern int regset_bytes;
  41. extern int regset_size;
  42.  
  43. /* Number of basic blocks in the current function.  */
  44.  
  45. extern int n_basic_blocks;
  46.  
  47. /* Index by basic block number, get first insn in the block.  */
  48.  
  49. extern rtx *basic_block_head;
  50.  
  51. /* Index by basic block number, get last insn in the block.  */
  52.  
  53. extern rtx *basic_block_end;
  54.  
  55. /* Index by basic block number, get address of regset
  56.    describing the registers live at the start of that block.  */
  57.  
  58. extern regset *basic_block_live_at_start;
  59.  
  60. /* Indexed by n, gives number of basic block that  (REG n) is used in.
  61.    If the value is REG_BLOCK_GLOBAL (-2),
  62.    it means (REG n) is used in more than one basic block.
  63.    REG_BLOCK_UNKNOWN (-1) means it hasn't been seen yet so we don't know.
  64.    This information remains valid for the rest of the compilation
  65.    of the current function; it is used to control register allocation.  */
  66.  
  67. #define REG_BLOCK_UNKNOWN -1
  68. #define REG_BLOCK_GLOBAL -2
  69. extern int *reg_basic_block;
  70.