]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/output.h
Merge from pch-branch up to tag pch-commit-20020603.
[thirdparty/gcc.git] / gcc / output.h
CommitLineData
26b071b0 1/* Declarations for insn-output.c. These functions are defined in recog.c,
2 final.c, and varasm.c.
9daf6266 3 Copyright (C) 1987, 1991, 1994, 1997, 1998,
a1657b95 4 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
26b071b0 5
f12b58b3 6This file is part of GCC.
26b071b0 7
f12b58b3 8GCC is free software; you can redistribute it and/or modify it under
9the terms of the GNU General Public License as published by the Free
10Software Foundation; either version 2, or (at your option) any later
11version.
26b071b0 12
f12b58b3 13GCC is distributed in the hope that it will be useful, but WITHOUT ANY
14WARRANTY; without even the implied warranty of MERCHANTABILITY or
15FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16for more details.
26b071b0 17
18You should have received a copy of the GNU General Public License
f12b58b3 19along with GCC; see the file COPYING. If not, write to the Free
20Software Foundation, 59 Temple Place - Suite 330, Boston, MA
2102111-1307, USA. */
26b071b0 22
312866af 23/* Compute branch alignments based on frequency information in the CFG. */
24extern void compute_alignments PARAMS ((void));
25
82b5e01f 26/* Initialize data in final at the beginning of a compilation. */
c70f7111 27extern void init_final PARAMS ((const char *));
82b5e01f 28
29/* Called at end of source file,
30 to output the block-profiling table for this entire compilation. */
c70f7111 31extern void end_final PARAMS ((const char *));
82b5e01f 32
33/* Enable APP processing of subsequent output.
34 Used before the output from an `asm' statement. */
c70f7111 35extern void app_enable PARAMS ((void));
82b5e01f 36
37/* Disable APP processing of subsequent output.
38 Called from varasm.c before most kinds of output. */
c70f7111 39extern void app_disable PARAMS ((void));
82b5e01f 40
072dd462 41/* Return the number of slots filled in the current
82b5e01f 42 delayed branch sequence (we don't count the insn needing the
43 delay slot). Zero if not in a delayed branch sequence. */
c70f7111 44extern int dbr_sequence_length PARAMS ((void));
82b5e01f 45
46/* Indicate that branch shortening hasn't yet been done. */
c70f7111 47extern void init_insn_lengths PARAMS ((void));
82b5e01f 48
454fcc7a 49#ifdef RTX_CODE
82b5e01f 50/* Obtain the current length of an insn. If branch shortening has been done,
51 get its actual length. Otherwise, get its maximum length. */
c70f7111 52extern int get_attr_length PARAMS ((rtx));
82b5e01f 53
54/* Make a pass over all insns and compute their actual lengths by shortening
55 any branches of variable length if possible. */
c70f7111 56extern void shorten_branches PARAMS ((rtx));
82b5e01f 57
58/* Output assembler code for the start of a function,
59 and initialize some of the variables in this file
60 for the new function. The label for the function and associated
61 assembler pseudo-ops have already been output in
62 `assemble_start_function'. */
c70f7111 63extern void final_start_function PARAMS ((rtx, FILE *, int));
82b5e01f 64
65/* Output assembler code for the end of a function.
66 For clarity, args are same as those of `final_start_function'
67 even though not all of them are needed. */
b9b7f8b4 68extern void final_end_function PARAMS ((void));
82b5e01f 69
70/* Output assembler code for some insns: all or part of a function. */
c70f7111 71extern void final PARAMS ((rtx, FILE *, int, int));
82b5e01f 72
73/* The final scan for one insn, INSN. Args are same as in `final', except
74 that INSN is the insn being scanned. Value returned is the next insn to
75 be scanned. */
c70f7111 76extern rtx final_scan_insn PARAMS ((rtx, FILE *, int, int, int));
82b5e01f 77
78/* Replace a SUBREG with a REG or a MEM, based on the thing it is a
79 subreg of. */
06b3c9f7 80extern rtx alter_subreg PARAMS ((rtx *));
82b5e01f 81
82/* Report inconsistency between the assembler template and the operands.
83 In an `asm', it's the user's fault; otherwise, the compiler's fault. */
a1657b95 84extern void output_operand_lossage PARAMS ((const char *, ...)) ATTRIBUTE_PRINTF_1;
7ba2cd99 85
26b071b0 86/* Output a string of assembler code, substituting insn operands.
87 Defined in final.c. */
c70f7111 88extern void output_asm_insn PARAMS ((const char *, rtx *));
26b071b0 89
0e93a6ac 90/* Compute a worst-case reference address of a branch so that it
91 can be safely used in the presence of aligned labels.
92 Defined in final.c. */
c70f7111 93extern int insn_current_reference_address PARAMS ((rtx));
0e93a6ac 94
849674a3 95/* Find the alignment associated with a CODE_LABEL.
96 Defined in final.c. */
c70f7111 97extern int label_to_alignment PARAMS ((rtx));
849674a3 98
82b5e01f 99/* Output a LABEL_REF, or a bare CODE_LABEL, as an assembler symbol. */
c70f7111 100extern void output_asm_label PARAMS ((rtx));
82b5e01f 101
102/* Print a memory reference operand for address X
103 using machine-dependent assembler syntax. */
c70f7111 104extern void output_address PARAMS ((rtx));
50ec54d9 105
4d3281c9 106/* Print an integer constant expression in assembler syntax.
107 Addition and subtraction are the only arithmetic
108 that may appear in these expressions. */
c70f7111 109extern void output_addr_const PARAMS ((FILE *, rtx));
4d3281c9 110
82b5e01f 111/* Output a string of assembler code, substituting numbers, strings
112 and fixed syntactic prefixes. */
c70f7111 113extern void asm_fprintf PARAMS ((FILE *file, const char *p, ...));
82b5e01f 114
115/* Split up a CONST_DOUBLE or integer constant rtx into two rtx's for single
116 words. */
c70f7111 117extern void split_double PARAMS ((rtx, rtx *, rtx *));
82b5e01f 118
119/* Return nonzero if this function has no function calls. */
c70f7111 120extern int leaf_function_p PARAMS ((void));
82b5e01f 121
072dd462 122/* Return 1 if branch is an forward branch.
123 Uses insn_shuid array, so it works only in the final pass. May be used by
124 output templates to add branch prediction hints, for example. */
125extern int final_forward_branch_p PARAMS ((rtx));
126
82b5e01f 127/* Return 1 if this function uses only the registers that can be
128 safely renumbered. */
c70f7111 129extern int only_leaf_regs_used PARAMS ((void));
82b5e01f 130
131/* Scan IN_RTX and its subexpressions, and renumber all regs into those
132 available in leaf functions. */
c70f7111 133extern void leaf_renumber_regs_insn PARAMS ((rtx));
500993f8 134
ae9660c8 135/* Locate the proper template for the given insn-code. */
c70f7111 136extern const char *get_insn_template PARAMS ((int, rtx));
ae9660c8 137
b7fdac4b 138/* Add function NAME to the weak symbols list. VALUE is a weak alias
139 associated with NAME. */
ee0125fb 140extern int add_weak PARAMS ((tree, const char *, const char *));
b7fdac4b 141
500993f8 142/* Functions in flow.c */
c70f7111 143extern void allocate_for_life_analysis PARAMS ((void));
03030d4d 144extern int regno_uninitialized PARAMS ((unsigned int));
c70f7111 145extern int regno_clobbered_at_setjmp PARAMS ((int));
777e249a 146extern void find_basic_blocks PARAMS ((rtx, int, FILE *));
65f34de5 147extern bool cleanup_cfg PARAMS ((int));
cd0fe062 148extern bool delete_unreachable_blocks PARAMS ((void));
fbc1c83e 149extern void check_function_return_warnings PARAMS ((void));
454fcc7a 150#endif
151
152/* Functions in varasm.c. */
153
154/* Tell assembler to switch to text section. */
c70f7111 155extern void text_section PARAMS ((void));
454fcc7a 156
157/* Tell assembler to switch to data section. */
c70f7111 158extern void data_section PARAMS ((void));
454fcc7a 159
14948c31 160/* Tell assembler to make sure its in the data section. */
c70f7111 161extern void force_data_section PARAMS ((void));
14948c31 162
454fcc7a 163/* Tell assembler to switch to read-only data section. This is normally
164 the text section. */
c70f7111 165extern void readonly_data_section PARAMS ((void));
454fcc7a 166
88b5b080 167/* Determine if we're in the text section. */
c70f7111 168extern int in_text_section PARAMS ((void));
454fcc7a 169
bf008cdd 170#ifdef CTORS_SECTION_ASM_OP
171extern void ctors_section PARAMS ((void));
172#endif
173
174#ifdef DTORS_SECTION_ASM_OP
175extern void dtors_section PARAMS ((void));
176#endif
177
178#ifdef BSS_SECTION_ASM_OP
179extern void bss_section PARAMS ((void));
180#endif
181
60548826 182#ifdef CONST_SECTION_ASM_OP
183extern void const_section PARAMS ((void));
184#endif
185
186#ifdef INIT_SECTION_ASM_OP
187extern void init_section PARAMS ((void));
188#endif
189
190#ifdef FINI_SECTION_ASM_OP
191extern void fini_section PARAMS ((void));
192#endif
bf008cdd 193
0c87a39e 194#ifdef EXPORTS_SECTION_ASM_OP
195extern void exports_section PARAMS ((void));
196#endif
197
5d0e87b7 198#ifdef TDESC_SECTION_ASM_OP
199extern void tdesc_section PARAMS ((void));
200#endif
201
e906a16a 202#ifdef DRECTVE_SECTION_ASM_OP
203extern void drectve_section PARAMS ((void));
204#endif
205
7e6b5e54 206#ifdef SDATA_SECTION_ASM_OP
207extern void sdata_section PARAMS ((void));
208#endif
209
597b7baf 210#ifdef RDATA_SECTION_ASM_OP
211extern void rdata_section PARAMS ((void));
212#endif
213
454fcc7a 214#ifdef TREE_CODE
215/* Tell assembler to change to section NAME for DECL.
216 If DECL is NULL, just switch to section NAME.
9b6402f5 217 If NAME is NULL, get the name from DECL.
218 If RELOC is 1, the initializer for DECL contains relocs. */
c70f7111 219extern void named_section PARAMS ((tree, const char *, int));
454fcc7a 220
b409d58e 221/* Tell assembler to switch to the section for function DECL. */
c70f7111 222extern void function_section PARAMS ((tree));
b409d58e 223
bb2821c0 224/* Tell assembler to switch to the section for string merging. */
225extern void mergeable_string_section PARAMS ((tree, unsigned HOST_WIDE_INT,
226 unsigned int));
227
228/* Tell assembler to switch to the section for constant merging. */
229extern void mergeable_constant_section PARAMS ((enum machine_mode,
230 unsigned HOST_WIDE_INT,
231 unsigned int));
232
cd03a192 233/* Declare DECL to be a weak symbol. */
c70f7111 234extern void declare_weak PARAMS ((tree));
296c463e 235/* Merge weak status. */
236extern void merge_weak PARAMS ((tree, tree));
cd03a192 237#endif /* TREE_CODE */
238
ebd9163c 239/* Emit any pending weak declarations. */
c70f7111 240extern void weak_finish PARAMS ((void));
ebd9163c 241
454fcc7a 242/* Decode an `asm' spec for a declaration as a register name.
243 Return the register number, or -1 if nothing specified,
244 or -2 if the ASMSPEC is not `cc' or `memory' and is not recognized,
245 or -3 if ASMSPEC is `cc' and is not recognized,
246 or -4 if ASMSPEC is `memory' and is not recognized.
247 Accept an exact spelling or a decimal number.
248 Prefixes such as % are optional. */
c70f7111 249extern int decode_reg_name PARAMS ((const char *));
454fcc7a 250
cd03a192 251#ifdef TREE_CODE
454fcc7a 252/* Make the rtl for variable VAR be volatile.
253 Use this only for static variables. */
c70f7111 254extern void make_var_volatile PARAMS ((tree));
454fcc7a 255
256/* Output alignment directive to align for constant expression EXP. */
c70f7111 257extern void assemble_constant_align PARAMS ((tree));
454fcc7a 258
c70f7111 259extern void assemble_alias PARAMS ((tree, tree));
cd03a192 260
b4cf9ec1 261extern void assemble_visibility PARAMS ((tree, const char *));
262
454fcc7a 263/* Output a string of literal assembler code
264 for an `asm' keyword used between functions. */
c70f7111 265extern void assemble_asm PARAMS ((tree));
454fcc7a 266
454fcc7a 267/* Output assembler code for the constant pool of a function and associated
268 with defining the name of the function. DECL describes the function.
269 NAME is the function's name. For the constant pool, we use the current
270 constant pool data. */
9a356c3c 271extern void assemble_start_function PARAMS ((tree, const char *));
454fcc7a 272
273/* Output assembler code associated with defining the size of the
274 function. DECL describes the function. NAME is the function's name. */
c70f7111 275extern void assemble_end_function PARAMS ((tree, const char *));
454fcc7a 276
454fcc7a 277/* Assemble everything that is needed for a variable or function declaration.
278 Not used for automatic variables, and not used for function definitions.
279 Should not be called for variables of incomplete structure type.
280
281 TOP_LEVEL is nonzero if this variable has file scope.
282 AT_END is nonzero if this is the special handling, at end of compilation,
283 to define things that have had only tentative definitions.
284 DONT_OUTPUT_DATA if nonzero means don't actually output the
285 initial value (that will be done by the caller). */
c70f7111 286extern void assemble_variable PARAMS ((tree, int, int, int));
454fcc7a 287
454fcc7a 288/* Output something to declare an external symbol to the assembler.
289 (Most assemblers don't need this, so we normally output nothing.)
290 Do nothing if DECL is not external. */
c70f7111 291extern void assemble_external PARAMS ((tree));
cd03a192 292#endif /* TREE_CODE */
454fcc7a 293
6e844d29 294/* Assemble code to leave SIZE bytes of zeros. */
c70f7111 295extern void assemble_zeros PARAMS ((int));
6e844d29 296
297/* Assemble an alignment pseudo op for an ALIGN-bit boundary. */
c70f7111 298extern void assemble_align PARAMS ((int));
fbba5463 299extern void assemble_eh_align PARAMS ((int));
6e844d29 300
301/* Assemble a string constant with the specified C string as contents. */
c70f7111 302extern void assemble_string PARAMS ((const char *, int));
6e844d29 303
454fcc7a 304#ifdef RTX_CODE
305/* Similar, for calling a library function FUN. */
c70f7111 306extern void assemble_external_libcall PARAMS ((rtx));
454fcc7a 307#endif
82b5e01f 308
454fcc7a 309/* Declare the label NAME global. */
c70f7111 310extern void assemble_global PARAMS ((const char *));
454fcc7a 311
312/* Assemble a label named NAME. */
c70f7111 313extern void assemble_label PARAMS ((const char *));
fbba5463 314extern void assemble_eh_label PARAMS ((const char *));
454fcc7a 315
316/* Output to FILE a reference to the assembler name of a C-level name NAME.
317 If NAME starts with a *, the rest of NAME is output verbatim.
318 Otherwise NAME is transformed in an implementation-defined way
319 (usually by the addition of an underscore).
320 Many macros in the tm file are defined to call this function. */
c70f7111 321extern void assemble_name PARAMS ((FILE *, const char *));
454fcc7a 322
58356836 323/* Return the assembler directive for creating a given kind of integer
324 object. SIZE is the number of bytes in the object and ALIGNED_P
325 indicates whether it is known to be aligned. Return NULL if the
326 assembly dialect has no such directive.
327
328 The returned string should be printed at the start of a new line and
329 be followed immediately by the object's initial value. */
330extern const char *integer_asm_op PARAMS ((int, int));
331
454fcc7a 332#ifdef RTX_CODE
58356836 333/* Use directive OP to assemble an integer object X. Print OP at the
334 start of the line, followed immediately by the value of X. */
335extern void assemble_integer_with_op PARAMS ((const char *, rtx));
336
337/* The default implementation of the asm_out.integer target hook. */
338extern bool default_assemble_integer PARAMS ((rtx, unsigned int, int));
339
09d688ff 340/* Assemble the integer constant X into an object of SIZE bytes. ALIGN is
341 the alignment of the integer in bits. Return 1 if we were able to output
342 the constant, otherwise 0. If FORCE is non-zero, abort if we can't output
343 the constant. */
58356836 344extern bool assemble_integer PARAMS ((rtx, unsigned, unsigned, int));
345
346/* An interface to assemble_integer for the common case in which a value is
347 fully aligned and must be printed. VALUE is the value of the integer
348 object and SIZE is the number of bytes it contains. */
349#define assemble_aligned_integer(SIZE, VALUE) \
350 assemble_integer (VALUE, SIZE, (SIZE) * BITS_PER_UNIT, 1)
454fcc7a 351
1f3233d1 352#ifdef REAL_VALUE_TYPE_SIZE
454fcc7a 353/* Assemble the floating-point constant D into an object of size MODE. */
c70f7111 354extern void assemble_real PARAMS ((REAL_VALUE_TYPE,
09d688ff 355 enum machine_mode,
356 unsigned));
454fcc7a 357#endif
358#endif
359
454fcc7a 360/* Start deferring output of subconstants. */
c70f7111 361extern void defer_addressed_constants PARAMS ((void));
454fcc7a 362
363/* Stop deferring output of subconstants,
364 and output now all those that have been deferred. */
c70f7111 365extern void output_deferred_addressed_constants PARAMS ((void));
454fcc7a 366
454fcc7a 367/* Return the size of the constant pool. */
c70f7111 368extern int get_pool_size PARAMS ((void));
454fcc7a 369
867b95d0 370#ifdef HAVE_peephole
c70f7111 371extern rtx peephole PARAMS ((rtx));
867b95d0 372#endif
373
454fcc7a 374#ifdef TREE_CODE
375/* Write all the constants in the constant pool. */
c70f7111 376extern void output_constant_pool PARAMS ((const char *, tree));
454fcc7a 377
155b05dc 378/* Return nonzero if VALUE is a valid constant-valued expression
379 for use in initializing a static variable; one that can be an
380 element of a "constant" initializer.
381
382 Return null_pointer_node if the value is absolute;
383 if it is relocatable, return the variable that determines the relocation.
384 We assume that VALUE has been folded as much as possible;
385 therefore, we do not need to check for such things as
386 arithmetic-combinations of integers. */
c70f7111 387extern tree initializer_constant_valid_p PARAMS ((tree, tree));
155b05dc 388
454fcc7a 389/* Output assembler code for constant EXP to FILE, with no label.
390 This includes the pseudo-op such as ".int" or ".byte", and a newline.
391 Assumes output_addressed_constants has been done on EXP already.
392
393 Generate exactly SIZE bytes of assembler data, padding at the end
09d688ff 394 with zeros if necessary. SIZE must always be specified.
395
396 ALIGN is the alignment in bits that may be assumed for the data. */
b3187c7c 397extern void output_constant PARAMS ((tree, HOST_WIDE_INT,
398 unsigned int));
454fcc7a 399#endif
4d3281c9 400
454fcc7a 401#ifdef RTX_CODE
26b071b0 402/* When outputting delayed branch sequences, this rtx holds the
403 sequence being output. It is null when no delayed branch
404 sequence is being output, so it can be used as a test in the
405 insn output code.
406
407 This variable is defined in final.c. */
408extern rtx final_sequence;
454fcc7a 409#endif
26b071b0 410
56f6686b 411/* The line number of the beginning of the current function. Various
412 md code needs this so that it can output relative linenumbers. */
413
414#ifdef SDB_DEBUGGING_INFO /* Avoid undef sym in certain broken linkers. */
415extern int sdb_begin_function_line;
416#endif
417
0a893c29 418/* File in which assembler code is being written. */
26b071b0 419
0a893c29 420#ifdef BUFSIZ
421extern FILE *asm_out_file;
422#endif
e772a198 423
424/* The first global object in the file. */
425extern const char *first_global_object_name;
426
427/* The first weak object in the file. */
428extern const char *weak_global_object_name;
429
b3b67b7c 430/* Nonzero if function being compiled doesn't contain any calls
431 (ignoring the prologue and epilogue). This is set prior to
432 local register allocation and is valid for the remaining
88b5b080 433 compiler passes. */
b3b67b7c 434
435extern int current_function_is_leaf;
436
f929a98a 437/* Nonzero if function being compiled doesn't contain any instructions
438 that can throw an exception. This is set prior to final. */
439
440extern int current_function_nothrow;
441
22c8984a 442/* Nonzero if function being compiled doesn't modify the stack pointer
443 (ignoring the prologue and epilogue). This is only valid after
88b5b080 444 life_analysis has run. */
22c8984a 445
446extern int current_function_sp_is_unchanging;
447
b3b67b7c 448/* Nonzero if the function being compiled is a leaf function which only
449 uses leaf registers. This is valid after reload (specifically after
450 sched2) and is useful only if the port defines LEAF_REGISTERS. */
451
452extern int current_function_uses_only_leaf_regs;
453
9f1379d7 454/* Default file in which to dump debug output. */
455
456#ifdef BUFSIZ
457extern FILE *rtl_dump_file;
458#endif
459
308f360f 460/* Nonnull if the insn currently being emitted was a COND_EXEC pattern. */
308f360f 461extern struct rtx_def *current_insn_predicate;
462
19f8cf12 463/* Last insn processed by final_scan_insn. */
464extern struct rtx_def *current_output_insn;
465
a8fb9348 466/* Nonzero while outputting an `asm' with operands.
467 This means that inconsistencies are the user's fault, so don't abort.
468 The precise value is the insn being output, to pass to error_for_asm. */
469extern rtx this_is_asm_operands;
470
9b6402f5 471/* Decide whether DECL needs to be in a writable section. RELOC is the same
472 as for SELECT_SECTION. */
473
474#define DECL_READONLY_SECTION(DECL,RELOC) \
475 (TREE_READONLY (DECL) \
476 && ! TREE_THIS_VOLATILE (DECL) \
477 && DECL_INITIAL (DECL) \
478 && (DECL_INITIAL (DECL) == error_mark_node \
479 || TREE_CONSTANT (DECL_INITIAL (DECL))) \
480 && ! (RELOC && (flag_pic || DECL_ONE_ONLY (DECL))))
95c4b02a 481
482/* User label prefix in effect for this compilation. */
951f0f62 483extern const char *user_label_prefix;
1c5153f2 484
17d9b0c3 485/* Default target function prologue and epilogue assembler output. */
486extern void default_function_pro_epilogue PARAMS ((FILE *, HOST_WIDE_INT));
85ae73e8 487
13c14f1c 488/* Tell assembler to switch to the section for the exception table. */
489extern void default_exception_section PARAMS ((void));
490
491/* Tell assembler to switch to the section for the EH frames. */
492extern void default_eh_frame_section PARAMS ((void));
493
85ae73e8 494/* Default target hook that outputs nothing to a stream. */
495extern void no_asm_to_stream PARAMS ((FILE *));
2cb4ac60 496
497/* Flags controling properties of a section. */
bb2821c0 498#define SECTION_ENTSIZE 0x000ff /* entity size in section */
499#define SECTION_CODE 0x00100 /* contains code */
500#define SECTION_WRITE 0x00200 /* data is writable */
501#define SECTION_DEBUG 0x00400 /* contains debug data */
502#define SECTION_LINKONCE 0x00800 /* is linkonce */
503#define SECTION_SMALL 0x01000 /* contains "small data" */
504#define SECTION_BSS 0x02000 /* contains zeros only */
505#define SECTION_FORGET 0x04000 /* forget that we've entered the section */
506#define SECTION_MERGE 0x08000 /* contains mergeable data */
507#define SECTION_STRINGS 0x10000 /* contains zero terminated strings without
508 embedded zeros */
2ab08d57 509#define SECTION_OVERRIDE 0x20000 /* allow override of default flags */
2a6f0f81 510#define SECTION_TLS 0x40000 /* contains thread-local storage */
511#define SECTION_MACH_DEP 0x80000 /* subsequent bits reserved for target */
2cb4ac60 512
29a0ebee 513extern unsigned int get_named_section_flags PARAMS ((const char *));
514extern bool set_named_section_flags PARAMS ((const char *, unsigned int));
515extern void named_section_flags PARAMS ((const char *, unsigned int));
5cdb6d31 516extern bool named_section_first_declaration PARAMS((const char *));
2cb4ac60 517
518union tree_node;
519extern unsigned int default_section_type_flags PARAMS ((union tree_node *,
520 const char *, int));
521
29a0ebee 522extern void default_no_named_section PARAMS ((const char *, unsigned int));
523extern void default_elf_asm_named_section PARAMS ((const char *, unsigned int));
524extern void default_coff_asm_named_section PARAMS ((const char *,
525 unsigned int));
526extern void default_pe_asm_named_section PARAMS ((const char *, unsigned int));
2cb4ac60 527
01d15dc5 528extern void default_stabs_asm_out_destructor PARAMS ((struct rtx_def *, int));
529extern void default_named_section_asm_out_destructor PARAMS ((struct rtx_def *,
530 int));
531extern void default_dtor_section_asm_out_destructor PARAMS ((struct rtx_def *,
532 int));
533extern void default_stabs_asm_out_constructor PARAMS ((struct rtx_def *, int));
534extern void default_named_section_asm_out_constructor PARAMS ((struct rtx_def *,
535 int));
536extern void default_ctor_section_asm_out_constructor PARAMS ((struct rtx_def *,
537 int));
cef0c6a0 538
52470889 539extern void default_select_section PARAMS ((tree, int,
540 unsigned HOST_WIDE_INT));
541extern void default_elf_select_section PARAMS ((tree, int,
542 unsigned HOST_WIDE_INT));
543extern void default_unique_section PARAMS ((tree, int));
bbfbe351 544extern void default_select_rtx_section PARAMS ((enum machine_mode, rtx,
545 unsigned HOST_WIDE_INT));
546extern void default_elf_select_rtx_section PARAMS ((enum machine_mode, rtx,
547 unsigned HOST_WIDE_INT));
7b4a38a6 548extern const char *default_strip_name_encoding PARAMS ((const char *));
33459320 549extern bool default_binds_local_p PARAMS ((tree));
7b4a38a6 550
cef0c6a0 551/* Emit data for vtable gc for GNU binutils. */
552extern void assemble_vtable_entry PARAMS ((struct rtx_def *, HOST_WIDE_INT));
553extern void assemble_vtable_inherit PARAMS ((struct rtx_def *,
554 struct rtx_def *));