OSDN Git Service

libunwind related patch from David Mosberger
[pf3gnuchains/gcc-fork.git] / gcc / c-common.h
index 9be6dfe..ccfc779 100644 (file)
@@ -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)
 */
 
@@ -98,7 +99,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,
@@ -346,22 +350,6 @@ 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)
 \f
 /* Switches common to the C front ends.  */
 
@@ -369,6 +357,25 @@ struct c_lang_decl GTY(()) {
 
 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;
@@ -589,6 +596,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;
 
@@ -601,6 +614,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.  */
 
@@ -732,6 +749,13 @@ 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.  */
 
@@ -951,9 +975,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.  */
@@ -1051,6 +1077,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)
@@ -1220,7 +1251,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.  */
@@ -1298,6 +1329,20 @@ 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);
+
+/* 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 *);