X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gcc%2Fc-common.h;h=00d5d5c18d451cc62d7c185215b97a0e7cfc7464;hb=57782ad852862c891585dbafea03ef854790e89b;hp=fd7ce4aef758c0012ad2c2a1757d1d2c89cc05ce;hpb=d07605f5703529578edb1c65369fba38ddbff327;p=platform%2Fupstream%2Fgcc.git diff --git a/gcc/c-common.h b/gcc/c-common.h index fd7ce4a..00d5d5c 100644 --- a/gcc/c-common.h +++ b/gcc/c-common.h @@ -1,6 +1,6 @@ /* Definitions for c-common.c. Copyright (C) 1987, 1993, 1994, 1995, 1997, 1998, - 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GCC. @@ -40,6 +40,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA 2: STMT_LINENO_FOR_FN_P (in _STMT) 3: SCOPE_NO_CLEANUPS_P (in SCOPE_STMT) COMPOUND_STMT_BODY_BLOCK (in COMPOUND_STMT) + STMT_EXPR_WARN_UNUSED_RESULT (in STMT_EXPR) 4: SCOPE_PARTIAL_P (in SCOPE_STMT) */ @@ -87,9 +88,10 @@ enum rid RID_PUBLIC, RID_PRIVATE, RID_PROTECTED, RID_TEMPLATE, RID_NULL, RID_CATCH, RID_DELETE, RID_FALSE, RID_NAMESPACE, - RID_NEW, RID_OPERATOR, RID_THIS, - RID_THROW, RID_TRUE, RID_TRY, - RID_TYPENAME, RID_TYPEID, RID_USING, + RID_NEW, RID_OFFSETOF, RID_OPERATOR, + RID_THIS, RID_THROW, RID_TRUE, + RID_TRY, RID_TYPENAME, RID_TYPEID, + RID_USING, /* casts */ RID_CONSTCAST, RID_DYNCAST, RID_REINTCAST, RID_STATCAST, @@ -98,7 +100,10 @@ enum rid RID_ID, RID_AT_ENCODE, RID_AT_END, RID_AT_CLASS, RID_AT_ALIAS, RID_AT_DEFS, RID_AT_PRIVATE, RID_AT_PROTECTED, RID_AT_PUBLIC, - RID_AT_PROTOCOL, RID_AT_SELECTOR, RID_AT_INTERFACE, + RID_AT_PROTOCOL, RID_AT_SELECTOR, + RID_AT_THROW, RID_AT_TRY, RID_AT_CATCH, + RID_AT_FINALLY, RID_AT_SYNCHRONIZED, + RID_AT_INTERFACE, RID_AT_IMPLEMENTATION, RID_MAX, @@ -146,13 +151,10 @@ enum c_tree_index CTI_CONST_STRING_TYPE, /* Type for boolean expressions (bool in C++, int in C). */ - CTI_BOOLEAN_TYPE, - CTI_BOOLEAN_TRUE, - CTI_BOOLEAN_FALSE, - /* C99's _Bool type. */ - CTI_C_BOOL_TYPE, - CTI_C_BOOL_TRUE, - CTI_C_BOOL_FALSE, + CTI_TRUTHVALUE_TYPE, + CTI_TRUTHVALUE_TRUE, + CTI_TRUTHVALUE_FALSE, + CTI_DEFAULT_FUNCTION_TYPE, CTI_G77_INTEGER_TYPE, @@ -192,13 +194,9 @@ struct c_common_identifier GTY(()) #define widest_integer_literal_type_node c_global_trees[CTI_WIDEST_INT_LIT_TYPE] #define widest_unsigned_literal_type_node c_global_trees[CTI_WIDEST_UINT_LIT_TYPE] -#define boolean_type_node c_global_trees[CTI_BOOLEAN_TYPE] -#define boolean_true_node c_global_trees[CTI_BOOLEAN_TRUE] -#define boolean_false_node c_global_trees[CTI_BOOLEAN_FALSE] - -#define c_bool_type_node c_global_trees[CTI_C_BOOL_TYPE] -#define c_bool_true_node c_global_trees[CTI_C_BOOL_TRUE] -#define c_bool_false_node c_global_trees[CTI_C_BOOL_FALSE] +#define truthvalue_type_node c_global_trees[CTI_TRUTHVALUE_TYPE] +#define truthvalue_true_node c_global_trees[CTI_TRUTHVALUE_TRUE] +#define truthvalue_false_node c_global_trees[CTI_TRUTHVALUE_FALSE] #define char_array_type_node c_global_trees[CTI_CHAR_ARRAY_TYPE] #define wchar_array_type_node c_global_trees[CTI_WCHAR_ARRAY_TYPE] @@ -208,7 +206,7 @@ struct c_common_identifier GTY(()) #define default_function_type c_global_trees[CTI_DEFAULT_FUNCTION_TYPE] -/* g77 integer types, which which must be kept in sync with f/com.h */ +/* g77 integer types, which must be kept in sync with f/com.h */ #define g77_integer_type_node c_global_trees[CTI_G77_INTEGER_TYPE] #define g77_uinteger_type_node c_global_trees[CTI_G77_UINTEGER_TYPE] #define g77_longint_type_node c_global_trees[CTI_G77_LONGINT_TYPE] @@ -224,7 +222,8 @@ struct c_common_identifier GTY(()) extern GTY(()) tree c_global_trees[CTI_MAX]; -/* In a RECORD_TYPE, a sorted array of the fields of the type, not a tree for size reasons. */ +/* In a RECORD_TYPE, a sorted array of the fields of the type, not a + tree for size reasons. */ struct sorted_fields_type GTY(()) { int len; @@ -325,15 +324,12 @@ struct c_language_function GTY(()) { extern void (*lang_expand_stmt) (tree); extern void (*lang_expand_decl_stmt) (tree); extern void (*lang_expand_function_end) (void); -extern tree gettags (void); /* Callback that determines if it's ok for a function to have no noreturn attribute. */ extern int (*lang_missing_noreturn_ok_p) (tree); extern int yyparse (void); -extern void free_parser_stacks (void); - extern stmt_tree current_stmt_tree (void); extern tree *current_scope_stmt_stack (void); extern void begin_stmt_tree (tree *); @@ -349,31 +345,9 @@ extern tree c_begin_if_stmt (void); extern tree c_begin_while_stmt (void); extern void c_finish_while_stmt_cond (tree, tree); -enum sw_kind { SW_PARAM = 0, SW_LOCAL, SW_GLOBAL }; -extern void shadow_warning (enum sw_kind, const char *, tree); extern int field_decl_cmp (const void *, const void *); extern void resort_sorted_fields (void *, void *, gt_pointer_operator, void *); - -/* Extra information associated with a DECL. Other C dialects extend - this structure in various ways. The C front-end only uses this - structure for FUNCTION_DECLs; all other DECLs have a NULL - DECL_LANG_SPECIFIC field. */ - -struct c_lang_decl GTY(()) { - unsigned declared_inline : 1; -}; - -/* In a FUNCTION_DECL for which DECL_BUILT_IN does not hold, this is - the approximate number of statements in this function. There is - no need for this number to be exact; it is only used in various - heuristics regarding optimization. */ -#define DECL_ESTIMATED_INSNS(NODE) \ - (FUNCTION_DECL_CHECK (NODE)->decl.u1.i) - -/* Nonzero if we can read a PCH file now. */ - -extern int allow_pch; /* Switches common to the C front ends. */ @@ -381,6 +355,25 @@ extern int allow_pch; extern int flag_preprocess_only; +/* Zero means that faster, ...NonNil variants of objc_msgSend... + calls will be used in ObjC; passing nil receivers to such calls + will most likely result in crashes. */ +extern int flag_nil_receivers; + +/* Nonzero means that we will allow new ObjC exception syntax (@throw, + @try, etc.) in source code. */ +extern int flag_objc_exceptions; + +/* Nonzero means that code generation will be altered to support + "zero-link" execution. This currently affects ObjC only, but may + affect other languages in the future. */ +extern int flag_zero_link; + +/* Nonzero means emit an '__OBJC, __image_info' for the current translation + unit. It will inform the ObjC runtime that class definition(s) herein + contained are to replace one(s) previously loaded. */ +extern int flag_replace_objc_classes; + /* Nonzero means don't output line number information. */ extern char flag_no_line_commands; @@ -557,15 +550,10 @@ extern int flag_isoc94; extern int flag_isoc99; -/* Nonzero means that we have builtin functions, and main is an int */ +/* Nonzero means that we have builtin functions, and main is an int. */ extern int flag_hosted; -/* Nonzero means add default format_arg attributes for functions not - in ISO C. */ - -extern int flag_noniso_default_format_attributes; - /* 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. */ @@ -576,6 +564,10 @@ extern int warn_bad_function_cast; extern int warn_traditional; +/* Nonzero means warn for a declaration found after a statement. */ + +extern int warn_declaration_after_statement; + /* Nonzero means warn for non-prototype function decls or non-prototyped defs without previous prototype. */ @@ -602,6 +594,12 @@ extern int warn_main; extern int warn_sequence_point; +/* Nonzero means warn about uninitialized variable when it is initialized with itself. + For example: int i = i;, GCC will not warn about this when warn_init_self is nonzero. */ + +extern int warn_init_self; + + /* Nonzero means to warn about compile-time division by zero. */ extern int warn_div_by_zero; @@ -614,6 +612,10 @@ extern int warn_implicit_int; extern int warn_nonnull; +/* Warn about old-style parameter declaration. */ + +extern int warn_old_style_definition; + /* ObjC language option variables. */ @@ -669,17 +671,6 @@ extern int flag_no_gnu_keywords; 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; @@ -745,15 +736,18 @@ extern int flag_new_for_scope; extern int flag_weak; +/* 0 means we want the preprocessor to not emit line directives for + the current working directory. 1 means we want it to do it. -1 + means we should decide depending on whether debugging information + is being emitted or not. */ + +extern int flag_working_directory; + /* 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. */ @@ -766,21 +760,6 @@ extern int flag_permissive; 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. */ @@ -905,9 +884,7 @@ extern void check_function_format (int *, tree, tree); extern void set_Wformat (int); extern tree handle_format_attribute (tree *, tree, tree, int, bool *); extern tree handle_format_arg_attribute (tree *, tree, tree, int, bool *); -extern void c_common_insert_default_attributes (tree); extern int c_common_handle_option (size_t code, const char *arg, int value); -extern void c_common_handle_filename (const char *filename); extern bool c_common_missing_argument (const char *opt, size_t code); extern tree c_common_type_for_mode (enum machine_mode, int); extern tree c_common_type_for_size (unsigned int, int); @@ -939,9 +916,6 @@ extern tree convert_and_check (tree, tree); extern void overflow_warning (tree); extern void unsigned_conversion_warning (tree, tree); -/* Read the rest of the current #-directive line. */ -extern char *get_directive_line (void); -#define GET_DIRECTIVE_LINE() get_directive_line () #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) @@ -970,9 +944,11 @@ extern bool c_common_init (void); extern void c_common_finish (void); extern void c_common_parse_file (int); extern HOST_WIDE_INT c_common_get_alias_set (tree); +extern void c_register_builtin_type (tree, const char*); extern bool c_promoting_integer_type_p (tree); extern int self_promoting_args_p (tree); extern tree strip_array_types (tree); +extern tree strip_pointer_operator (tree); /* This function resets the parsers' state in preparation for parsing a new file. */ @@ -1070,6 +1046,11 @@ extern void finish_file (void); #define STMT_EXPR_NO_SCOPE(NODE) \ TREE_LANG_FLAG_0 (STMT_EXPR_CHECK (NODE)) +/* Nonzero if this statement-expression should cause warning if its result + is not used. */ +#define STMT_EXPR_WARN_UNUSED_RESULT(NODE) \ + TREE_LANG_FLAG_3 (STMT_EXPR_CHECK (NODE)) + /* LABEL_STMT accessor. This gives access to the label associated with the given label statement. */ #define LABEL_STMT_LABEL(NODE) TREE_OPERAND (LABEL_STMT_CHECK (NODE), 0) @@ -1239,7 +1220,7 @@ extern tree build_return_stmt (tree); initializers and cleanups. */ #define COMPOUND_STMT_BODY_BLOCK(NODE) TREE_LANG_FLAG_3 (NODE) -extern void c_expand_asm_operands (tree, tree, tree, tree, int, const char *, int); +extern void c_expand_asm_operands (tree, tree, tree, tree, int, location_t); /* These functions must be defined by each front-end which implements a variant of the C language. They are used in c-common.c. */ @@ -1277,7 +1258,7 @@ extern tree finish_label_address_expr (tree); different implementations. Used in c-common.c. */ extern tree lookup_label (tree); -extern rtx c_expand_expr (tree, rtx, enum machine_mode, int); +extern rtx c_expand_expr (tree, rtx, enum machine_mode, int, rtx *); extern int c_safe_from_p (rtx, tree); @@ -1312,14 +1293,31 @@ extern int c_common_valid_pch (cpp_reader *pfile, const char *name, int fd); extern void c_common_read_pch (cpp_reader *pfile, const char *name, int fd, const char *orig); extern void c_common_write_pch (void); +extern void c_common_no_more_pch (void); extern void builtin_define_with_value (const char *, const char *, int); extern void c_stddef_cpp_builtins (void); extern void fe_file_change (const struct line_map *); extern int c_estimate_num_insns (tree decl); +extern bool c_decl_uninit (tree t); +extern void c_parse_error (const char *, enum cpp_ttype, tree); + +/* The following have been moved here from c-tree.h, since they're needed + in the ObjC++ world, too. What is more, stub-objc.c could use a few + prototypes. */ +extern tree lookup_interface (tree); +extern tree is_class_name (tree); +extern tree objc_is_object_ptr (tree); +extern void objc_check_decl (tree); +extern int objc_comptypes (tree, tree, int); +extern tree objc_message_selector (void); +extern tree lookup_objc_ivar (tree); +extern void *get_current_scope (void); +extern void objc_mark_locals_volatile (void *); /* In c-ppoutput.c */ extern void init_pp_output (FILE *); extern void preprocess_file (cpp_reader *); extern void pp_file_change (const struct line_map *); +extern void pp_dir_change (cpp_reader *, const char *); #endif /* ! GCC_C_COMMON_H */