]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/cp/cp-lang.c
dwarf2out.c (reference_to_unused): Don't emit strings in initializers just because...
[thirdparty/gcc.git] / gcc / cp / cp-lang.c
CommitLineData
19551f29 1/* Language-dependent hooks for C++.
e77f031d 2 Copyright 2001, 2002, 2004, 2007 Free Software Foundation, Inc.
19551f29
AO
3 Contributed by Alexandre Oliva <aoliva@redhat.com>
4
f5adbb8d 5This file is part of GCC.
19551f29 6
f5adbb8d 7GCC is free software; you can redistribute it and/or modify
19551f29 8it under the terms of the GNU General Public License as published by
e77f031d 9the Free Software Foundation; either version 3, or (at your option)
19551f29
AO
10any later version.
11
f5adbb8d 12GCC is distributed in the hope that it will be useful,
19551f29
AO
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
e77f031d
NC
18along with GCC; see the file COPYING3. If not see
19<http://www.gnu.org/licenses/>. */
19551f29
AO
20
21#include "config.h"
22#include "system.h"
4977bab6
ZW
23#include "coretypes.h"
24#include "tm.h"
19551f29
AO
25#include "tree.h"
26#include "cp-tree.h"
ac79cd5a 27#include "c-common.h"
19551f29
AO
28#include "toplev.h"
29#include "langhooks.h"
d23c55c2 30#include "langhooks-def.h"
e1a4dd13 31#include "diagnostic.h"
11bb4b27
ZL
32#include "debug.h"
33#include "cp-objcp-common.h"
820cc88f 34#include "hashtab.h"
19551f29 35
37fa72e9 36enum c_language_kind c_language = clk_cxx;
820cc88f 37static void cp_init_ts (void);
a0ad3539 38static const char * cxx_dwarf_name (tree t, int verbosity);
37fa72e9 39
11bb4b27
ZL
40/* Lang hooks common to C++ and ObjC++ are declared in cp/cp-objcp-common.h;
41 consequently, there should be very few hooks below. */
42
3ac88239
NB
43#undef LANG_HOOKS_NAME
44#define LANG_HOOKS_NAME "GNU C++"
19551f29
AO
45#undef LANG_HOOKS_INIT
46#define LANG_HOOKS_INIT cxx_init
39ef6592
LC
47#undef LANG_HOOKS_GENERIC_TYPE_P
48#define LANG_HOOKS_GENERIC_TYPE_P class_tmpl_impl_spec_p
7afff7cf
NB
49#undef LANG_HOOKS_DECL_PRINTABLE_NAME
50#define LANG_HOOKS_DECL_PRINTABLE_NAME cxx_printable_name
a0ad3539
MM
51#undef LANG_HOOKS_DWARF_NAME
52#define LANG_HOOKS_DWARF_NAME cxx_dwarf_name
c3002ae9
ZL
53#undef LANG_HOOKS_FOLD_OBJ_TYPE_REF
54#define LANG_HOOKS_FOLD_OBJ_TYPE_REF cp_fold_obj_type_ref
820cc88f
DB
55#undef LANG_HOOKS_INIT_TS
56#define LANG_HOOKS_INIT_TS cp_init_ts
f1e639b1 57
11bb4b27 58/* Each front end provides its own lang hook initializer. */
3ac88239 59const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
8ac61af7 60
00a17e31 61/* Tree code classes. */
ef4f94ac
RH
62
63#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE,
64
6615c446 65const enum tree_code_class tree_code_type[] = {
ef4f94ac 66#include "tree.def"
6615c446 67 tcc_exceptional,
ef4f94ac 68#include "c-common.def"
6615c446 69 tcc_exceptional,
ef4f94ac
RH
70#include "cp-tree.def"
71};
72#undef DEFTREECODE
73
74/* Table indexed by tree code giving number of expression
75 operands beyond the fixed part of the node structure.
76 Not used for types or decls. */
77
78#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH,
79
80const unsigned char tree_code_length[] = {
81#include "tree.def"
82 0,
83#include "c-common.def"
84 0,
85#include "cp-tree.def"
86};
87#undef DEFTREECODE
88
89/* Names of tree components.
90 Used for printing out the tree and error messages. */
91#define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME,
92
93const char *const tree_code_name[] = {
94#include "tree.def"
95 "@@dummy",
96#include "c-common.def"
97 "@@dummy",
98#include "cp-tree.def"
99};
100#undef DEFTREECODE
101
11bb4b27
ZL
102/* Lang hook routines common to C++ and ObjC++ appear in cp/cp-objcp-common.c;
103 there should be very few routines below. */
8bcefb43 104
11bb4b27 105/* The following function does something real, but only in Objective-C++. */
e1a4dd13 106
11bb4b27 107tree
c3002ae9
ZL
108objcp_tsubst_copy_and_build (tree t ATTRIBUTE_UNUSED,
109 tree args ATTRIBUTE_UNUSED,
110 tsubst_flags_t complain ATTRIBUTE_UNUSED,
11bb4b27
ZL
111 tree in_decl ATTRIBUTE_UNUSED,
112 bool function_p ATTRIBUTE_UNUSED)
f75fbaf7 113{
11bb4b27 114 return NULL_TREE;
f75fbaf7
ZW
115}
116
820cc88f
DB
117
118static void
119cp_init_ts (void)
120{
121 tree_contains_struct[NAMESPACE_DECL][TS_DECL_NON_COMMON] = 1;
122 tree_contains_struct[USING_DECL][TS_DECL_NON_COMMON] = 1;
123 tree_contains_struct[TEMPLATE_DECL][TS_DECL_NON_COMMON] = 1;
820cc88f
DB
124
125 tree_contains_struct[NAMESPACE_DECL][TS_DECL_WITH_VIS] = 1;
126 tree_contains_struct[USING_DECL][TS_DECL_WITH_VIS] = 1;
127 tree_contains_struct[TEMPLATE_DECL][TS_DECL_WITH_VIS] = 1;
820cc88f
DB
128
129 tree_contains_struct[NAMESPACE_DECL][TS_DECL_WRTL] = 1;
130 tree_contains_struct[USING_DECL][TS_DECL_WRTL] = 1;
131 tree_contains_struct[TEMPLATE_DECL][TS_DECL_WRTL] = 1;
3db45ab5 132
820cc88f
DB
133 tree_contains_struct[NAMESPACE_DECL][TS_DECL_COMMON] = 1;
134 tree_contains_struct[USING_DECL][TS_DECL_COMMON] = 1;
135 tree_contains_struct[TEMPLATE_DECL][TS_DECL_COMMON] = 1;
3db45ab5 136
820cc88f
DB
137 tree_contains_struct[NAMESPACE_DECL][TS_DECL_MINIMAL] = 1;
138 tree_contains_struct[USING_DECL][TS_DECL_MINIMAL] = 1;
139 tree_contains_struct[TEMPLATE_DECL][TS_DECL_MINIMAL] = 1;
820cc88f 140
3ed8593d 141 init_shadowed_var_for_decl ();
820cc88f 142
820cc88f
DB
143}
144
a0ad3539
MM
145static const char *
146cxx_dwarf_name (tree t, int verbosity)
147{
148 gcc_assert (DECL_P (t));
149
150 if (verbosity >= 2)
151 return decl_as_string (t, TFF_DECL_SPECIFIERS | TFF_UNQUALIFIED_NAME);
152
153 return cxx_printable_name (t, verbosity);
154}
155
f75fbaf7 156void
11bb4b27 157finish_file (void)
f75fbaf7
ZW
158{
159}
84b8b0e0 160
11bb4b27 161#include "gtype-cp.h"