15455Sdg/* GCC core type declarations.
21541Srgrimes   Copyright (C) 2002, 2004 Free Software Foundation, Inc.
31541Srgrimes
41541SrgrimesThis file is part of GCC.
51541Srgrimes
61541SrgrimesGCC is free software; you can redistribute it and/or modify it under
71541Srgrimesthe terms of the GNU General Public License as published by the Free
81541SrgrimesSoftware Foundation; either version 2, or (at your option) any later
91541Srgrimesversion.
101541Srgrimes
111541SrgrimesGCC is distributed in the hope that it will be useful, but WITHOUT ANY
121541SrgrimesWARRANTY; without even the implied warranty of MERCHANTABILITY or
131541SrgrimesFITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
141541Srgrimesfor more details.
151541Srgrimes
161541SrgrimesYou should have received a copy of the GNU General Public License
171541Srgrimesalong with GCC; see the file COPYING.  If not, write to the Free
181541SrgrimesSoftware Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
191541Srgrimes02110-1301, USA.  */
201541Srgrimes
211541Srgrimes/* Provide forward declarations of core types which are referred to by
221541Srgrimes   most of the compiler.  This allows header files to use these types
231541Srgrimes   (e.g. in function prototypes) without concern for whether the full
241541Srgrimes   definitions are visible.  Some other declarations that need to be
251541Srgrimes   universally visible are here, too.
261541Srgrimes
271541Srgrimes   In the context of tconfig.h, most of these have special definitions
281541Srgrimes   which prevent them from being used except in further type
291541Srgrimes   declarations.  This is a kludge; the right thing is to avoid
301541Srgrimes   including the "tm.h" header set in the context of tconfig.h, but
311541Srgrimes   we're not there yet.  */
321541Srgrimes
331541Srgrimes#ifndef GCC_CORETYPES_H
341541Srgrimes#define GCC_CORETYPES_H
351541Srgrimes
361817Sdg#define GTY(x)  /* nothing - marker for gengtype */
371541Srgrimes
381541Srgrimes#ifndef USED_FOR_TARGET
391541Srgrimes
401541Srgrimesstruct bitmap_head_def;
411541Srgrimestypedef struct bitmap_head_def *bitmap;
421541Srgrimesstruct rtx_def;
435455Sdgtypedef struct rtx_def *rtx;
441541Srgrimesstruct rtvec_def;
451541Srgrimestypedef struct rtvec_def *rtvec;
461541Srgrimesunion tree_node;
471541Srgrimestypedef union tree_node *tree;
481541Srgrimesunion section;
495455Sdgtypedef union section section;
505455Sdg
515455Sdg/* Provide forward struct declaration so that we don't have to include
521541Srgrimes   all of cpplib.h whenever a random prototype includes a pointer.
535455Sdg   Note that the cpp_reader typedef remains part of cpplib.h.  */
541541Srgrimes
551541Srgrimesstruct cpp_reader;
561541Srgrimes
571541Srgrimes/* The thread-local storage model associated with a given VAR_DECL
581541Srgrimes   or SYMBOL_REF.  This isn't used much, but both trees and RTL refer
591541Srgrimes   to it, so it's here.  */
601541Srgrimesenum tls_model {
611541Srgrimes  TLS_MODEL_NONE,
621541Srgrimes  TLS_MODEL_GLOBAL_DYNAMIC,
631817Sdg  TLS_MODEL_LOCAL_DYNAMIC,
645455Sdg  TLS_MODEL_INITIAL_EXEC,
651541Srgrimes  TLS_MODEL_LOCAL_EXEC
661541Srgrimes};
671541Srgrimes
681541Srgrimes#else
691541Srgrimes
701541Srgrimesstruct _dont_use_rtx_here_;
711541Srgrimesstruct _dont_use_rtvec_here_;
721541Srgrimesunion _dont_use_tree_here_;
732112Swollman#define rtx struct _dont_use_rtx_here_ *
742112Swollman#define rtvec struct _dont_use_rtvec_here *
751541Srgrimes#define tree union _dont_use_tree_here_ *
761541Srgrimes
771541Srgrimes#endif
781541Srgrimes
791541Srgrimes#endif /* coretypes.h */
801541Srgrimes
815455Sdg