22,23d21
< /* $FreeBSD: head/contrib/gcc/c-common.h 110622 2003-02-10 05:58:19Z kan $ */
<
48c46
< C++, and Objective C. All the type modifiers have to be in one
---
> C++, and Objective-C. All the type modifiers have to be in one
63c61
< RID_BOUNDED, RID_UNBOUNDED, RID_COMPLEX,
---
> RID_BOUNDED, RID_UNBOUNDED, RID_COMPLEX, RID_THREAD,
98,103c96
< /* alternate spellings */
< RID_AND, RID_AND_EQ, RID_NOT, RID_NOT_EQ,
< RID_OR, RID_OR_EQ, RID_XOR, RID_XOR_EQ,
< RID_BITAND, RID_BITOR, RID_COMPL,
<
< /* Objective C */
---
> /* Objective-C */
184c177
< struct c_common_identifier
---
> struct c_common_identifier GTY(())
187c180
< struct cpp_hashnode node;
---
> struct cpp_hashnode GTY ((skip (""))) node;
231c224
< extern tree c_global_trees[CTI_MAX];
---
> extern GTY(()) tree c_global_trees[CTI_MAX];
243,246c236,237
< clk_c, /* A dialect of C: K&R C, ANSI/ISO C89, C2000,
< etc. */
< clk_cplusplus, /* ANSI/ISO C++ */
< clk_objective_c /* Objective C */
---
> clk_c = 0, /* A dialect of C: K&R C, ANSI/ISO C89, C2000, etc. */
> clk_cplusplus /* ANSI/ISO C++ */
252c243
< struct stmt_tree_s {
---
> struct stmt_tree_s GTY(()) {
260c251
< /* In C++, Non-zero if we should treat statements as full
---
> /* In C++, Nonzero if we should treat statements as full
265c256
< variable is non-zero, since those are the normal semantics of
---
> variable is nonzero, since those are the normal semantics of
282c273
< struct language_function {
---
> struct c_language_function GTY(()) {
320a312
> extern tree gettags PARAMS ((void));
325a318,319
> extern int yyparse PARAMS ((void));
> extern void free_parser_stacks PARAMS ((void));
341d334
< extern void mark_stmt_tree PARAMS ((void *));
354c347
< struct c_lang_decl {
---
> struct c_lang_decl GTY(()) {
365,366d357
< extern void c_mark_lang_decl PARAMS ((struct c_lang_decl *));
<
372,373c363
< /* Nonzero means give string constants the type `const char *', rather
< than `char *'. */
---
> /* Switches common to the C front ends. */
375c365,366
< extern int flag_const_strings;
---
> /* Nonzero if prepreprocessing only. */
> extern int flag_preprocess_only;
376a368,387
> /* Nonzero if an ISO standard was selected. It rejects macros in the
> user's namespace. */
> extern int flag_iso;
>
> /* Nonzero whenever Objective-C functionality is being used. */
> extern int flag_objc;
>
> /* Nonzero if -undef was given. It suppresses target built-in macros
> and assertions. */
> extern int flag_undef;
>
> /* Nonzero means don't recognize the non-ANSI builtin functions. */
>
> extern int flag_no_builtin;
>
> /* Nonzero means don't recognize the non-ANSI builtin functions.
> -ansi sets this. */
>
> extern int flag_no_nonansi_builtin;
>
385c396,397
< /* Warn about *printf or *scanf format/argument anomalies. */
---
> /* Nonzero means allow Microsoft extensions without warnings or errors. */
> extern int flag_ms_extensions;
386a399,484
> /* Nonzero means don't recognize the keyword `asm'. */
>
> extern int flag_no_asm;
>
> /* Nonzero means give string constants the type `const char *', as mandated
> by the standard. */
>
> extern int flag_const_strings;
>
> /* Nonzero means `$' can be in an identifier. */
>
> extern int dollars_in_ident;
>
> /* Nonzero means to treat bitfields as signed unless they say `unsigned'. */
>
> extern int flag_signed_bitfields;
> extern int explicit_flag_signed_bitfields;
>
> /* Nonzero means warn about pointer casts that can drop a type qualifier
> from the pointer target type. */
>
> extern int warn_cast_qual;
>
> /* Warn about functions which might be candidates for format attributes. */
>
> extern int warn_missing_format_attribute;
>
> /* Nonzero means do not warn that K&R style main() is not a function prototype. */
> extern int flag_bsd_no_warn_kr_main;
>
> /* Nonzero means warn about sizeof(function) or addition/subtraction
> of function pointers. */
>
> extern int warn_pointer_arith;
>
> /* Nonzero means warn for any global function def
> without separate previous prototype decl. */
>
> extern int warn_missing_prototypes;
>
> /* Warn if adding () is suggested. */
>
> extern int warn_parentheses;
>
> /* Warn if initializer is not completely bracketed. */
>
> extern int warn_missing_braces;
>
> /* Warn about comparison of signed and unsigned values.
> If -1, neither -Wsign-compare nor -Wno-sign-compare has been specified. */
>
> extern int warn_sign_compare;
>
> /* Nonzero means warn about usage of long long when `-pedantic'. */
>
> extern int warn_long_long;
>
> /* Nonzero means warn about deprecated conversion from string constant to
> `char *'. */
>
> extern int warn_write_strings;
>
> /* Nonzero means warn about multiple (redundant) decls for the same single
> variable or function. */
>
> extern int warn_redundant_decls;
>
> /* Warn about testing equality of floating point numbers. */
>
> extern int warn_float_equal;
>
> /* Warn about a subscript that has type char. */
>
> extern int warn_char_subscripts;
>
> /* Warn if a type conversion is done that might have confusing results. */
>
> extern int warn_conversion;
>
> /* Warn about #pragma directives that are not recognized. */
>
> extern int warn_unknown_pragmas; /* Tri state variable. */
>
> /* Warn about format/argument anomalies in calls to formatted I/O functions
> (*printf, *scanf, strftime, strfmon, etc.). */
>
396a495,498
> /* Warn about zero-length formats. */
>
> extern int warn_format_zero_length;
>
405d506
< /* Warn about possible violations of sequence point rules. */
407c508
< extern int warn_sequence_point;
---
> /* C/ObjC language option variables. */
409d509
< /* Warn about functions which might be candidates for format attributes. */
411c511,512
< extern int warn_missing_format_attribute;
---
> /* Nonzero means message about use of implicit function declarations;
> 1 means warning; 2 means error. */
413c514
< /* Nonzero means do not warn that K&R style main() is not a function prototype. */
---
> extern int mesg_implicit_function_declaration;
415c516,517
< extern int flag_bsd_no_warn_kr_main;
---
> /* Nonzero means allow type mismatches in conditional expressions;
> just make their values `void'. */
417,418c519
< /* Nonzero means warn about sizeof (function) or addition/subtraction
< of function pointers. */
---
> extern int flag_cond_mismatch;
420,428d520
< extern int warn_pointer_arith;
<
< /* Nonzero means to warn about compile-time division by zero. */
< extern int warn_div_by_zero;
<
< /* Nonzero means do some things the same way PCC does. */
<
< extern int flag_traditional;
<
441c533
< /* Nonzero means environment is hosted (i.e., not freestanding) */
---
> /* Nonzero means that we have builtin functions, and main is an int */
450c542,544
< /* Nonzero means don't recognize any builtin functions. */
---
> /* Nonzero means warn when casting a function call to a type that does
> not match the return type (e.g. (float)sqrt() or (anything*)malloc()
> when there is no previous declaration of sqrt or malloc. */
452c546
< extern int flag_no_builtin;
---
> extern int warn_bad_function_cast;
454,455c548
< /* Nonzero means don't recognize the non-ANSI builtin functions.
< -ansi sets this. */
---
> /* Warn about traditional constructs whose meanings changed in ANSI C. */
457c550
< extern int flag_no_nonansi_builtin;
---
> extern int warn_traditional;
459c552,553
< /* Nonzero means warn about suggesting putting in ()'s. */
---
> /* Nonzero means warn for non-prototype function decls
> or non-prototyped defs without previous prototype. */
461c555
< extern int warn_parentheses;
---
> extern int warn_strict_prototypes;
463c557,558
< /* Warn if a type conversion is done that might have confusing results. */
---
> /* Nonzero means warn for any global function def
> without separate previous decl. */
465c560
< extern int warn_conversion;
---
> extern int warn_missing_declarations;
467,468c562,566
< /* Nonzero means warn about usage of long long,
< when `-pedantic' and not C99. */
---
> /* Nonzero means warn about extern declarations of objects not at
> file-scope level and about *all* declarations of functions (whether
> extern or static) not at file-scope level. Note that we exclude
> implicit function declarations. To get warnings about those, use
> -Wimplicit. */
470c568
< extern int warn_long_long;
---
> extern int warn_nested_externs;
471a570,822
> /* Warn if main is suspicious. */
>
> extern int warn_main;
>
> /* Nonzero means warn about possible violations of sequence point rules. */
>
> extern int warn_sequence_point;
>
> /* Nonzero means to warn about compile-time division by zero. */
> extern int warn_div_by_zero;
>
> /* Nonzero means warn about use of implicit int. */
>
> extern int warn_implicit_int;
>
> /* Warn about NULL being passed to argument slots marked as requiring
> non-NULL. */
>
> extern int warn_nonnull;
>
>
> /* ObjC language option variables. */
>
>
> /* Open and close the file for outputting class declarations, if
> requested (ObjC). */
>
> extern int flag_gen_declaration;
>
> /* Generate code for GNU or NeXT runtime environment. */
>
> extern int flag_next_runtime;
>
> /* Tells the compiler that this is a special run. Do not perform any
> compiling, instead we are to test some platform dependent features
> and output a C header file with appropriate definitions. */
>
> extern int print_struct_values;
>
> /* ???. Undocumented. */
>
> extern const char *constant_string_class_name;
>
> /* Warn if multiple methods are seen for the same selector, but with
> different argument types. Performs the check on the whole selector
> table at the end of compilation. */
>
> extern int warn_selector;
>
> /* Warn if a @selector() is found, and no method with that selector
> has been previously declared. The check is done on each
> @selector() as soon as it is found - so it warns about forward
> declarations. */
>
> extern int warn_undeclared_selector;
>
> /* Warn if methods required by a protocol are not implemented in the
> class adopting it. When turned off, methods inherited to that
> class are also considered implemented. */
>
> extern int warn_protocol;
>
>
> /* C++ language option variables. */
>
>
> /* Nonzero means don't recognize any extension keywords. */
>
> extern int flag_no_gnu_keywords;
>
> /* Nonzero means do emit exported implementations of functions even if
> they can be inlined. */
>
> extern int flag_implement_inlines;
>
> /* Nonzero means do emit exported implementations of templates, instead of
> multiple static copies in each file that needs a definition. */
>
> extern int flag_external_templates;
>
> /* Nonzero means that the decision to emit or not emit the implementation of a
> template depends on where the template is instantiated, rather than where
> it is defined. */
>
> extern int flag_alt_external_templates;
>
> /* Nonzero means that implicit instantiations will be emitted if needed. */
>
> extern int flag_implicit_templates;
>
> /* Nonzero means that implicit instantiations of inline templates will be
> emitted if needed, even if instantiations of non-inline templates
> aren't. */
>
> extern int flag_implicit_inline_templates;
>
> /* Nonzero means generate separate instantiation control files and
> juggle them at link time. */
>
> extern int flag_use_repository;
>
> /* Nonzero if we want to issue diagnostics that the standard says are not
> required. */
>
> extern int flag_optional_diags;
>
> /* Nonzero means we should attempt to elide constructors when possible. */
>
> extern int flag_elide_constructors;
>
> /* Nonzero means that member functions defined in class scope are
> inline by default. */
>
> extern int flag_default_inline;
>
> /* Controls whether compiler generates 'type descriptor' that give
> run-time type information. */
>
> extern int flag_rtti;
>
> /* Nonzero if we want to conserve space in the .o files. We do this
> by putting uninitialized data and runtime initialized data into
> .common instead of .data at the expense of not flagging multiple
> definitions. */
>
> extern int flag_conserve_space;
>
> /* Nonzero if we want to obey access control semantics. */
>
> extern int flag_access_control;
>
> /* Nonzero if we want to check the return value of new and avoid calling
> constructors if it is a null pointer. */
>
> extern int flag_check_new;
>
> /* Nonzero if we want the new ISO rules for pushing a new scope for `for'
> initialization variables.
> 0: Old rules, set by -fno-for-scope.
> 2: New ISO rules, set by -ffor-scope.
> 1: Try to implement new ISO rules, but with backup compatibility
> (and warnings). This is the default, for now. */
>
> extern int flag_new_for_scope;
>
> /* Nonzero if we want to emit defined symbols with common-like linkage as
> weak symbols where possible, in order to conform to C++ semantics.
> Otherwise, emit them as local symbols. */
>
> extern int flag_weak;
>
> /* Nonzero to use __cxa_atexit, rather than atexit, to register
> destructors for local statics and global objects. */
>
> extern int flag_use_cxa_atexit;
>
> /* Nonzero means output .vtable_{entry,inherit} for use in doing vtable gc. */
>
> extern int flag_vtable_gc;
>
> /* Nonzero means make the default pedwarns warnings instead of errors.
> The value of this flag is ignored if -pedantic is specified. */
>
> extern int flag_permissive;
>
> /* Nonzero means to implement standard semantics for exception
> specifications, calling unexpected if an exception is thrown that
> doesn't match the specification. Zero means to treat them as
> assertions and optimize accordingly, but not check them. */
>
> extern int flag_enforce_eh_specs;
>
> /* The version of the C++ ABI in use. The following values are
> allowed:
>
> 0: The version of the ABI believed most conformant with the
> C++ ABI specification. This ABI may change as bugs are
> discovered and fixed. Therefore, 0 will not necessarily
> indicate the same ABI in different versions of G++.
>
> 1: The version of the ABI first used in G++ 3.2.
>
> Additional positive integers will be assigned as new versions of
> the ABI become the default version of the ABI. */
>
> extern int flag_abi_version;
>
> /* Nonzero means warn about things that will change when compiling
> with an ABI-compliant compiler. */
>
> extern int warn_abi;
>
> /* Nonzero means warn about implicit declarations. */
>
> extern int warn_implicit;
>
> /* Nonzero means warn when all ctors or dtors are private, and the class
> has no friends. */
>
> extern int warn_ctor_dtor_privacy;
>
> /* Nonzero means warn in function declared in derived class has the
> same name as a virtual in the base class, but fails to match the
> type signature of any virtual function in the base class. */
>
> extern int warn_overloaded_virtual;
>
> /* Nonzero means warn when declaring a class that has a non virtual
> destructor, when it really ought to have a virtual one. */
>
> extern int warn_nonvdtor;
>
> /* Nonzero means warn when the compiler will reorder code. */
>
> extern int warn_reorder;
>
> /* Nonzero means warn when synthesis behavior differs from Cfront's. */
>
> extern int warn_synth;
>
> /* Nonzero means warn when we convert a pointer to member function
> into a pointer to (void or function). */
>
> extern int warn_pmf2ptr;
>
> /* Nonzero means warn about violation of some Effective C++ style rules. */
>
> extern int warn_ecpp;
>
> /* Nonzero means warn where overload resolution chooses a promotion from
> unsigned to signed over a conversion to an unsigned of the same size. */
>
> extern int warn_sign_promo;
>
> /* Nonzero means warn when an old-style cast is used. */
>
> extern int warn_old_style_cast;
>
> /* Nonzero means warn when non-templatized friend functions are
> declared within a template */
>
> extern int warn_nontemplate_friend;
>
> /* Nonzero means complain about deprecated features. */
>
> extern int warn_deprecated;
>
> /* Maximum template instantiation depth. This limit is rather
> arbitrary, but it exists to limit the time it takes to notice
> infinite template instantiations. */
>
> extern int max_tinst_depth;
>
496a848,851
> /* Attribute table common to the C front ends. */
> extern const struct attribute_spec c_common_attribute_table[];
> extern const struct attribute_spec c_common_format_attribute_table[];
>
513a869,874
> extern void check_function_arguments PARAMS ((tree, tree));
> extern void check_function_arguments_recurse PARAMS ((void (*) (void *,
> tree,
> unsigned HOST_WIDE_INT),
> void *, tree,
> unsigned HOST_WIDE_INT));
520a882,889
> extern int c_common_decode_option PARAMS ((int, char **));
> extern tree c_common_type_for_mode PARAMS ((enum machine_mode,
> int));
> extern tree c_common_type_for_size PARAMS ((unsigned int, int));
> extern tree c_common_unsigned_type PARAMS ((tree));
> extern tree c_common_signed_type PARAMS ((tree));
> extern tree c_common_signed_or_unsigned_type PARAMS ((int, tree));
> extern tree c_common_truthvalue_conversion PARAMS ((tree));
522,523c891
< extern tree c_sizeof PARAMS ((tree));
< extern tree c_alignof PARAMS ((tree));
---
> extern tree c_sizeof_or_alignof_type PARAMS ((tree, enum tree_code, int));
527a896,898
> #define my_friendly_assert(EXP, N) (void) \
> (((EXP) == 0) ? (fancy_abort (__FILE__, __LINE__, __FUNCTION__), 0) : 0)
>
532c903
< extern void c_finish_else PARAMS ((void));
---
> extern void c_finish_else PARAMS ((void));
536,537c907,909
< /* Concatenate a list of STRING_CST nodes into one STRING_CST. */
< extern tree combine_strings PARAMS ((tree));
---
> extern tree fix_string_type PARAMS ((tree));
> struct varray_head_tag;
> extern tree combine_strings PARAMS ((struct varray_head_tag *));
545a918,919
> #define c_sizeof(T) c_sizeof_or_alignof_type (T, SIZEOF_EXPR, 1)
> #define c_alignof(T) c_sizeof_or_alignof_type (T, ALIGNOF_EXPR, 1)
567c941
< extern void c_common_post_options PARAMS ((void));
---
> extern bool c_common_post_options PARAMS ((void));
569a944
> extern void c_common_parse_file PARAMS ((int));
573d947
< extern tree simple_type_promotes_to PARAMS ((tree));
604c978
< #define RETURN_EXPR(NODE) TREE_OPERAND (RETURN_STMT_CHECK (NODE), 0)
---
> #define RETURN_STMT_EXPR(NODE) TREE_OPERAND (RETURN_STMT_CHECK (NODE), 0)
734c1108
< /* If non-zero, the STMT_LINENO for NODE is the line at which the
---
> /* If nonzero, the STMT_LINENO for NODE is the line at which the
757d1130
< extern void add_c_tree_codes PARAMS ((void));
843,844d1215
< extern void mark_c_language_function PARAMS ((struct language_function *));
<
860c1231,1233
< /* enum expand_modified is in expr.h, as is the macro below. */
---
> extern rtx c_expand_expr PARAMS ((tree, rtx,
> enum machine_mode,
> int));
862,866d1234
< #ifdef QUEUED_VAR
< extern rtx c_expand_expr PARAMS ((tree, rtx, enum machine_mode,
< enum expand_modifier));
< #endif
<
871c1239
< extern int c_unsafe_for_reeval PARAMS ((tree));
---
> extern int c_common_unsafe_for_reeval PARAMS ((tree));
872a1241,1244
> extern const char *init_c_lex PARAMS ((const char *));
>
> extern void cb_register_builtins PARAMS ((cpp_reader *));
>
884a1257,1258
> extern int c_dump_tree PARAMS ((void *, tree));
>
< /* $FreeBSD: head/contrib/gcc/c-common.h 110622 2003-02-10 05:58:19Z kan $ */
<
48c46
< C++, and Objective C. All the type modifiers have to be in one
---
> C++, and Objective-C. All the type modifiers have to be in one
63c61
< RID_BOUNDED, RID_UNBOUNDED, RID_COMPLEX,
---
> RID_BOUNDED, RID_UNBOUNDED, RID_COMPLEX, RID_THREAD,
98,103c96
< /* alternate spellings */
< RID_AND, RID_AND_EQ, RID_NOT, RID_NOT_EQ,
< RID_OR, RID_OR_EQ, RID_XOR, RID_XOR_EQ,
< RID_BITAND, RID_BITOR, RID_COMPL,
<
< /* Objective C */
---
> /* Objective-C */
184c177
< struct c_common_identifier
---
> struct c_common_identifier GTY(())
187c180
< struct cpp_hashnode node;
---
> struct cpp_hashnode GTY ((skip (""))) node;
231c224
< extern tree c_global_trees[CTI_MAX];
---
> extern GTY(()) tree c_global_trees[CTI_MAX];
243,246c236,237
< clk_c, /* A dialect of C: K&R C, ANSI/ISO C89, C2000,
< etc. */
< clk_cplusplus, /* ANSI/ISO C++ */
< clk_objective_c /* Objective C */
---
> clk_c = 0, /* A dialect of C: K&R C, ANSI/ISO C89, C2000, etc. */
> clk_cplusplus /* ANSI/ISO C++ */
252c243
< struct stmt_tree_s {
---
> struct stmt_tree_s GTY(()) {
260c251
< /* In C++, Non-zero if we should treat statements as full
---
> /* In C++, Nonzero if we should treat statements as full
265c256
< variable is non-zero, since those are the normal semantics of
---
> variable is nonzero, since those are the normal semantics of
282c273
< struct language_function {
---
> struct c_language_function GTY(()) {
320a312
> extern tree gettags PARAMS ((void));
325a318,319
> extern int yyparse PARAMS ((void));
> extern void free_parser_stacks PARAMS ((void));
341d334
< extern void mark_stmt_tree PARAMS ((void *));
354c347
< struct c_lang_decl {
---
> struct c_lang_decl GTY(()) {
365,366d357
< extern void c_mark_lang_decl PARAMS ((struct c_lang_decl *));
<
372,373c363
< /* Nonzero means give string constants the type `const char *', rather
< than `char *'. */
---
> /* Switches common to the C front ends. */
375c365,366
< extern int flag_const_strings;
---
> /* Nonzero if prepreprocessing only. */
> extern int flag_preprocess_only;
376a368,387
> /* Nonzero if an ISO standard was selected. It rejects macros in the
> user's namespace. */
> extern int flag_iso;
>
> /* Nonzero whenever Objective-C functionality is being used. */
> extern int flag_objc;
>
> /* Nonzero if -undef was given. It suppresses target built-in macros
> and assertions. */
> extern int flag_undef;
>
> /* Nonzero means don't recognize the non-ANSI builtin functions. */
>
> extern int flag_no_builtin;
>
> /* Nonzero means don't recognize the non-ANSI builtin functions.
> -ansi sets this. */
>
> extern int flag_no_nonansi_builtin;
>
385c396,397
< /* Warn about *printf or *scanf format/argument anomalies. */
---
> /* Nonzero means allow Microsoft extensions without warnings or errors. */
> extern int flag_ms_extensions;
386a399,484
> /* Nonzero means don't recognize the keyword `asm'. */
>
> extern int flag_no_asm;
>
> /* Nonzero means give string constants the type `const char *', as mandated
> by the standard. */
>
> extern int flag_const_strings;
>
> /* Nonzero means `$' can be in an identifier. */
>
> extern int dollars_in_ident;
>
> /* Nonzero means to treat bitfields as signed unless they say `unsigned'. */
>
> extern int flag_signed_bitfields;
> extern int explicit_flag_signed_bitfields;
>
> /* Nonzero means warn about pointer casts that can drop a type qualifier
> from the pointer target type. */
>
> extern int warn_cast_qual;
>
> /* Warn about functions which might be candidates for format attributes. */
>
> extern int warn_missing_format_attribute;
>
> /* Nonzero means do not warn that K&R style main() is not a function prototype. */
> extern int flag_bsd_no_warn_kr_main;
>
> /* Nonzero means warn about sizeof(function) or addition/subtraction
> of function pointers. */
>
> extern int warn_pointer_arith;
>
> /* Nonzero means warn for any global function def
> without separate previous prototype decl. */
>
> extern int warn_missing_prototypes;
>
> /* Warn if adding () is suggested. */
>
> extern int warn_parentheses;
>
> /* Warn if initializer is not completely bracketed. */
>
> extern int warn_missing_braces;
>
> /* Warn about comparison of signed and unsigned values.
> If -1, neither -Wsign-compare nor -Wno-sign-compare has been specified. */
>
> extern int warn_sign_compare;
>
> /* Nonzero means warn about usage of long long when `-pedantic'. */
>
> extern int warn_long_long;
>
> /* Nonzero means warn about deprecated conversion from string constant to
> `char *'. */
>
> extern int warn_write_strings;
>
> /* Nonzero means warn about multiple (redundant) decls for the same single
> variable or function. */
>
> extern int warn_redundant_decls;
>
> /* Warn about testing equality of floating point numbers. */
>
> extern int warn_float_equal;
>
> /* Warn about a subscript that has type char. */
>
> extern int warn_char_subscripts;
>
> /* Warn if a type conversion is done that might have confusing results. */
>
> extern int warn_conversion;
>
> /* Warn about #pragma directives that are not recognized. */
>
> extern int warn_unknown_pragmas; /* Tri state variable. */
>
> /* Warn about format/argument anomalies in calls to formatted I/O functions
> (*printf, *scanf, strftime, strfmon, etc.). */
>
396a495,498
> /* Warn about zero-length formats. */
>
> extern int warn_format_zero_length;
>
405d506
< /* Warn about possible violations of sequence point rules. */
407c508
< extern int warn_sequence_point;
---
> /* C/ObjC language option variables. */
409d509
< /* Warn about functions which might be candidates for format attributes. */
411c511,512
< extern int warn_missing_format_attribute;
---
> /* Nonzero means message about use of implicit function declarations;
> 1 means warning; 2 means error. */
413c514
< /* Nonzero means do not warn that K&R style main() is not a function prototype. */
---
> extern int mesg_implicit_function_declaration;
415c516,517
< extern int flag_bsd_no_warn_kr_main;
---
> /* Nonzero means allow type mismatches in conditional expressions;
> just make their values `void'. */
417,418c519
< /* Nonzero means warn about sizeof (function) or addition/subtraction
< of function pointers. */
---
> extern int flag_cond_mismatch;
420,428d520
< extern int warn_pointer_arith;
<
< /* Nonzero means to warn about compile-time division by zero. */
< extern int warn_div_by_zero;
<
< /* Nonzero means do some things the same way PCC does. */
<
< extern int flag_traditional;
<
441c533
< /* Nonzero means environment is hosted (i.e., not freestanding) */
---
> /* Nonzero means that we have builtin functions, and main is an int */
450c542,544
< /* Nonzero means don't recognize any builtin functions. */
---
> /* Nonzero means warn when casting a function call to a type that does
> not match the return type (e.g. (float)sqrt() or (anything*)malloc()
> when there is no previous declaration of sqrt or malloc. */
452c546
< extern int flag_no_builtin;
---
> extern int warn_bad_function_cast;
454,455c548
< /* Nonzero means don't recognize the non-ANSI builtin functions.
< -ansi sets this. */
---
> /* Warn about traditional constructs whose meanings changed in ANSI C. */
457c550
< extern int flag_no_nonansi_builtin;
---
> extern int warn_traditional;
459c552,553
< /* Nonzero means warn about suggesting putting in ()'s. */
---
> /* Nonzero means warn for non-prototype function decls
> or non-prototyped defs without previous prototype. */
461c555
< extern int warn_parentheses;
---
> extern int warn_strict_prototypes;
463c557,558
< /* Warn if a type conversion is done that might have confusing results. */
---
> /* Nonzero means warn for any global function def
> without separate previous decl. */
465c560
< extern int warn_conversion;
---
> extern int warn_missing_declarations;
467,468c562,566
< /* Nonzero means warn about usage of long long,
< when `-pedantic' and not C99. */
---
> /* Nonzero means warn about extern declarations of objects not at
> file-scope level and about *all* declarations of functions (whether
> extern or static) not at file-scope level. Note that we exclude
> implicit function declarations. To get warnings about those, use
> -Wimplicit. */
470c568
< extern int warn_long_long;
---
> extern int warn_nested_externs;
471a570,822
> /* Warn if main is suspicious. */
>
> extern int warn_main;
>
> /* Nonzero means warn about possible violations of sequence point rules. */
>
> extern int warn_sequence_point;
>
> /* Nonzero means to warn about compile-time division by zero. */
> extern int warn_div_by_zero;
>
> /* Nonzero means warn about use of implicit int. */
>
> extern int warn_implicit_int;
>
> /* Warn about NULL being passed to argument slots marked as requiring
> non-NULL. */
>
> extern int warn_nonnull;
>
>
> /* ObjC language option variables. */
>
>
> /* Open and close the file for outputting class declarations, if
> requested (ObjC). */
>
> extern int flag_gen_declaration;
>
> /* Generate code for GNU or NeXT runtime environment. */
>
> extern int flag_next_runtime;
>
> /* Tells the compiler that this is a special run. Do not perform any
> compiling, instead we are to test some platform dependent features
> and output a C header file with appropriate definitions. */
>
> extern int print_struct_values;
>
> /* ???. Undocumented. */
>
> extern const char *constant_string_class_name;
>
> /* Warn if multiple methods are seen for the same selector, but with
> different argument types. Performs the check on the whole selector
> table at the end of compilation. */
>
> extern int warn_selector;
>
> /* Warn if a @selector() is found, and no method with that selector
> has been previously declared. The check is done on each
> @selector() as soon as it is found - so it warns about forward
> declarations. */
>
> extern int warn_undeclared_selector;
>
> /* Warn if methods required by a protocol are not implemented in the
> class adopting it. When turned off, methods inherited to that
> class are also considered implemented. */
>
> extern int warn_protocol;
>
>
> /* C++ language option variables. */
>
>
> /* Nonzero means don't recognize any extension keywords. */
>
> extern int flag_no_gnu_keywords;
>
> /* Nonzero means do emit exported implementations of functions even if
> they can be inlined. */
>
> extern int flag_implement_inlines;
>
> /* Nonzero means do emit exported implementations of templates, instead of
> multiple static copies in each file that needs a definition. */
>
> extern int flag_external_templates;
>
> /* Nonzero means that the decision to emit or not emit the implementation of a
> template depends on where the template is instantiated, rather than where
> it is defined. */
>
> extern int flag_alt_external_templates;
>
> /* Nonzero means that implicit instantiations will be emitted if needed. */
>
> extern int flag_implicit_templates;
>
> /* Nonzero means that implicit instantiations of inline templates will be
> emitted if needed, even if instantiations of non-inline templates
> aren't. */
>
> extern int flag_implicit_inline_templates;
>
> /* Nonzero means generate separate instantiation control files and
> juggle them at link time. */
>
> extern int flag_use_repository;
>
> /* Nonzero if we want to issue diagnostics that the standard says are not
> required. */
>
> extern int flag_optional_diags;
>
> /* Nonzero means we should attempt to elide constructors when possible. */
>
> extern int flag_elide_constructors;
>
> /* Nonzero means that member functions defined in class scope are
> inline by default. */
>
> extern int flag_default_inline;
>
> /* Controls whether compiler generates 'type descriptor' that give
> run-time type information. */
>
> extern int flag_rtti;
>
> /* Nonzero if we want to conserve space in the .o files. We do this
> by putting uninitialized data and runtime initialized data into
> .common instead of .data at the expense of not flagging multiple
> definitions. */
>
> extern int flag_conserve_space;
>
> /* Nonzero if we want to obey access control semantics. */
>
> extern int flag_access_control;
>
> /* Nonzero if we want to check the return value of new and avoid calling
> constructors if it is a null pointer. */
>
> extern int flag_check_new;
>
> /* Nonzero if we want the new ISO rules for pushing a new scope for `for'
> initialization variables.
> 0: Old rules, set by -fno-for-scope.
> 2: New ISO rules, set by -ffor-scope.
> 1: Try to implement new ISO rules, but with backup compatibility
> (and warnings). This is the default, for now. */
>
> extern int flag_new_for_scope;
>
> /* Nonzero if we want to emit defined symbols with common-like linkage as
> weak symbols where possible, in order to conform to C++ semantics.
> Otherwise, emit them as local symbols. */
>
> extern int flag_weak;
>
> /* Nonzero to use __cxa_atexit, rather than atexit, to register
> destructors for local statics and global objects. */
>
> extern int flag_use_cxa_atexit;
>
> /* Nonzero means output .vtable_{entry,inherit} for use in doing vtable gc. */
>
> extern int flag_vtable_gc;
>
> /* Nonzero means make the default pedwarns warnings instead of errors.
> The value of this flag is ignored if -pedantic is specified. */
>
> extern int flag_permissive;
>
> /* Nonzero means to implement standard semantics for exception
> specifications, calling unexpected if an exception is thrown that
> doesn't match the specification. Zero means to treat them as
> assertions and optimize accordingly, but not check them. */
>
> extern int flag_enforce_eh_specs;
>
> /* The version of the C++ ABI in use. The following values are
> allowed:
>
> 0: The version of the ABI believed most conformant with the
> C++ ABI specification. This ABI may change as bugs are
> discovered and fixed. Therefore, 0 will not necessarily
> indicate the same ABI in different versions of G++.
>
> 1: The version of the ABI first used in G++ 3.2.
>
> Additional positive integers will be assigned as new versions of
> the ABI become the default version of the ABI. */
>
> extern int flag_abi_version;
>
> /* Nonzero means warn about things that will change when compiling
> with an ABI-compliant compiler. */
>
> extern int warn_abi;
>
> /* Nonzero means warn about implicit declarations. */
>
> extern int warn_implicit;
>
> /* Nonzero means warn when all ctors or dtors are private, and the class
> has no friends. */
>
> extern int warn_ctor_dtor_privacy;
>
> /* Nonzero means warn in function declared in derived class has the
> same name as a virtual in the base class, but fails to match the
> type signature of any virtual function in the base class. */
>
> extern int warn_overloaded_virtual;
>
> /* Nonzero means warn when declaring a class that has a non virtual
> destructor, when it really ought to have a virtual one. */
>
> extern int warn_nonvdtor;
>
> /* Nonzero means warn when the compiler will reorder code. */
>
> extern int warn_reorder;
>
> /* Nonzero means warn when synthesis behavior differs from Cfront's. */
>
> extern int warn_synth;
>
> /* Nonzero means warn when we convert a pointer to member function
> into a pointer to (void or function). */
>
> extern int warn_pmf2ptr;
>
> /* Nonzero means warn about violation of some Effective C++ style rules. */
>
> extern int warn_ecpp;
>
> /* Nonzero means warn where overload resolution chooses a promotion from
> unsigned to signed over a conversion to an unsigned of the same size. */
>
> extern int warn_sign_promo;
>
> /* Nonzero means warn when an old-style cast is used. */
>
> extern int warn_old_style_cast;
>
> /* Nonzero means warn when non-templatized friend functions are
> declared within a template */
>
> extern int warn_nontemplate_friend;
>
> /* Nonzero means complain about deprecated features. */
>
> extern int warn_deprecated;
>
> /* Maximum template instantiation depth. This limit is rather
> arbitrary, but it exists to limit the time it takes to notice
> infinite template instantiations. */
>
> extern int max_tinst_depth;
>
496a848,851
> /* Attribute table common to the C front ends. */
> extern const struct attribute_spec c_common_attribute_table[];
> extern const struct attribute_spec c_common_format_attribute_table[];
>
513a869,874
> extern void check_function_arguments PARAMS ((tree, tree));
> extern void check_function_arguments_recurse PARAMS ((void (*) (void *,
> tree,
> unsigned HOST_WIDE_INT),
> void *, tree,
> unsigned HOST_WIDE_INT));
520a882,889
> extern int c_common_decode_option PARAMS ((int, char **));
> extern tree c_common_type_for_mode PARAMS ((enum machine_mode,
> int));
> extern tree c_common_type_for_size PARAMS ((unsigned int, int));
> extern tree c_common_unsigned_type PARAMS ((tree));
> extern tree c_common_signed_type PARAMS ((tree));
> extern tree c_common_signed_or_unsigned_type PARAMS ((int, tree));
> extern tree c_common_truthvalue_conversion PARAMS ((tree));
522,523c891
< extern tree c_sizeof PARAMS ((tree));
< extern tree c_alignof PARAMS ((tree));
---
> extern tree c_sizeof_or_alignof_type PARAMS ((tree, enum tree_code, int));
527a896,898
> #define my_friendly_assert(EXP, N) (void) \
> (((EXP) == 0) ? (fancy_abort (__FILE__, __LINE__, __FUNCTION__), 0) : 0)
>
532c903
< extern void c_finish_else PARAMS ((void));
---
> extern void c_finish_else PARAMS ((void));
536,537c907,909
< /* Concatenate a list of STRING_CST nodes into one STRING_CST. */
< extern tree combine_strings PARAMS ((tree));
---
> extern tree fix_string_type PARAMS ((tree));
> struct varray_head_tag;
> extern tree combine_strings PARAMS ((struct varray_head_tag *));
545a918,919
> #define c_sizeof(T) c_sizeof_or_alignof_type (T, SIZEOF_EXPR, 1)
> #define c_alignof(T) c_sizeof_or_alignof_type (T, ALIGNOF_EXPR, 1)
567c941
< extern void c_common_post_options PARAMS ((void));
---
> extern bool c_common_post_options PARAMS ((void));
569a944
> extern void c_common_parse_file PARAMS ((int));
573d947
< extern tree simple_type_promotes_to PARAMS ((tree));
604c978
< #define RETURN_EXPR(NODE) TREE_OPERAND (RETURN_STMT_CHECK (NODE), 0)
---
> #define RETURN_STMT_EXPR(NODE) TREE_OPERAND (RETURN_STMT_CHECK (NODE), 0)
734c1108
< /* If non-zero, the STMT_LINENO for NODE is the line at which the
---
> /* If nonzero, the STMT_LINENO for NODE is the line at which the
757d1130
< extern void add_c_tree_codes PARAMS ((void));
843,844d1215
< extern void mark_c_language_function PARAMS ((struct language_function *));
<
860c1231,1233
< /* enum expand_modified is in expr.h, as is the macro below. */
---
> extern rtx c_expand_expr PARAMS ((tree, rtx,
> enum machine_mode,
> int));
862,866d1234
< #ifdef QUEUED_VAR
< extern rtx c_expand_expr PARAMS ((tree, rtx, enum machine_mode,
< enum expand_modifier));
< #endif
<
871c1239
< extern int c_unsafe_for_reeval PARAMS ((tree));
---
> extern int c_common_unsafe_for_reeval PARAMS ((tree));
872a1241,1244
> extern const char *init_c_lex PARAMS ((const char *));
>
> extern void cb_register_builtins PARAMS ((cpp_reader *));
>
884a1257,1258
> extern int c_dump_tree PARAMS ((void *, tree));
>