diff options
author | Zack Weinberg <zack@gcc.gnu.org> | 2000-09-07 00:37:14 +0000 |
---|---|---|
committer | Zack Weinberg <zack@gcc.gnu.org> | 2000-09-07 00:37:14 +0000 |
commit | 0e5921e8a0f347a7de29c7347738db8de5769a88 (patch) | |
tree | 548c8127a4b2fd1bf95771627c7e8abb3763d577 /gcc/c-gperf.h | |
parent | 26aa75bef97454f65b437067cf77a5a0255934a3 (diff) | |
download | gcc-0e5921e8a0f347a7de29c7347738db8de5769a88.zip gcc-0e5921e8a0f347a7de29c7347738db8de5769a88.tar.gz gcc-0e5921e8a0f347a7de29c7347738db8de5769a88.tar.bz2 |
Integrated preprocessor.
top level:
* Makefile.in: Remove all references to c-parse.gperf,
c-gperf.h, and c-parse.h. Remove -d from yacc command line
generating c-parse.c. Update dependencies.
* c-parse.gperf, c-gperf.h: Delete.
* c-common.c: Don't define parse_options, cpp_token, yy_cur,
yy_lim, or yy_get_token. Don't define get_directive_line if
USE_CPPLIB.
* c-common.h: Add multiple include guard. Define RID values
for every keyword in C, C++, and Objective C. Put all the
modifiers first.
(struct c_fileinfo, get_fileinfo, dump_time_statistics): New.
* c-decl.c (c_decode_option): Handle -lang-objc here.
(print_lang_identifier): Handle C_IS_RESERVED_WORD case.
(grokdeclarator): Adjust for new RID scheme.
(extract_interface_info): New stub.
* c-lang.c: Don't declare yy_cur or parse_options.
(lang_init_options): Call cpp_init. Don't call
cpp_options_init.
(lang_init): Don't call check_newline if USE_CPPLIB.
* c-lex.c: Don't include c-parse.h. Do include timevar.h.
Elide lots of unnecessary code if USE_CPPLIB. Delete code
rendered unnecessary by new architecture. Move routines not
shared with C++ to c-parse.in. Maintain a local idea of the
line number. Handle C++ as well as C.
[USE_CPPLIB]: Declare and register callbacks for #ident and
for entering/leaving files.
(init_c_lex, c_lex): Are now the entry points to this file.
(check_newline): Break out directive handling to
process_directive.
(read_ucs, is_extended_char, utf8_extend_token): Moved here
from C++ front end.
(readescape, parse_float): Overhaul.
(lex_number, lex_string, lex_charconst): Break out of c_lex
(n'ee yylex).
(get_fileinfo, update_header_times, dump_one_header,
dump_time_statistics): New and/or moved here from C++.
Support per-file data needed by C++ and per-header timing
statistics (C++ only, at the moment).
* c-lex.h: Update prototypes. Add multiple include guard.
* c-tree.h (struct lang_identifier): Add rid_code field.
(C_IS_RESERVED_WORD, C_RID_CODE): New.
* c-parse.in: Include c-pragma.h. Remove unnecesary calls to
reinit_parse_for_function and/or position_after_white_space.
(save_filename, save_lineno): Look ahead before saving.
(label -> identifier ':'): Save file and line before shifting ':'.
(reservedwords): No need to call get_identifier.
(init_parse, finish_parse, yyerror, yylex, yyprint,
make_pointer_declarator): Are now here for C/ObjC.
(rid_to_yy): Conversion table from RID constants to Yacc codes.
* c-pragma.c: Rewrite parsing logic to fit with cpplib's
#pragma registry. Provide dummy implementation of that
interface if !USE_CPPLIB.
* c-pragma.h: Update to match.
* flags.h: Add multiple include guard.
(flag_detailed_statistics): Moved here from C++.
* toplev.c: Define flag_detailed_statistics.
* gcc.c (C specs): Use %(trad_capable_cpp) for -E|-M|-MM case
#if USE_CPPLIB.
* timevar.def (TV_CPP, TV_LEX): New.
* timevar.h: Add multiple include guard.
* objc/lang-specs.h: Use %(trad_capable_cpp) for -E|-M|-MM case
#if USE_CPPLIB.
* objc/objc-act.c: Don't mention yy_cur or parse_options.
Initialize cpplib properly. Force lineno to 0 after first
call to check_newline. Don't handle -lang-objc here.
Move forget_protocol_qualifiers and remember_protocol_qualifiers here.
cp:
* Make-lang.in, Makefile.in: Remove all references to input.c,
gxx.gperf, and hash.h. Add ../c-lex.o to C_OBJS.
* gxx.gperf, hash.h, input.c: Delete.
* lang-specs.h: Pass -lang-c++ to cc1plus so cpplib is
initialized properly.
* class.c (fixup_pending_inline): Take a tree, not a
struct pending_inline *. All callers changed.
(init_class_processing): Set RID_PUBLIC, RID_PRIVATE,
RID_PROTECTED entries in ridpointers[] array here.
* decl.c (duplicate_decls): Do not refer to struct
pending_inline.
(record_builtin_type, init_decl_processing): Use RID_MAX not
CP_RID_MAX.
(grokdeclarator): Use C_IS_RESERVED_WORD.
* decl2.c (lang_decode_option): Ignore -lang-c++ for sake of
cpplib.
(grok_x_components): Do not inspect pending_inlines chain.
* cp-tree.h (struct lang_identifier): Add rid_code entry.
(C_IS_RESERVED_WORD, C_RID_CODE, C_RID_YYCODE): New.
(flag_no_gnu_keywords, flag_operator_names, rid_to_yy): Declare.
(DEFARG_LENGTH, struct pending_inline, TIME_IDENTIFIER_TIME,
TIME_IDENTIFIER_FILEINFO): Kill.
Update prototypes.
* lex.h: Expunge cp_rid. Rewrite RIDBIT macros to use just a
single 32-bit word.
* parse.y: Call do_pending_inlines unconditionally.
reinit_parse_for_method is now snarf_method. fn.defpen is no
longer necessary. Remove unnecessary <itype> annotation on
SCOPE. Do not refer to end_of_file or struct pending_inline.
* semantics.c (begin_inline_definitions): Call
do_pending_inlines unconditionally.
* lex.c: Remove all code now shared with C front end.
Initialize cpplib properly if USE_CPPLIB. Put reserved words
into the get_identifier table. Rewrite pragma handling to
work with the registry. Move code to save tokens for later
processing to spew.c.
* spew.c: Rewrite everything in terms of token streams instead
of text. Move routines here from lex.c / input.c as
appropriate. GC-mark trees hanging off the pending inlines
chain.
testsuite:
* g++.old-deja/g++.benjamin/13478.C: Put meaningful tags on
ERROR markers.
* g++.old-deja/g++.brendan/crash8.C: Move ERROR marker up one line.
* gcc.dg/c99-array-nonobj-1.c: Don't expect func[] cases to fail.
* gcc.dg/wtr-label-1.c: Don't use unconstrained .* in error regexps.
* gcc.dg/wtr-suffix-1.c: Correct error regexps.
* gcc.dg/cpp/unc1.c, gcc.dg/cpp/unc2.c, gcc.dg/cpp/unc3.c:
Preprocess only.
* gcc.dg/cpp/unc4.c: Adjust line number in dg-error line.
* gcc.dg/noncompile/const-ll-1.c: Generalize error regexp.
From-SVN: r36216
Diffstat (limited to 'gcc/c-gperf.h')
-rw-r--r-- | gcc/c-gperf.h | 252 |
1 files changed, 0 insertions, 252 deletions
diff --git a/gcc/c-gperf.h b/gcc/c-gperf.h deleted file mode 100644 index a864d2e..0000000 --- a/gcc/c-gperf.h +++ /dev/null @@ -1,252 +0,0 @@ -/* C code produced by gperf version 2.7.1 (19981006 egcs) */ -/* Command-line: gperf -L C -F , 0, 0 -p -j1 -i 1 -g -o -t -G -N is_reserved_word -k1,3,$ ../../gcc/c-parse.gperf */ -/* Command-line: gperf -L C -F ', 0, 0' -p -j1 -i 1 -g -o -t -N is_reserved_word -k1,3,$ c-parse.gperf */ -struct resword { const char *name; short token; enum rid rid; }; -#ifdef __GNUC__ -__inline -#endif -static unsigned int hash PARAMS ((const char *, unsigned int)); -#ifdef __GNUC__ -__inline -#endif -struct resword *is_reserved_word PARAMS ((const char *, unsigned int)); - -#define TOTAL_KEYWORDS 92 -#define MIN_WORD_LENGTH 2 -#define MAX_WORD_LENGTH 20 -#define MIN_HASH_VALUE 17 -#define MAX_HASH_VALUE 301 -/* maximum key range = 285, duplicates = 0 */ - -#ifdef __GNUC__ -__inline -#endif -static unsigned int -hash (str, len) - register const char *str; - register unsigned int len; -{ - static unsigned short asso_values[] = - { - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 113, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 1, 302, 78, 52, 111, - 34, 9, 46, 59, 1, 20, 302, 1, 118, 17, - 18, 39, 58, 302, 7, 6, 33, 70, 21, 2, - 5, 1, 1, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302 - }; - register int hval = len; - - switch (hval) - { - default: - case 3: - hval += asso_values[(unsigned char)str[2]]; - case 2: - case 1: - hval += asso_values[(unsigned char)str[0]]; - break; - } - return hval + asso_values[(unsigned char)str[len - 1]]; -} - -static struct resword wordlist[] = - { - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"__real__", REALPART, NORID}, - {"__signed__", TYPESPEC, RID_SIGNED}, - {"", 0, 0}, {"", 0, 0}, - {"__restrict__", TYPE_QUAL, RID_RESTRICT}, - {"", 0, 0}, {"", 0, 0}, - {"__extension__", EXTENSION, NORID}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"else", ELSE, NORID}, - {"", 0, 0}, - {"__imag__", IMAGPART, NORID}, - {"", 0, 0}, - {"__inline__", SCSPEC, RID_INLINE}, - {"switch", SWITCH, NORID}, - {"", 0, 0}, - {"__volatile__", TYPE_QUAL, RID_VOLATILE}, - {"while", WHILE, NORID}, - {"", 0, 0}, - {"__inline", SCSPEC, RID_INLINE}, - {"", 0, 0}, - {"in", TYPE_QUAL, RID_IN}, - {"__volatile", TYPE_QUAL, RID_VOLATILE}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"__typeof__", TYPEOF, NORID}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"__signed", TYPESPEC, RID_SIGNED}, - {"", 0, 0}, - {"__restrict", TYPE_QUAL, RID_RESTRICT}, - {"struct", STRUCT, NORID}, - {"", 0, 0}, - {"restrict", TYPE_QUAL, RID_RESTRICT}, - {"oneway", TYPE_QUAL, RID_ONEWAY}, - {"id", OBJECTNAME, RID_ID}, - {"", 0, 0}, {"", 0, 0}, - {"sizeof", SIZEOF, NORID}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"for", FOR, NORID}, - {"return", RETURN, NORID}, - {"__bounded__", TYPE_QUAL, RID_BOUNDED}, - {"extern", SCSPEC, RID_EXTERN}, - {"break", BREAK, NORID}, - {"if", IF, NORID}, - {"", 0, 0}, {"", 0, 0}, - {"__ptrbase__", PTR_BASE, NORID}, - {"__ptrvalue__", PTR_VALUE, NORID}, - {"__ptrextent__", PTR_EXTENT, NORID}, - {"", 0, 0}, - {"do", DO, NORID}, - {"", 0, 0}, - {"__ptrbase", PTR_BASE, NORID}, - {"__ptrvalue", PTR_VALUE, NORID}, - {"void", TYPESPEC, RID_VOID}, - {"", 0, 0}, - {"register", SCSPEC, RID_REGISTER}, - {"", 0, 0}, - {"short", TYPESPEC, RID_SHORT}, - {"", 0, 0}, - {"__unbounded__", TYPE_QUAL, RID_UNBOUNDED}, - {"__imag", IMAGPART, NORID}, - {"__asm__", ASM_KEYWORD, NORID}, - {"__typeof", TYPEOF, NORID}, - {"int", TYPESPEC, RID_INT}, - {"", 0, 0}, - {"__alignof__", ALIGNOF, NORID}, - {"", 0, 0}, - {"__attribute__", ATTRIBUTE, NORID}, - {"", 0, 0}, {"", 0, 0}, - {"__bounded", TYPE_QUAL, RID_BOUNDED}, - {"inout", TYPE_QUAL, RID_INOUT}, - {"", 0, 0}, - {"__attribute", ATTRIBUTE, NORID}, - {"enum", ENUM, NORID}, - {"__asm", ASM_KEYWORD, NORID}, - {"", 0, 0}, - {"__ptrextent", PTR_EXTENT, NORID}, - {"", 0, 0}, - {"signed", TYPESPEC, RID_SIGNED}, - {"", 0, 0}, {"", 0, 0}, - {"out", TYPE_QUAL, RID_OUT}, - {"", 0, 0}, - {"byref", TYPE_QUAL, RID_BYREF}, - {"", 0, 0}, {"", 0, 0}, - {"union", UNION, NORID}, - {"", 0, 0}, - {"asm", ASM_KEYWORD, NORID}, - {"__unbounded", TYPE_QUAL, RID_UNBOUNDED}, - {"", 0, 0}, - {"unsigned", TYPESPEC, RID_UNSIGNED}, - {"double", TYPESPEC, RID_DOUBLE}, - {"default", DEFAULT, NORID}, - {"", 0, 0}, - {"__const__", TYPE_QUAL, RID_CONST}, - {"float", TYPESPEC, RID_FLOAT}, - {"__complex__", TYPESPEC, RID_COMPLEX}, - {"", 0, 0}, - {"__complex", TYPESPEC, RID_COMPLEX}, - {"", 0, 0}, - {"__builtin_va_arg", VA_ARG, NORID}, - {"__label__", LABEL, NORID}, - {"case", CASE, NORID}, - {"", 0, 0}, - {"__real", REALPART, NORID}, - {"@defs", DEFS, NORID}, - {"__alignof", ALIGNOF, NORID}, - {"goto", GOTO, NORID}, - {"", 0, 0}, - {"@private", PRIVATE, NORID}, - {"@selector", SELECTOR, NORID}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"typeof", TYPEOF, NORID}, - {"typedef", SCSPEC, RID_TYPEDEF}, - {"", 0, 0}, - {"continue", CONTINUE, NORID}, - {"@encode", ENCODE, NORID}, - {"", 0, 0}, {"", 0, 0}, - {"@interface", INTERFACE, NORID}, - {"", 0, 0}, - {"__const", TYPE_QUAL, RID_CONST}, - {"inline", SCSPEC, RID_INLINE}, - {"auto", SCSPEC, RID_AUTO}, - {"", 0, 0}, - {"volatile", TYPE_QUAL, RID_VOLATILE}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"@implementation", IMPLEMENTATION, NORID}, - {"@protected", PROTECTED, NORID}, - {"", 0, 0}, {"", 0, 0}, - {"const", TYPE_QUAL, RID_CONST}, - {"", 0, 0}, - {"@end", END, NORID}, - {"bycopy", TYPE_QUAL, RID_BYCOPY}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"@compatibility_alias", ALIAS, NORID}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"", 0, 0}, {"", 0, 0}, - {"long", TYPESPEC, RID_LONG}, - {"char", TYPESPEC, RID_CHAR}, - {"static", SCSPEC, RID_STATIC}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"@class", CLASS, NORID}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"@protocol", PROTOCOL, NORID}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"@public", PUBLIC, NORID} - }; - -#ifdef __GNUC__ -__inline -#endif -struct resword * -is_reserved_word (str, len) - register const char *str; - register unsigned int len; -{ - if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) - { - register int key = hash (str, len); - - if (key <= MAX_HASH_VALUE && key >= 0) - { - register const char *s = wordlist[key].name; - - if (*str == *s && !strcmp (str + 1, s + 1)) - return &wordlist[key]; - } - } - return 0; -} |