1132718Skan/* GCC core type declarations.
2169689Skan   Copyright (C) 2002, 2004 Free Software Foundation, Inc.
3132718Skan
4132718SkanThis file is part of GCC.
5132718Skan
6132718SkanGCC is free software; you can redistribute it and/or modify it under
7132718Skanthe terms of the GNU General Public License as published by the Free
8132718SkanSoftware Foundation; either version 2, or (at your option) any later
9132718Skanversion.
10132718Skan
11132718SkanGCC is distributed in the hope that it will be useful, but WITHOUT ANY
12132718SkanWARRANTY; without even the implied warranty of MERCHANTABILITY or
13132718SkanFITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14132718Skanfor more details.
15132718Skan
16132718SkanYou should have received a copy of the GNU General Public License
17132718Skanalong with GCC; see the file COPYING.  If not, write to the Free
18169689SkanSoftware Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
19169689Skan02110-1301, USA.  */
20132718Skan
21132718Skan/* Provide forward declarations of core types which are referred to by
22132718Skan   most of the compiler.  This allows header files to use these types
23132718Skan   (e.g. in function prototypes) without concern for whether the full
24132718Skan   definitions are visible.  Some other declarations that need to be
25132718Skan   universally visible are here, too.
26132718Skan
27132718Skan   In the context of tconfig.h, most of these have special definitions
28132718Skan   which prevent them from being used except in further type
29132718Skan   declarations.  This is a kludge; the right thing is to avoid
30132718Skan   including the "tm.h" header set in the context of tconfig.h, but
31132718Skan   we're not there yet.  */
32132718Skan
33132718Skan#ifndef GCC_CORETYPES_H
34132718Skan#define GCC_CORETYPES_H
35132718Skan
36132718Skan#define GTY(x)  /* nothing - marker for gengtype */
37132718Skan
38132718Skan#ifndef USED_FOR_TARGET
39132718Skan
40169689Skanstruct bitmap_head_def;
41169689Skantypedef struct bitmap_head_def *bitmap;
42132718Skanstruct rtx_def;
43132718Skantypedef struct rtx_def *rtx;
44132718Skanstruct rtvec_def;
45132718Skantypedef struct rtvec_def *rtvec;
46132718Skanunion tree_node;
47132718Skantypedef union tree_node *tree;
48169689Skanunion section;
49169689Skantypedef union section section;
50132718Skan
51132718Skan/* Provide forward struct declaration so that we don't have to include
52132718Skan   all of cpplib.h whenever a random prototype includes a pointer.
53132718Skan   Note that the cpp_reader typedef remains part of cpplib.h.  */
54132718Skan
55132718Skanstruct cpp_reader;
56132718Skan
57169689Skan/* The thread-local storage model associated with a given VAR_DECL
58169689Skan   or SYMBOL_REF.  This isn't used much, but both trees and RTL refer
59169689Skan   to it, so it's here.  */
60169689Skanenum tls_model {
61169689Skan  TLS_MODEL_NONE,
62169689Skan  TLS_MODEL_GLOBAL_DYNAMIC,
63169689Skan  TLS_MODEL_LOCAL_DYNAMIC,
64169689Skan  TLS_MODEL_INITIAL_EXEC,
65169689Skan  TLS_MODEL_LOCAL_EXEC
66169689Skan};
67169689Skan
68132718Skan#else
69132718Skan
70132718Skanstruct _dont_use_rtx_here_;
71132718Skanstruct _dont_use_rtvec_here_;
72132718Skanunion _dont_use_tree_here_;
73132718Skan#define rtx struct _dont_use_rtx_here_ *
74132718Skan#define rtvec struct _dont_use_rtvec_here *
75132718Skan#define tree union _dont_use_tree_here_ *
76132718Skan
77132718Skan#endif
78132718Skan
79132718Skan#endif /* coretypes.h */
80132718Skan
81