]> gcc.gnu.org Git - gcc.git/blame - gcc/output.h
Update copyright years in gcc/
[gcc.git] / gcc / output.h
CommitLineData
416ff32e
SB
1/* Declarations for insn-output.c and other code to write to asm_out_file.
2 These functions are defined in final.c, and varasm.c.
d1e082c2 3 Copyright (C) 1987-2013 Free Software Foundation, Inc.
0c2768fc 4
1322177d 5This file is part of GCC.
0c2768fc 6
1322177d
LB
7GCC is free software; you can redistribute it and/or modify it under
8the terms of the GNU General Public License as published by the Free
9dcd6f09 9Software Foundation; either version 3, or (at your option) any later
1322177d 10version.
0c2768fc 11
1322177d
LB
12GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13WARRANTY; without even the implied warranty of MERCHANTABILITY or
14FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15for more details.
0c2768fc
RS
16
17You should have received a copy of the GNU General Public License
9dcd6f09
NC
18along with GCC; see the file COPYING3. If not see
19<http://www.gnu.org/licenses/>. */
0c2768fc 20
e91e4f6c
KG
21#ifndef GCC_OUTPUT_H
22#define GCC_OUTPUT_H
23
9b1d8cd6 24/* Initialize data in final at the beginning of a compilation. */
0c20a65f 25extern void init_final (const char *);
9b1d8cd6 26
9b1d8cd6
RK
27/* Enable APP processing of subsequent output.
28 Used before the output from an `asm' statement. */
0c20a65f 29extern void app_enable (void);
9b1d8cd6
RK
30
31/* Disable APP processing of subsequent output.
32 Called from varasm.c before most kinds of output. */
0c20a65f 33extern void app_disable (void);
9b1d8cd6 34
a4f31c00 35/* Return the number of slots filled in the current
9b1d8cd6
RK
36 delayed branch sequence (we don't count the insn needing the
37 delay slot). Zero if not in a delayed branch sequence. */
0c20a65f 38extern int dbr_sequence_length (void);
9b1d8cd6
RK
39
40/* Indicate that branch shortening hasn't yet been done. */
0c20a65f 41extern void init_insn_lengths (void);
9b1d8cd6
RK
42
43/* Obtain the current length of an insn. If branch shortening has been done,
44 get its actual length. Otherwise, get its maximum length. */
0c20a65f 45extern int get_attr_length (rtx);
9b1d8cd6 46
070a7956
R
47/* Obtain the current length of an insn. If branch shortening has been done,
48 get its actual length. Otherwise, get its minimum length. */
49extern int get_attr_min_length (rtx);
50
9b1d8cd6
RK
51/* Make a pass over all insns and compute their actual lengths by shortening
52 any branches of variable length if possible. */
0c20a65f 53extern void shorten_branches (rtx);
9b1d8cd6
RK
54
55/* Output assembler code for the start of a function,
56 and initialize some of the variables in this file
57 for the new function. The label for the function and associated
58 assembler pseudo-ops have already been output in
59 `assemble_start_function'. */
0c20a65f 60extern void final_start_function (rtx, FILE *, int);
9b1d8cd6
RK
61
62/* Output assembler code for the end of a function.
63 For clarity, args are same as those of `final_start_function'
64 even though not all of them are needed. */
0c20a65f 65extern void final_end_function (void);
9b1d8cd6
RK
66
67/* Output assembler code for some insns: all or part of a function. */
c9d691e9 68extern void final (rtx, FILE *, int);
9b1d8cd6 69
5cfc5f84
DJ
70/* The final scan for one insn, INSN. Args are same as in `final', except
71 that INSN is the insn being scanned. Value returned is the next insn to
72 be scanned. */
c9d691e9 73extern rtx final_scan_insn (rtx, FILE *, int, int, int *);
5cfc5f84 74
9b1d8cd6
RK
75/* Replace a SUBREG with a REG or a MEM, based on the thing it is a
76 subreg of. */
55a2c322 77extern rtx alter_subreg (rtx *, bool);
9b1d8cd6 78
6b3c42ae
NF
79/* Print an operand using machine-dependent assembler syntax. */
80extern void output_operand (rtx, int);
81
9b1d8cd6
RK
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. */
0c20a65f 84extern void output_operand_lossage (const char *, ...) ATTRIBUTE_PRINTF_1;
cf1c49cb 85
0c2768fc
RS
86/* Output a string of assembler code, substituting insn operands.
87 Defined in final.c. */
0c20a65f 88extern void output_asm_insn (const char *, rtx *);
0c2768fc 89
487a6e06
KG
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. */
0c20a65f 93extern int insn_current_reference_address (rtx);
487a6e06 94
3873d24b
RH
95/* Find the alignment associated with a CODE_LABEL.
96 Defined in final.c. */
0c20a65f 97extern int label_to_alignment (rtx);
3873d24b 98
40a8f07a
JJ
99/* Find the alignment maximum skip associated with a CODE_LABEL.
100 Defined in final.c. */
101extern int label_to_max_skip (rtx);
102
9b1d8cd6 103/* Output a LABEL_REF, or a bare CODE_LABEL, as an assembler symbol. */
0c20a65f 104extern void output_asm_label (rtx);
9b1d8cd6 105
a7fe25b8
JJ
106/* Marks SYMBOL_REFs in x as referenced through use of assemble_external. */
107extern void mark_symbol_refs_as_used (rtx);
108
9b1d8cd6
RK
109/* Print a memory reference operand for address X
110 using machine-dependent assembler syntax. */
0c20a65f 111extern void output_address (rtx);
1428a6b3 112
aaff8ce0
CH
113/* Print an integer constant expression in assembler syntax.
114 Addition and subtraction are the only arithmetic
115 that may appear in these expressions. */
0c20a65f 116extern void output_addr_const (FILE *, rtx);
aaff8ce0 117
9b1d8cd6
RK
118/* Output a string of assembler code, substituting numbers, strings
119 and fixed syntactic prefixes. */
3ae1d4c2
KG
120#if GCC_VERSION >= 3004
121#define ATTRIBUTE_ASM_FPRINTF(m, n) __attribute__ ((__format__ (__asm_fprintf__, m, n))) ATTRIBUTE_NONNULL(m)
3ae1d4c2
KG
122#else
123#define ATTRIBUTE_ASM_FPRINTF(m, n) ATTRIBUTE_NONNULL(m)
124#endif
125
5e3929ed
DA
126extern void fprint_whex (FILE *, unsigned HOST_WIDE_INT);
127extern void fprint_ul (FILE *, unsigned long);
128extern int sprint_ul (char *, unsigned long);
129
0c20a65f
AJ
130extern void asm_fprintf (FILE *file, const char *p, ...)
131 ATTRIBUTE_ASM_FPRINTF(2, 3);
9b1d8cd6 132
9b1d8cd6 133/* Return nonzero if this function has no function calls. */
0c20a65f 134extern int leaf_function_p (void);
9b1d8cd6 135
09da1532 136/* Return 1 if branch is a forward branch.
a4f31c00
AJ
137 Uses insn_shuid array, so it works only in the final pass. May be used by
138 output templates to add branch prediction hints, for example. */
0c20a65f 139extern int final_forward_branch_p (rtx);
a4f31c00 140
9b1d8cd6
RK
141/* Return 1 if this function uses only the registers that can be
142 safely renumbered. */
0c20a65f 143extern int only_leaf_regs_used (void);
9b1d8cd6
RK
144
145/* Scan IN_RTX and its subexpressions, and renumber all regs into those
146 available in leaf functions. */
0c20a65f 147extern void leaf_renumber_regs_insn (rtx);
a1493f9f 148
4bbf910e 149/* Locate the proper template for the given insn-code. */
0c20a65f 150extern const char *get_insn_template (int, rtx);
4bbf910e 151
ed068cf5
RK
152/* Functions in varasm.c. */
153
50b2596f 154/* Emit any pending weak declarations. */
0c20a65f 155extern void weak_finish (void);
50b2596f 156
ed068cf5
RK
157/* Decode an `asm' spec for a declaration as a register name.
158 Return the register number, or -1 if nothing specified,
159 or -2 if the ASMSPEC is not `cc' or `memory' and is not recognized,
160 or -3 if ASMSPEC is `cc' and is not recognized,
161 or -4 if ASMSPEC is `memory' and is not recognized.
162 Accept an exact spelling or a decimal number.
163 Prefixes such as % are optional. */
0c20a65f 164extern int decode_reg_name (const char *);
ed068cf5 165
0c6d290e
RE
166/* Similar to decode_reg_name, but takes an extra parameter that is a
167 pointer to the number of (internal) registers described by the
168 external name. */
169extern int decode_reg_name_and_count (const char *, int *);
170
07250f0e 171extern void do_assemble_alias (tree, tree);
d6f4ec51 172
0c20a65f 173extern void default_assemble_visibility (tree, int);
47bd70b5 174
ed068cf5
RK
175/* Output a string of literal assembler code
176 for an `asm' keyword used between functions. */
0c20a65f 177extern void assemble_asm (tree);
ed068cf5 178
ed068cf5
RK
179/* Output assembler code for the constant pool of a function and associated
180 with defining the name of the function. DECL describes the function.
181 NAME is the function's name. For the constant pool, we use the current
182 constant pool data. */
0c20a65f 183extern void assemble_start_function (tree, const char *);
ed068cf5
RK
184
185/* Output assembler code associated with defining the size of the
186 function. DECL describes the function. NAME is the function's name. */
0c20a65f 187extern void assemble_end_function (tree, const char *);
ed068cf5 188
ed068cf5
RK
189/* Assemble everything that is needed for a variable or function declaration.
190 Not used for automatic variables, and not used for function definitions.
191 Should not be called for variables of incomplete structure type.
192
193 TOP_LEVEL is nonzero if this variable has file scope.
194 AT_END is nonzero if this is the special handling, at end of compilation,
195 to define things that have had only tentative definitions.
196 DONT_OUTPUT_DATA if nonzero means don't actually output the
197 initial value (that will be done by the caller). */
0c20a65f 198extern void assemble_variable (tree, int, int, int);
ed068cf5 199
88d03811
JH
200/* Compute the alignment of variable specified by DECL.
201 DONT_OUTPUT_DATA is from assemble_variable. */
202extern void align_variable (tree decl, bool dont_output_data);
203
2e226e66 204/* Queue for outputting something to declare an external symbol to the
c47c29c8
L
205 assembler. (Most assemblers don't need this, so we normally output
206 nothing.) Do nothing if DECL is not external. */
0c20a65f 207extern void assemble_external (tree);
ed068cf5 208
d8d79d15 209/* Assemble code to leave SIZE bytes of zeros. */
0c20a65f 210extern void assemble_zeros (unsigned HOST_WIDE_INT);
d8d79d15
RE
211
212/* Assemble an alignment pseudo op for an ALIGN-bit boundary. */
0c20a65f 213extern void assemble_align (int);
d8d79d15
RE
214
215/* Assemble a string constant with the specified C string as contents. */
0c20a65f 216extern void assemble_string (const char *, int);
d8d79d15 217
ed068cf5 218/* Similar, for calling a library function FUN. */
0c20a65f 219extern void assemble_external_libcall (rtx);
9b1d8cd6 220
ed068cf5 221/* Assemble a label named NAME. */
e4f7c483 222extern void assemble_label (FILE *, const char *);
ed068cf5 223
57829bc4
MM
224/* Output to FILE (an assembly file) a reference to NAME. If NAME
225 starts with a *, the rest of NAME is output verbatim. Otherwise
226 NAME is transformed in a target-specific way (usually by the
227 addition of an underscore). */
228extern void assemble_name_raw (FILE *, const char *);
229
230/* Like assemble_name_raw, but should be used when NAME might refer to
231 an entity that is also represented as a tree (like a function or
232 variable). If NAME does refer to such an entity, that entity will
233 be marked as referenced. */
0c20a65f 234extern void assemble_name (FILE *, const char *);
ed068cf5 235
301d03af
RS
236/* Return the assembler directive for creating a given kind of integer
237 object. SIZE is the number of bytes in the object and ALIGNED_P
238 indicates whether it is known to be aligned. Return NULL if the
239 assembly dialect has no such directive.
240
241 The returned string should be printed at the start of a new line and
242 be followed immediately by the object's initial value. */
0c20a65f 243extern const char *integer_asm_op (int, int);
301d03af 244
301d03af
RS
245/* Use directive OP to assemble an integer object X. Print OP at the
246 start of the line, followed immediately by the value of X. */
0c20a65f 247extern void assemble_integer_with_op (const char *, rtx);
301d03af
RS
248
249/* The default implementation of the asm_out.integer target hook. */
0c20a65f 250extern bool default_assemble_integer (rtx, unsigned int, int);
301d03af 251
c8af3574
RH
252/* Assemble the integer constant X into an object of SIZE bytes. ALIGN is
253 the alignment of the integer in bits. Return 1 if we were able to output
0e61db61
NS
254 the constant, otherwise 0. If FORCE is nonzero the constant must
255 be outputable. */
0c20a65f 256extern bool assemble_integer (rtx, unsigned, unsigned, int);
301d03af 257
f16d3f39
JH
258/* Return section for TEXT_SECITON_NAME if DECL or DECL_SECTION_NAME (DECL)
259 is NULL. */
260extern section *get_named_text_section (tree, const char *, const char *);
261
301d03af
RS
262/* An interface to assemble_integer for the common case in which a value is
263 fully aligned and must be printed. VALUE is the value of the integer
264 object and SIZE is the number of bytes it contains. */
265#define assemble_aligned_integer(SIZE, VALUE) \
266 assemble_integer (VALUE, SIZE, (SIZE) * BITS_PER_UNIT, 1)
ed068cf5 267
e2500fed 268#ifdef REAL_VALUE_TYPE_SIZE
ed068cf5 269/* Assemble the floating-point constant D into an object of size MODE. */
0c20a65f 270extern void assemble_real (REAL_VALUE_TYPE, enum machine_mode, unsigned);
ed068cf5 271#endif
ed068cf5 272
b2f4bed8
MM
273/* Write the address of the entity given by SYMBOL to SEC. */
274extern void assemble_addr_to_section (rtx, section *);
275
ed068cf5 276/* Return the size of the constant pool. */
0c20a65f 277extern int get_pool_size (void);
ed068cf5 278
36f0e0a6 279#ifdef HAVE_peephole
0c20a65f 280extern rtx peephole (rtx);
36f0e0a6
KG
281#endif
282
1d3dbd99 283extern void output_shared_constant_pool (void);
ed068cf5 284
aacd3885
RS
285extern void output_object_blocks (void);
286
a803773f
JM
287extern void output_quoted_string (FILE *, const char *);
288
ed068cf5
RK
289/* Output assembler code for constant EXP to FILE, with no label.
290 This includes the pseudo-op such as ".int" or ".byte", and a newline.
291 Assumes output_addressed_constants has been done on EXP already.
292
293 Generate exactly SIZE bytes of assembler data, padding at the end
c8af3574
RH
294 with zeros if necessary. SIZE must always be specified.
295
296 ALIGN is the alignment in bits that may be assumed for the data. */
0c20a65f 297extern void output_constant (tree, unsigned HOST_WIDE_INT, unsigned int);
aaff8ce0 298
0c2768fc
RS
299/* When outputting delayed branch sequences, this rtx holds the
300 sequence being output. It is null when no delayed branch
301 sequence is being output, so it can be used as a test in the
302 insn output code.
303
304 This variable is defined in final.c. */
305extern rtx final_sequence;
306
f4dc8d96
NB
307/* The line number of the beginning of the current function. Various
308 md code needs this so that it can output relative linenumbers. */
309
310#ifdef SDB_DEBUGGING_INFO /* Avoid undef sym in certain broken linkers. */
311extern int sdb_begin_function_line;
312#endif
313
49ad7cfa 314/* File in which assembler code is being written. */
0c2768fc 315
49ad7cfa
BS
316#ifdef BUFSIZ
317extern FILE *asm_out_file;
318#endif
3b304f5b
ZW
319
320/* The first global object in the file. */
321extern const char *first_global_object_name;
322
323/* The first weak object in the file. */
324extern const char *weak_global_object_name;
325
afe48e06 326/* Nonnull if the insn currently being emitted was a COND_EXEC pattern. */
bcda12f4 327extern rtx current_insn_predicate;
afe48e06 328
b1a9f6a0 329/* Last insn processed by final_scan_insn. */
bcda12f4 330extern rtx current_output_insn;
b1a9f6a0 331
c8b94768 332/* Nonzero while outputting an `asm' with operands.
0e61db61 333 This means that inconsistencies are the user's fault, so don't die.
c8b94768
RH
334 The precise value is the insn being output, to pass to error_for_asm. */
335extern rtx this_is_asm_operands;
336
f6db1481
RH
337/* Carry information from ASM_DECLARE_OBJECT_NAME
338 to ASM_FINISH_DECLARE_OBJECT. */
339extern int size_directive_output;
340extern tree last_assemble_variable_decl;
341
87c8b4be
CT
342extern bool first_function_block_is_cold;
343
4e4d733e
L
344/* Decide whether DECL needs to be in a writable section.
345 RELOC is the same as for SELECT_SECTION. */
3101faab 346extern bool decl_readonly_section (const_tree, int);
19283265 347
b2218cc1
AO
348/* This can be used to compute RELOC for the function above, when
349 given a constant expression. */
350extern int compute_reloc_for_constant (tree);
351
19283265 352/* User label prefix in effect for this compilation. */
87e11268 353extern const char *user_label_prefix;
98577d03 354
08c148a8 355/* Default target function prologue and epilogue assembler output. */
0c20a65f 356extern void default_function_pro_epilogue (FILE *, HOST_WIDE_INT);
b4c25db2 357
14d11d40
IS
358/* Default target function switched text sections. */
359extern void default_function_switched_text_sections (FILE *, tree, bool);
360
b4c25db2 361/* Default target hook that outputs nothing to a stream. */
0c20a65f 362extern void no_asm_to_stream (FILE *);
7c262518 363
d55d8fc7 364/* Flags controlling properties of a section. */
201556f0
JJ
365#define SECTION_ENTSIZE 0x000ff /* entity size in section */
366#define SECTION_CODE 0x00100 /* contains code */
367#define SECTION_WRITE 0x00200 /* data is writable */
368#define SECTION_DEBUG 0x00400 /* contains debug data */
369#define SECTION_LINKONCE 0x00800 /* is linkonce */
370#define SECTION_SMALL 0x01000 /* contains "small data" */
371#define SECTION_BSS 0x02000 /* contains zeros only */
372#define SECTION_FORGET 0x04000 /* forget that we've entered the section */
373#define SECTION_MERGE 0x08000 /* contains mergeable data */
374#define SECTION_STRINGS 0x10000 /* contains zero terminated strings without
375 embedded zeros */
10c45943 376#define SECTION_OVERRIDE 0x20000 /* allow override of default flags */
3d78f2e9 377#define SECTION_TLS 0x40000 /* contains thread-local storage */
6a0a6ac4 378#define SECTION_NOTYPE 0x80000 /* don't output @progbits */
d6b5193b 379#define SECTION_DECLARED 0x100000 /* section has been used */
434aeebb
RS
380#define SECTION_STYLE_MASK 0x600000 /* bits used for SECTION_STYLE */
381#define SECTION_COMMON 0x800000 /* contains common data */
7fece979 382#define SECTION_RELRO 0x1000000 /* data is readonly after relocation processing */
2dc5ca18
GJL
383#define SECTION_EXCLUDE 0x2000000 /* discarded by the linker */
384#define SECTION_MACH_DEP 0x4000000 /* subsequent bits reserved for target */
434aeebb
RS
385
386/* This SECTION_STYLE is used for unnamed sections that we can switch
387 to using a special assembler directive. */
388#define SECTION_UNNAMED 0x000000
389
390/* This SECTION_STYLE is used for named sections that we can switch
391 to using a general section directive. */
392#define SECTION_NAMED 0x200000
393
394/* This SECTION_STYLE is used for sections that we cannot switch to at
395 all. The choice of section is implied by the directive that we use
396 to declare the object. */
397#define SECTION_NOSWITCH 0x400000
7c262518 398
7dcbf659
JH
399/* A helper function for default_elf_select_section and
400 default_elf_unique_section. Categorizes the DECL. */
401
402enum section_category
403{
404 SECCAT_TEXT,
405
406 SECCAT_RODATA,
407 SECCAT_RODATA_MERGE_STR,
408 SECCAT_RODATA_MERGE_STR_INIT,
409 SECCAT_RODATA_MERGE_CONST,
410 SECCAT_SRODATA,
411
412 SECCAT_DATA,
413
414 /* To optimize loading of shared programs, define following subsections
415 of data section:
416 _REL Contains data that has relocations, so they get grouped
417 together and dynamic linker will visit fewer pages in memory.
418 _RO Contains data that is otherwise read-only. This is useful
419 with prelinking as most relocations won't be dynamically
420 linked and thus stay read only.
421 _LOCAL Marks data containing relocations only to local objects.
422 These relocations will get fully resolved by prelinking. */
423 SECCAT_DATA_REL,
424 SECCAT_DATA_REL_LOCAL,
425 SECCAT_DATA_REL_RO,
426 SECCAT_DATA_REL_RO_LOCAL,
427
428 SECCAT_SDATA,
429 SECCAT_TDATA,
430
431 SECCAT_BSS,
432 SECCAT_SBSS,
8b84c596 433 SECCAT_TBSS
7dcbf659
JH
434};
435
d6b5193b 436/* Information that is provided by all instances of the section type. */
d1b38208 437struct GTY(()) section_common {
d6b5193b
RS
438 /* The set of SECTION_* flags that apply to this section. */
439 unsigned int flags;
440};
441
434aeebb 442/* Information about a SECTION_NAMED section. */
d1b38208 443struct GTY(()) named_section {
d6b5193b
RS
444 struct section_common common;
445
446 /* The name of the section. */
447 const char *name;
448
449 /* If nonnull, the VAR_DECL or FUNCTION_DECL with which the
450 section is associated. */
451 tree decl;
452};
453
454/* A callback that writes the assembly code for switching to an unnamed
455 section. The argument provides callback-specific data. */
456typedef void (*unnamed_section_callback) (const void *);
457
434aeebb 458/* Information about a SECTION_UNNAMED section. */
d1b38208 459struct GTY(()) unnamed_section {
d6b5193b
RS
460 struct section_common common;
461
462 /* The callback used to switch to the section, and the data that
463 should be passed to the callback. */
464 unnamed_section_callback GTY ((skip)) callback;
465 const void *GTY ((skip)) data;
466
467 /* The next entry in the chain of unnamed sections. */
468 section *next;
469};
470
434aeebb
RS
471/* A callback that writes the assembly code for a decl in a
472 SECTION_NOSWITCH section. DECL is the decl that should be assembled
473 and NAME is the name of its SYMBOL_REF. SIZE is the size of the decl
474 in bytes and ROUNDED is that size rounded up to the next
475 BIGGEST_ALIGNMENT / BITS_PER_UNIT boundary.
476
477 Return true if the callback used DECL_ALIGN to set the object's
478 alignment. A false return value implies that we are relying
479 on the rounded size to align the decl. */
480typedef bool (*noswitch_section_callback) (tree decl, const char *name,
481 unsigned HOST_WIDE_INT size,
482 unsigned HOST_WIDE_INT rounded);
483
484/* Information about a SECTION_NOSWITCH section. */
d1b38208 485struct GTY(()) noswitch_section {
434aeebb
RS
486 struct section_common common;
487
488 /* The callback used to assemble decls in this section. */
489 noswitch_section_callback GTY ((skip)) callback;
490};
491
d6b5193b 492/* Information about a section, which may be named or unnamed. */
d1b38208 493union GTY ((desc ("SECTION_STYLE (&(%h))"))) section {
d6b5193b
RS
494 struct section_common GTY ((skip)) common;
495 struct named_section GTY ((tag ("SECTION_NAMED"))) named;
434aeebb
RS
496 struct unnamed_section GTY ((tag ("SECTION_UNNAMED"))) unnamed;
497 struct noswitch_section GTY ((tag ("SECTION_NOSWITCH"))) noswitch;
d6b5193b
RS
498};
499
434aeebb
RS
500/* Return the style of section SECT. */
501#define SECTION_STYLE(SECT) ((SECT)->common.flags & SECTION_STYLE_MASK)
502
aacd3885
RS
503struct object_block;
504
d6b5193b
RS
505/* Special well-known sections. */
506extern GTY(()) section *text_section;
507extern GTY(()) section *data_section;
508extern GTY(()) section *readonly_data_section;
509extern GTY(()) section *sdata_section;
510extern GTY(()) section *ctors_section;
511extern GTY(()) section *dtors_section;
512extern GTY(()) section *bss_section;
513extern GTY(()) section *sbss_section;
d6b5193b
RS
514extern GTY(()) section *exception_section;
515extern GTY(()) section *eh_frame_section;
434aeebb
RS
516extern GTY(()) section *tls_comm_section;
517extern GTY(()) section *comm_section;
518extern GTY(()) section *lcomm_section;
519extern GTY(()) section *bss_noswitch_section;
d6b5193b
RS
520
521extern GTY(()) section *in_section;
c543ca49 522extern GTY(()) bool in_cold_section_p;
d6b5193b
RS
523
524extern section *get_unnamed_section (unsigned int, void (*) (const void *),
525 const void *);
526extern section *get_section (const char *, unsigned int, tree);
527extern section *get_named_section (tree, const char *, int);
7fece979 528extern section *get_variable_section (tree, bool);
aacd3885
RS
529extern void place_block_symbol (rtx);
530extern rtx get_section_anchor (struct object_block *, HOST_WIDE_INT,
531 enum tls_model);
d6b5193b
RS
532extern section *mergeable_constant_section (enum machine_mode,
533 unsigned HOST_WIDE_INT,
534 unsigned int);
535extern section *function_section (tree);
536extern section *unlikely_text_section (void);
537extern section *current_function_section (void);
538
b2f4bed8
MM
539/* Return the numbered .ctors.N (if CONSTRUCTOR_P) or .dtors.N (if
540 not) section for PRIORITY. */
541extern section *get_cdtor_priority_section (int, bool);
542
d6b5193b
RS
543extern bool unlikely_text_section_p (section *);
544extern void switch_to_section (section *);
545extern void output_section_asm_op (const void *);
7dcbf659 546
0a35513e
AH
547extern void record_tm_clone_pair (tree, tree);
548extern void finish_tm_clone_pairs (void);
549extern tree get_tm_clone_pair (tree);
550
b5f5d41d
AS
551extern void default_asm_output_source_filename (FILE *, const char *);
552extern void output_file_directive (FILE *, const char *);
553
bcda12f4 554extern unsigned int default_section_type_flags (tree, const char *, int);
0c20a65f 555
434aeebb 556extern bool have_global_bss_p (void);
2d7b0500
DE
557extern bool bss_initializer_p (const_tree);
558
c18a5b6c
MM
559extern void default_no_named_section (const char *, unsigned int, tree);
560extern void default_elf_asm_named_section (const char *, unsigned int, tree);
3101faab 561extern enum section_category categorize_decl_for_section (const_tree, int);
c18a5b6c
MM
562extern void default_coff_asm_named_section (const char *, unsigned int, tree);
563extern void default_pe_asm_named_section (const char *, unsigned int, tree);
0c20a65f 564
bcda12f4
SB
565extern void default_named_section_asm_out_destructor (rtx, int);
566extern void default_dtor_section_asm_out_destructor (rtx, int);
bcda12f4
SB
567extern void default_named_section_asm_out_constructor (rtx, int);
568extern void default_ctor_section_asm_out_constructor (rtx, int);
0c20a65f 569
9b580a0b
RH
570extern section *default_select_section (tree, int, unsigned HOST_WIDE_INT);
571extern section *default_elf_select_section (tree, int, unsigned HOST_WIDE_INT);
0c20a65f 572extern void default_unique_section (tree, int);
d6b5193b
RS
573extern section *default_function_rodata_section (tree);
574extern section *default_no_function_rodata_section (tree);
50b0b78a 575extern section *default_clone_table_section (void);
d6b5193b 576extern section *default_select_rtx_section (enum machine_mode, rtx,
0c20a65f 577 unsigned HOST_WIDE_INT);
d6b5193b
RS
578extern section *default_elf_select_rtx_section (enum machine_mode, rtx,
579 unsigned HOST_WIDE_INT);
0c20a65f
AJ
580extern void default_encode_section_info (tree, rtx, int);
581extern const char *default_strip_name_encoding (const char *);
aacd3885 582extern void default_asm_output_anchor (rtx);
3101faab
KG
583extern bool default_use_anchors_for_symbol_p (const_rtx);
584extern bool default_binds_local_p (const_tree);
585extern bool default_binds_local_p_1 (const_tree, int);
0c20a65f 586extern void default_globalize_label (FILE *, const char *);
812b587e 587extern void default_globalize_decl_name (FILE *, tree);
eeab4d81 588extern void default_emit_unwind_label (FILE *, tree, int, int);
083cad55 589extern void default_emit_except_table_label (FILE *);
4ee3b013
JR
590extern void default_generate_internal_label (char *, const char *,
591 unsigned long);
0c20a65f 592extern void default_internal_label (FILE *, const char *, unsigned long);
e4f7c483
AS
593extern void default_asm_declare_constant_name (FILE *, const char *,
594 const_tree, HOST_WIDE_INT);
0c20a65f
AJ
595extern void default_file_start (void);
596extern void file_end_indicate_exec_stack (void);
7458026b 597extern void file_end_indicate_split_stack (void);
772c5265 598
c47c29c8
L
599extern void default_elf_asm_output_external (FILE *file, tree,
600 const char *);
5e3929ed
DA
601extern void default_elf_asm_output_limited_string (FILE *, const char *);
602extern void default_elf_asm_output_ascii (FILE *, const char *, unsigned int);
603extern void default_elf_internal_label (FILE *, const char *, unsigned long);
604
9ce7ad7f
L
605extern void default_elf_init_array_asm_out_constructor (rtx, int);
606extern void default_elf_fini_array_asm_out_destructor (rtx, int);
c47c29c8
L
607extern int maybe_assemble_visibility (tree);
608
b413068c 609extern int default_address_cost (rtx, enum machine_mode, addr_space_t, bool);
e91e4f6c 610
d3c12306
EB
611/* Output stack usage information. */
612extern void output_stack_usage (void);
613
e91e4f6c 614#endif /* ! GCC_OUTPUT_H */
This page took 6.237205 seconds and 5 git commands to generate.