* sh.h (REG_CLASS_FROM_LETTER): Change to:
[official-gcc.git] / gcc / cppinit.c
blobcace8b9f5db9f5d6081a5a369387b6435ac1cf83
1 /* CPP Library.
2 Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
3 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
4 Contributed by Per Bothner, 1994-95.
5 Based on CCCP program by Paul Rubin, June 1986
6 Adapted to ANSI C, Richard Stallman, Jan 1987
8 This program is free software; you can redistribute it and/or modify it
9 under the terms of the GNU General Public License as published by the
10 Free Software Foundation; either version 2, or (at your option) any
11 later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
22 #include "config.h"
23 #include "system.h"
24 #include "coretypes.h"
25 #include "tm.h"
26 #include "cpplib.h"
27 #include "cpphash.h"
28 #include "mkdeps.h"
30 static void init_library PARAMS ((void));
31 static void mark_named_operators PARAMS ((cpp_reader *));
32 static void read_original_filename PARAMS ((cpp_reader *));
33 static void post_options PARAMS ((cpp_reader *));
35 /* If we have designated initializers (GCC >2.7) these tables can be
36 initialized, constant data. Otherwise, they have to be filled in at
37 runtime. */
38 #if HAVE_DESIGNATED_INITIALIZERS
40 #define init_trigraph_map() /* Nothing. */
41 #define TRIGRAPH_MAP \
42 __extension__ const uchar _cpp_trigraph_map[UCHAR_MAX + 1] = {
44 #define END };
45 #define s(p, v) [p] = v,
47 #else
49 #define TRIGRAPH_MAP uchar _cpp_trigraph_map[UCHAR_MAX + 1] = { 0 }; \
50 static void init_trigraph_map PARAMS ((void)) { \
51 unsigned char *x = _cpp_trigraph_map;
53 #define END }
54 #define s(p, v) x[p] = v;
56 #endif
58 TRIGRAPH_MAP
59 s('=', '#') s(')', ']') s('!', '|')
60 s('(', '[') s('\'', '^') s('>', '}')
61 s('/', '\\') s('<', '{') s('-', '~')
62 END
64 #undef s
65 #undef END
66 #undef TRIGRAPH_MAP
68 /* A set of booleans indicating what CPP features each source language
69 requires. */
70 struct lang_flags
72 char c99;
73 char cplusplus;
74 char extended_numbers;
75 char std;
76 char cplusplus_comments;
77 char digraphs;
80 static const struct lang_flags lang_defaults[] =
81 { /* c99 c++ xnum std // digr */
82 /* GNUC89 */ { 0, 0, 1, 0, 1, 1 },
83 /* GNUC99 */ { 1, 0, 1, 0, 1, 1 },
84 /* STDC89 */ { 0, 0, 0, 1, 0, 0 },
85 /* STDC94 */ { 0, 0, 0, 1, 0, 1 },
86 /* STDC99 */ { 1, 0, 1, 1, 1, 1 },
87 /* GNUCXX */ { 0, 1, 1, 0, 1, 1 },
88 /* CXX98 */ { 0, 1, 1, 1, 1, 1 },
89 /* ASM */ { 0, 0, 1, 0, 1, 0 }
92 /* Sets internal flags correctly for a given language. */
93 void
94 cpp_set_lang (pfile, lang)
95 cpp_reader *pfile;
96 enum c_lang lang;
98 const struct lang_flags *l = &lang_defaults[(int) lang];
100 CPP_OPTION (pfile, lang) = lang;
102 CPP_OPTION (pfile, c99) = l->c99;
103 CPP_OPTION (pfile, cplusplus) = l->cplusplus;
104 CPP_OPTION (pfile, extended_numbers) = l->extended_numbers;
105 CPP_OPTION (pfile, std) = l->std;
106 CPP_OPTION (pfile, trigraphs) = l->std;
107 CPP_OPTION (pfile, cplusplus_comments) = l->cplusplus_comments;
108 CPP_OPTION (pfile, digraphs) = l->digraphs;
111 /* Initialize library global state. */
112 static void
113 init_library ()
115 static int initialized = 0;
117 if (! initialized)
119 initialized = 1;
121 /* Set up the trigraph map. This doesn't need to do anything if
122 we were compiled with a compiler that supports C99 designated
123 initializers. */
124 init_trigraph_map ();
128 /* Initialize a cpp_reader structure. */
129 cpp_reader *
130 cpp_create_reader (lang, table)
131 enum c_lang lang;
132 hash_table *table;
134 cpp_reader *pfile;
136 /* Initialize this instance of the library if it hasn't been already. */
137 init_library ();
139 pfile = (cpp_reader *) xcalloc (1, sizeof (cpp_reader));
141 cpp_set_lang (pfile, lang);
142 CPP_OPTION (pfile, warn_import) = 1;
143 CPP_OPTION (pfile, warn_multichar) = 1;
144 CPP_OPTION (pfile, discard_comments) = 1;
145 CPP_OPTION (pfile, discard_comments_in_macro_exp) = 1;
146 CPP_OPTION (pfile, show_column) = 1;
147 CPP_OPTION (pfile, tabstop) = 8;
148 CPP_OPTION (pfile, operator_names) = 1;
149 CPP_OPTION (pfile, warn_trigraphs) = 2;
150 CPP_OPTION (pfile, warn_endif_labels) = 1;
151 CPP_OPTION (pfile, warn_deprecated) = 1;
152 CPP_OPTION (pfile, warn_long_long) = !CPP_OPTION (pfile, c99);
153 CPP_OPTION (pfile, dollars_in_ident) = 1;
154 CPP_OPTION (pfile, warn_dollars) = 1;
156 /* Default CPP arithmetic to something sensible for the host for the
157 benefit of dumb users like fix-header. */
158 CPP_OPTION (pfile, precision) = CHAR_BIT * sizeof (long);
159 CPP_OPTION (pfile, char_precision) = CHAR_BIT;
160 CPP_OPTION (pfile, wchar_precision) = CHAR_BIT * sizeof (int);
161 CPP_OPTION (pfile, int_precision) = CHAR_BIT * sizeof (int);
162 CPP_OPTION (pfile, unsigned_char) = 0;
163 CPP_OPTION (pfile, unsigned_wchar) = 1;
165 /* Initialize the line map. Start at logical line 1, so we can use
166 a line number of zero for special states. */
167 init_line_maps (&pfile->line_maps);
169 /* Initialize lexer state. */
170 pfile->state.save_comments = ! CPP_OPTION (pfile, discard_comments);
172 /* Set up static tokens. */
173 pfile->avoid_paste.type = CPP_PADDING;
174 pfile->avoid_paste.val.source = NULL;
175 pfile->eof.type = CPP_EOF;
176 pfile->eof.flags = 0;
178 /* Create a token buffer for the lexer. */
179 _cpp_init_tokenrun (&pfile->base_run, 250);
180 pfile->cur_run = &pfile->base_run;
181 pfile->cur_token = pfile->base_run.base;
183 /* Initialize the base context. */
184 pfile->context = &pfile->base_context;
185 pfile->base_context.macro = 0;
186 pfile->base_context.prev = pfile->base_context.next = 0;
188 /* Aligned and unaligned storage. */
189 pfile->a_buff = _cpp_get_buff (pfile, 0);
190 pfile->u_buff = _cpp_get_buff (pfile, 0);
192 /* The expression parser stack. */
193 _cpp_expand_op_stack (pfile);
195 /* Initialize the buffer obstack. */
196 gcc_obstack_init (&pfile->buffer_ob);
198 _cpp_init_includes (pfile);
200 _cpp_init_hashtable (pfile, table);
202 return pfile;
205 /* Free resources used by PFILE. Accessing PFILE after this function
206 returns leads to undefined behavior. Returns the error count. */
207 void
208 cpp_destroy (pfile)
209 cpp_reader *pfile;
211 cpp_context *context, *contextn;
212 tokenrun *run, *runn;
214 free (pfile->op_stack);
216 while (CPP_BUFFER (pfile) != NULL)
217 _cpp_pop_buffer (pfile);
219 if (pfile->out.base)
220 free (pfile->out.base);
222 if (pfile->macro_buffer)
224 free ((PTR) pfile->macro_buffer);
225 pfile->macro_buffer = NULL;
226 pfile->macro_buffer_len = 0;
229 if (pfile->deps)
230 deps_free (pfile->deps);
231 obstack_free (&pfile->buffer_ob, 0);
233 _cpp_destroy_hashtable (pfile);
234 _cpp_cleanup_includes (pfile);
236 _cpp_free_buff (pfile->a_buff);
237 _cpp_free_buff (pfile->u_buff);
238 _cpp_free_buff (pfile->free_buffs);
240 for (run = &pfile->base_run; run; run = runn)
242 runn = run->next;
243 free (run->base);
244 if (run != &pfile->base_run)
245 free (run);
248 for (context = pfile->base_context.next; context; context = contextn)
250 contextn = context->next;
251 free (context);
254 free_line_maps (&pfile->line_maps);
255 free (pfile);
258 /* This structure defines one built-in identifier. A node will be
259 entered in the hash table under the name NAME, with value VALUE.
261 There are two tables of these. builtin_array holds all the
262 "builtin" macros: these are handled by builtin_macro() in
263 cppmacro.c. Builtin is somewhat of a misnomer -- the property of
264 interest is that these macros require special code to compute their
265 expansions. The value is a "builtin_type" enumerator.
267 operator_array holds the C++ named operators. These are keywords
268 which act as aliases for punctuators. In C++, they cannot be
269 altered through #define, and #if recognizes them as operators. In
270 C, these are not entered into the hash table at all (but see
271 <iso646.h>). The value is a token-type enumerator. */
272 struct builtin
274 const uchar *name;
275 unsigned short len;
276 unsigned short value;
279 #define B(n, t) { DSC(n), t }
280 static const struct builtin builtin_array[] =
282 B("__TIME__", BT_TIME),
283 B("__DATE__", BT_DATE),
284 B("__FILE__", BT_FILE),
285 B("__BASE_FILE__", BT_BASE_FILE),
286 B("__LINE__", BT_SPECLINE),
287 B("__INCLUDE_LEVEL__", BT_INCLUDE_LEVEL),
288 /* Keep builtins not used for -traditional-cpp at the end, and
289 update init_builtins() if any more are added. */
290 B("_Pragma", BT_PRAGMA),
291 B("__STDC__", BT_STDC),
294 static const struct builtin operator_array[] =
296 B("and", CPP_AND_AND),
297 B("and_eq", CPP_AND_EQ),
298 B("bitand", CPP_AND),
299 B("bitor", CPP_OR),
300 B("compl", CPP_COMPL),
301 B("not", CPP_NOT),
302 B("not_eq", CPP_NOT_EQ),
303 B("or", CPP_OR_OR),
304 B("or_eq", CPP_OR_EQ),
305 B("xor", CPP_XOR),
306 B("xor_eq", CPP_XOR_EQ)
308 #undef B
310 /* Mark the C++ named operators in the hash table. */
311 static void
312 mark_named_operators (pfile)
313 cpp_reader *pfile;
315 const struct builtin *b;
317 for (b = operator_array;
318 b < (operator_array + ARRAY_SIZE (operator_array));
319 b++)
321 cpp_hashnode *hp = cpp_lookup (pfile, b->name, b->len);
322 hp->flags |= NODE_OPERATOR;
323 hp->is_directive = 0;
324 hp->directive_index = b->value;
328 /* Read the builtins table above and enter them, and language-specific
329 macros, into the hash table. HOSTED is true if this is a hosted
330 environment. */
331 void
332 cpp_init_builtins (pfile, hosted)
333 cpp_reader *pfile;
334 int hosted;
336 const struct builtin *b;
337 size_t n = ARRAY_SIZE (builtin_array);
339 if (CPP_OPTION (pfile, traditional))
340 n -= 2;
342 for(b = builtin_array; b < builtin_array + n; b++)
344 cpp_hashnode *hp = cpp_lookup (pfile, b->name, b->len);
345 hp->type = NT_MACRO;
346 hp->flags |= NODE_BUILTIN | NODE_WARN;
347 hp->value.builtin = b->value;
350 if (CPP_OPTION (pfile, cplusplus))
351 _cpp_define_builtin (pfile, "__cplusplus 1");
352 else if (CPP_OPTION (pfile, lang) == CLK_ASM)
353 _cpp_define_builtin (pfile, "__ASSEMBLER__ 1");
354 else if (CPP_OPTION (pfile, lang) == CLK_STDC94)
355 _cpp_define_builtin (pfile, "__STDC_VERSION__ 199409L");
356 else if (CPP_OPTION (pfile, c99))
357 _cpp_define_builtin (pfile, "__STDC_VERSION__ 199901L");
359 if (hosted)
360 _cpp_define_builtin (pfile, "__STDC_HOSTED__ 1");
361 else
362 _cpp_define_builtin (pfile, "__STDC_HOSTED__ 0");
364 if (CPP_OPTION (pfile, objc))
365 _cpp_define_builtin (pfile, "__OBJC__ 1");
368 /* Sanity-checks are dependent on command-line options, so it is
369 called as a subroutine of cpp_read_main_file (). */
370 #if ENABLE_CHECKING
371 static void sanity_checks PARAMS ((cpp_reader *));
372 static void sanity_checks (pfile)
373 cpp_reader *pfile;
375 cppchar_t test = 0;
376 size_t max_precision = 2 * CHAR_BIT * sizeof (cpp_num_part);
378 /* Sanity checks for assumptions about CPP arithmetic and target
379 type precisions made by cpplib. */
380 test--;
381 if (test < 1)
382 cpp_error (pfile, DL_ICE, "cppchar_t must be an unsigned type");
384 if (CPP_OPTION (pfile, precision) > max_precision)
385 cpp_error (pfile, DL_ICE,
386 "preprocessor arithmetic has maximum precision of %lu bits; target requires %lu bits",
387 (unsigned long) max_precision,
388 (unsigned long) CPP_OPTION (pfile, precision));
390 if (CPP_OPTION (pfile, precision) < CPP_OPTION (pfile, int_precision))
391 cpp_error (pfile, DL_ICE,
392 "CPP arithmetic must be at least as precise as a target int");
394 if (CPP_OPTION (pfile, char_precision) < 8)
395 cpp_error (pfile, DL_ICE, "target char is less than 8 bits wide");
397 if (CPP_OPTION (pfile, wchar_precision) < CPP_OPTION (pfile, char_precision))
398 cpp_error (pfile, DL_ICE,
399 "target wchar_t is narrower than target char");
401 if (CPP_OPTION (pfile, int_precision) < CPP_OPTION (pfile, char_precision))
402 cpp_error (pfile, DL_ICE,
403 "target int is narrower than target char");
405 /* This is assumed in eval_token() and could be fixed if necessary. */
406 if (sizeof (cppchar_t) > sizeof (cpp_num_part))
407 cpp_error (pfile, DL_ICE, "CPP half-integer narrower than CPP character");
409 if (CPP_OPTION (pfile, wchar_precision) > BITS_PER_CPPCHAR_T)
410 cpp_error (pfile, DL_ICE,
411 "CPP on this host cannot handle wide character constants over %lu bits, but the target requires %lu bits",
412 (unsigned long) BITS_PER_CPPCHAR_T,
413 (unsigned long) CPP_OPTION (pfile, wchar_precision));
415 #else
416 # define sanity_checks(PFILE)
417 #endif
419 /* Add a dependency target. Can be called any number of times before
420 cpp_read_main_file(). If no targets have been added before
421 cpp_read_main_file(), then the default target is used. */
422 void
423 cpp_add_dependency_target (pfile, target, quote)
424 cpp_reader *pfile;
425 const char *target;
426 int quote;
428 if (!pfile->deps)
429 pfile->deps = deps_init ();
431 deps_add_target (pfile->deps, target, quote);
434 /* This is called after options have been parsed, and partially
435 processed. Setup for processing input from the file named FNAME,
436 or stdin if it is the empty string. Return the original filename
437 on success (e.g. foo.i->foo.c), or NULL on failure. */
438 const char *
439 cpp_read_main_file (pfile, fname)
440 cpp_reader *pfile;
441 const char *fname;
443 sanity_checks (pfile);
445 post_options (pfile);
447 /* Mark named operators before handling command line macros. */
448 if (CPP_OPTION (pfile, cplusplus) && CPP_OPTION (pfile, operator_names))
449 mark_named_operators (pfile);
451 if (CPP_OPTION (pfile, deps.style) != DEPS_NONE)
453 if (!pfile->deps)
454 pfile->deps = deps_init ();
456 /* Set the default target (if there is none already). */
457 deps_add_default_target (pfile->deps, fname);
460 /* Open the main input file. */
461 pfile->line = 1;
462 if (!_cpp_read_file (pfile, fname))
463 return NULL;
465 /* Set this here so the client can change the option if it wishes,
466 and after stacking the main file so we don't trace the main
467 file. */
468 pfile->line_maps.trace_includes = CPP_OPTION (pfile, print_include_names);
470 /* For foo.i, read the original filename foo.c now, for the benefit
471 of the front ends. */
472 if (CPP_OPTION (pfile, preprocessed))
473 read_original_filename (pfile);
475 return pfile->map->to_file;
478 /* For preprocessed files, if the first tokens are of the form # NUM.
479 handle the directive so we know the original file name. This will
480 generate file_change callbacks, which the front ends must handle
481 appropriately given their state of initialization. */
482 static void
483 read_original_filename (pfile)
484 cpp_reader *pfile;
486 const cpp_token *token, *token1;
488 /* Lex ahead; if the first tokens are of the form # NUM, then
489 process the directive, otherwise back up. */
490 token = _cpp_lex_direct (pfile);
491 if (token->type == CPP_HASH)
493 token1 = _cpp_lex_direct (pfile);
494 _cpp_backup_tokens (pfile, 1);
496 /* If it's a #line directive, handle it. */
497 if (token1->type == CPP_NUMBER)
499 _cpp_handle_directive (pfile, token->flags & PREV_WHITE);
500 return;
504 /* Backup as if nothing happened. */
505 _cpp_backup_tokens (pfile, 1);
508 /* This is called at the end of preprocessing. It pops the last
509 buffer and writes dependency output, and returns the number of
510 errors.
512 Maybe it should also reset state, such that you could call
513 cpp_start_read with a new filename to restart processing. */
515 cpp_finish (pfile, deps_stream)
516 cpp_reader *pfile;
517 FILE *deps_stream;
519 /* Warn about unused macros before popping the final buffer. */
520 if (CPP_OPTION (pfile, warn_unused_macros))
521 cpp_forall_identifiers (pfile, _cpp_warn_if_unused_macro, NULL);
523 /* cpplex.c leaves the final buffer on the stack. This it so that
524 it returns an unending stream of CPP_EOFs to the client. If we
525 popped the buffer, we'd dereference a NULL buffer pointer and
526 segfault. It's nice to allow the client to do worry-free excess
527 cpp_get_token calls. */
528 while (pfile->buffer)
529 _cpp_pop_buffer (pfile);
531 /* Don't write the deps file if there are errors. */
532 if (CPP_OPTION (pfile, deps.style) != DEPS_NONE
533 && deps_stream && pfile->errors == 0)
535 deps_write (pfile->deps, deps_stream, 72);
537 if (CPP_OPTION (pfile, deps.phony_targets))
538 deps_phony_targets (pfile->deps, deps_stream);
541 /* Report on headers that could use multiple include guards. */
542 if (CPP_OPTION (pfile, print_include_names))
543 _cpp_report_missing_guards (pfile);
545 return pfile->errors;
548 static void
549 post_options (pfile)
550 cpp_reader *pfile;
552 /* -Wtraditional is not useful in C++ mode. */
553 if (CPP_OPTION (pfile, cplusplus))
554 CPP_OPTION (pfile, warn_traditional) = 0;
556 /* Permanently disable macro expansion if we are rescanning
557 preprocessed text. Read preprocesed source in ISO mode. */
558 if (CPP_OPTION (pfile, preprocessed))
560 pfile->state.prevent_expansion = 1;
561 CPP_OPTION (pfile, traditional) = 0;
564 if (CPP_OPTION (pfile, warn_trigraphs) == 2)
565 CPP_OPTION (pfile, warn_trigraphs) = !CPP_OPTION (pfile, trigraphs);
567 if (CPP_OPTION (pfile, traditional))
569 /* Traditional CPP does not accurately track column information. */
570 CPP_OPTION (pfile, show_column) = 0;
571 CPP_OPTION (pfile, trigraphs) = 0;
572 CPP_OPTION (pfile, warn_trigraphs) = 0;