-tree
-maybe_building_objc_message_expr ()
-{
- return 0;
-}
-
-int
-recognize_objc_keyword ()
-{
- return 0;
-}
-
-/* Used by c-typeck.c (build_external_ref), but only for objc. */
-
-tree
-lookup_objc_ivar (id)
- tree id ATTRIBUTE_UNUSED;
-{
- return 0;
-}
-
-#if !defined(ASM_OUTPUT_CONSTRUCTOR) || !defined(ASM_OUTPUT_DESTRUCTOR)
-extern tree static_ctors;
-extern tree static_dtors;
-
-static tree start_cdtor PARAMS ((int));
-static void finish_cdtor PARAMS ((tree));
-
-static tree
-start_cdtor (method_type)
- int method_type;
-{
- tree fnname = get_file_function_name (method_type);
- tree void_list_node_1 = build_tree_list (NULL_TREE, void_type_node);
- tree body;
-
- start_function (void_list_node_1,
- build_parse_node (CALL_EXPR, fnname,
- tree_cons (NULL_TREE, NULL_TREE,
- void_list_node_1),
- NULL_TREE),
- NULL_TREE, NULL_TREE);
- store_parm_decls ();
-
- current_function_cannot_inline
- = "static constructors and destructors cannot be inlined";
-
- body = c_begin_compound_stmt ();
-
- pushlevel (0);
- clear_last_expr ();
- add_scope_stmt (/*begin_p=*/1, /*partial_p=*/0);
-
- return body;
-}
-
-static void
-finish_cdtor (body)
- tree body;
-{
- tree scope;
- tree block;
-
- scope = add_scope_stmt (/*begin_p=*/0, /*partial_p=*/0);
- block = poplevel (0, 0, 0);
- SCOPE_STMT_BLOCK (TREE_PURPOSE (scope)) = block;
- SCOPE_STMT_BLOCK (TREE_VALUE (scope)) = block;
-
- RECHAIN_STMTS (body, COMPOUND_BODY (body));
-
- finish_function (0);
-}
-#endif
-
-/* Called at end of parsing, but before end-of-file processing. */
-
-void
-finish_file ()
-{
-#ifndef ASM_OUTPUT_CONSTRUCTOR
- if (static_ctors)
- {
- tree body = start_cdtor ('I');
-
- for (; static_ctors; static_ctors = TREE_CHAIN (static_ctors))
- c_expand_expr_stmt (build_function_call (TREE_VALUE (static_ctors),
- NULL_TREE));
-
- finish_cdtor (body);
- }
-#endif
-#ifndef ASM_OUTPUT_DESTRUCTOR
- if (static_dtors)
- {
- tree body = start_cdtor ('D');
-
- for (; static_dtors; static_dtors = TREE_CHAIN (static_dtors))
- c_expand_expr_stmt (build_function_call (TREE_VALUE (static_dtors),
- NULL_TREE));
-
- finish_cdtor (body);
- }
-#endif
-
- if (back_end_hook)
- (*back_end_hook) (getdecls ());
-
- if (flag_dump_translation_unit)
- dump_node_to_file (getdecls (), flag_dump_translation_unit);
-}
-
-/* Called during diagnostic message formatting process to print a
- source-level entity onto BUFFER. The meaning of the format specifiers
- is as follows:
- %D: a general decl,
- %F: a function declaration,
- %T: a type.
-
- These format specifiers form a subset of the format specifiers set used
- by the C++ front-end.
- Please notice when called, the `%' part was already skipped by the
- diagnostic machinery. */
-static int
-c_tree_printer (buffer)
- output_buffer *buffer;
-{
- tree t = va_arg (output_buffer_format_args (buffer), tree);
-
- switch (*output_buffer_text_cursor (buffer))
- {
- case 'D':
- case 'F':
- case 'T':
- {
- const char *n = DECL_NAME (t)
- ? (*decl_printable_name) (t, 2)
- : "({anonymous})";
- output_add_string (buffer, n);
- }
- return 1;
-
- default:
- return 0;
- }
-}