home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / gcc-2.7.2.1-src.tgz / tar.out / fsf / gcc / halfpic.h < prev    next >
C/C++ Source or Header  |  1996-09-28  |  3KB  |  90 lines

  1. /* OSF/rose half-pic support definitions.
  2.    Copyright (C) 1992 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. #ifndef NO_HALF_PIC
  22.  
  23. /* Add prototype support.  */
  24. #ifndef PROTO
  25. #if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__)
  26. #define PROTO(ARGS) ARGS
  27. #else
  28. #define PROTO(ARGS) ()
  29. #endif
  30. #endif
  31.  
  32. #if !defined(STDIO_PROTO) && !defined(NO_STDIO_H)
  33. #ifndef BUFSIZ
  34. #include <stdio.h>
  35. #endif
  36.  
  37. #define STDIO_PROTO(ARGS) PROTO(ARGS)
  38. #endif
  39.  
  40. #if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__)
  41. union tree_node;        /* forward reference */
  42. struct rtx_def;
  43. #endif
  44.  
  45. /* Declare the variable flag_half_pic as 'int' instead of 'extern
  46.    int', so that BSS variables are created (even though this is not
  47.    strict ANSI).  This is because rtl.c now refers to the
  48.    CONSTANT_ADDRESS_P macro, which in turn refers to flag_half_pic,
  49.    and wants to call half_pic_address_p, whose address we also store
  50.    in in a BSS variable.  This way, the gen* programs won't get
  51.    unknown symbol errors when being linked (flag_half_pic will never
  52.    be true in the gen* programs).  */
  53.  
  54. int flag_half_pic;            /* Global half-pic flag.  */
  55. int (*ptr_half_pic_address_p) ();    /* ptr to half_pic_address_p () */
  56.  
  57. extern int  half_pic_number_ptrs;                /* # distinct pointers found */
  58. extern int  half_pic_number_refs;                /* # half-pic references */
  59. extern void half_pic_encode PROTO((union tree_node *));        /* encode whether half-pic */
  60. extern void half_pic_declare PROTO((char *));            /* declare object local */
  61. extern void half_pic_external PROTO((char *));            /* declare object external */
  62. extern void half_pic_init PROTO((void));            /* half_pic initialization */
  63. extern int  half_pic_address_p PROTO((struct rtx_def *));    /* true if an address is half-pic */
  64. extern struct rtx_def *half_pic_ptr PROTO((struct rtx_def *));    /* return RTX for half-pic pointer */
  65. #ifdef STDIO_PROTO
  66. extern void half_pic_finish STDIO_PROTO((FILE *));        /* half_pic termination */
  67. #endif
  68.  
  69. /* Macros to provide access to the half-pic stuff (so they can easily
  70.    be stubbed out.  */
  71.  
  72. #define HALF_PIC_P()        (flag_half_pic)
  73. #define HALF_PIC_NUMBER_PTRS    (half_pic_number_ptrs)
  74. #define HALF_PIC_NUMBER_REFS    (half_pic_number_refs)
  75.  
  76. #define HALF_PIC_ENCODE(DECL)    half_pic_encode (DECL)
  77. #define HALF_PIC_DECLARE(NAME)    half_pic_declare (NAME)
  78. #define HALF_PIC_EXTERNAL(NAME)    half_pic_external (NAME)
  79. #define HALF_PIC_INIT()        half_pic_init ()
  80. #define HALF_PIC_FINISH(STREAM)    half_pic_finish (STREAM)
  81. #define HALF_PIC_ADDRESS_P(X)    ((*ptr_half_pic_address_p) (X))
  82. #define HALF_PIC_PTR(X)        half_pic_ptr (X)
  83.  
  84. /* Prefix for half-pic names */
  85. #ifndef HALF_PIC_PREFIX
  86. #define    HALF_PIC_PREFIX    "__pic_"
  87. #endif
  88.  
  89. #endif /* NO_HALF_PIC */
  90.