/* Declarations for insn-output.c. These functions are defined in recog.c,
final.c, and varasm.c.
Copyright (C) 1987, 1991, 1994, 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.
/* The final scan for one insn, INSN. Args are same as in `final', except
that INSN is the insn being scanned. Value returned is the next insn to
be scanned. */
-extern rtx final_scan_insn (rtx, FILE *, int, int, int);
+extern rtx final_scan_insn (rtx, FILE *, int, int, int, int *);
/* Replace a SUBREG with a REG or a MEM, based on the thing it is a
subreg of. */
/* Functions in flow.c */
extern void allocate_for_life_analysis (void);
-extern int regno_uninitialized (unsigned int);
extern int regno_clobbered_at_setjmp (int);
-extern void find_basic_blocks (rtx, int, FILE *);
-extern bool cleanup_cfg (int);
-extern bool delete_unreachable_blocks (void);
-extern void check_function_return_warnings (void);
/* Functions in varasm.c. */
/* Tell assembler to switch to text section. */
extern void text_section (void);
+/* Tell assembler to switch to unlikely-to-be-executed text section. */
+extern void unlikely_text_section (void);
+
/* Tell assembler to switch to data section. */
extern void data_section (void);
/* Determine if we're in the text section. */
extern int in_text_section (void);
+/* Determine if we're in the unlikely-to-be-executed text section. */
+extern int in_unlikely_text_section (void);
+
#ifdef CTORS_SECTION_ASM_OP
extern void ctors_section (void);
#endif
extern int current_function_is_leaf;
-/* Nonzero if function being compiled doesn't contain any instructions
- that can throw an exception. This is set prior to final. */
-
-extern int current_function_nothrow;
-
/* Nonzero if function being compiled doesn't modify the stack pointer
(ignoring the prologue and epilogue). This is only valid after
life_analysis has run. */
/* Default file in which to dump debug output. */
#ifdef BUFSIZ
-extern FILE *rtl_dump_file;
+extern FILE *dump_file;
#endif
/* Nonnull if the insn currently being emitted was a COND_EXEC pattern. */
-extern struct rtx_def *current_insn_predicate;
+extern rtx current_insn_predicate;
/* Last insn processed by final_scan_insn. */
-extern struct rtx_def *current_output_insn;
+extern rtx current_output_insn;
/* Nonzero while outputting an `asm' with operands.
This means that inconsistencies are the user's fault, so don't abort.
The precise value is the insn being output, to pass to error_for_asm. */
extern rtx this_is_asm_operands;
+/* Carry information from ASM_DECLARE_OBJECT_NAME
+ to ASM_FINISH_DECLARE_OBJECT. */
+extern int size_directive_output;
+extern tree last_assemble_variable_decl;
+
/* Decide whether DECL needs to be in a writable section.
RELOC is the same as for SELECT_SECTION. */
extern bool decl_readonly_section (tree, int);
extern bool decl_readonly_section_1 (tree, int, int);
+/* This can be used to compute RELOC for the function above, when
+ given a constant expression. */
+extern int compute_reloc_for_constant (tree);
+
/* User label prefix in effect for this compilation. */
extern const char *user_label_prefix;
extern void default_exception_section (void);
/* Tell assembler to switch to the section for the EH frames. */
+extern void named_section_eh_frame_section (void);
+extern void collect2_eh_frame_section (void);
extern void default_eh_frame_section (void);
/* Default target hook that outputs nothing to a stream. */
extern bool set_named_section_flags (const char *, unsigned int);
extern void named_section_flags (const char *, unsigned int);
extern bool named_section_first_declaration (const char *);
-
-union tree_node;
-extern unsigned int default_section_type_flags (union tree_node *,
- const char *, int);
-extern unsigned int default_section_type_flags_1 (union tree_node *,
- const char *, int, int);
+extern unsigned int default_section_type_flags (tree, const char *, int);
+extern unsigned int default_section_type_flags_1 (tree, const char *, int, int);
extern void default_no_named_section (const char *, unsigned int);
extern void default_elf_asm_named_section (const char *, unsigned int);
extern void default_coff_asm_named_section (const char *, unsigned int);
extern void default_pe_asm_named_section (const char *, unsigned int);
-extern void default_stabs_asm_out_destructor (struct rtx_def *, int);
-extern void default_named_section_asm_out_destructor (struct rtx_def *, int);
-extern void default_dtor_section_asm_out_destructor (struct rtx_def *, int);
-extern void default_stabs_asm_out_constructor (struct rtx_def *, int);
-extern void default_named_section_asm_out_constructor (struct rtx_def *,
- int);
-extern void default_ctor_section_asm_out_constructor (struct rtx_def *, int);
+extern void default_stabs_asm_out_destructor (rtx, int);
+extern void default_named_section_asm_out_destructor (rtx, int);
+extern void default_dtor_section_asm_out_destructor (rtx, int);
+extern void default_stabs_asm_out_constructor (rtx, int);
+extern void default_named_section_asm_out_constructor (rtx, int);
+extern void default_ctor_section_asm_out_constructor (rtx, int);
extern void default_select_section (tree, int, unsigned HOST_WIDE_INT);
extern void default_elf_select_section (tree, int, unsigned HOST_WIDE_INT);
extern bool default_binds_local_p (tree);
extern bool default_binds_local_p_1 (tree, int);
extern void default_globalize_label (FILE *, const char *);
+extern void default_emit_unwind_label (FILE *, tree, int, int);
extern void default_internal_label (FILE *, const char *, unsigned long);
extern void default_file_start (void);
extern void file_end_indicate_exec_stack (void);
extern bool default_valid_pointer_mode (enum machine_mode);
-/* Emit data for vtable gc for GNU binutils. */
-extern void assemble_vtable_entry (struct rtx_def *, HOST_WIDE_INT);
-extern void assemble_vtable_inherit (struct rtx_def *, struct rtx_def *);
-
extern int default_address_cost (rtx);
#endif /* ! GCC_OUTPUT_H */