comparison gcc/output.h @ 67:f6334be47118

update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
date Tue, 22 Mar 2011 17:18:12 +0900
parents 77e2b8dfacca
children 04ced10e8804
comparison
equal deleted inserted replaced
65:65488c3d617d 67:f6334be47118
1 /* Declarations for insn-output.c. These functions are defined in recog.c, 1 /* Declarations for insn-output.c. These functions are defined in recog.c,
2 final.c, and varasm.c. 2 final.c, and varasm.c.
3 Copyright (C) 1987, 1991, 1994, 1997, 1998, 1999, 2000, 2001, 2002, 3 Copyright (C) 1987, 1991, 1994, 1997, 1998, 1999, 2000, 2001, 2002,
4 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. 4 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
5 Free Software Foundation, Inc.
5 6
6 This file is part of GCC. 7 This file is part of GCC.
7 8
8 GCC is free software; you can redistribute it and/or modify it under 9 GCC is free software; you can redistribute it and/or modify it under
9 the terms of the GNU General Public License as published by the Free 10 the terms of the GNU General Public License as published by the Free
74 extern rtx final_scan_insn (rtx, FILE *, int, int, int *); 75 extern rtx final_scan_insn (rtx, FILE *, int, int, int *);
75 76
76 /* Replace a SUBREG with a REG or a MEM, based on the thing it is a 77 /* Replace a SUBREG with a REG or a MEM, based on the thing it is a
77 subreg of. */ 78 subreg of. */
78 extern rtx alter_subreg (rtx *); 79 extern rtx alter_subreg (rtx *);
80
81 /* Print an operand using machine-dependent assembler syntax. */
82 extern void output_operand (rtx, int);
79 83
80 /* Report inconsistency between the assembler template and the operands. 84 /* Report inconsistency between the assembler template and the operands.
81 In an `asm', it's the user's fault; otherwise, the compiler's fault. */ 85 In an `asm', it's the user's fault; otherwise, the compiler's fault. */
82 extern void output_operand_lossage (const char *, ...) ATTRIBUTE_PRINTF_1; 86 extern void output_operand_lossage (const char *, ...) ATTRIBUTE_PRINTF_1;
83 87
159 extern void merge_weak (tree, tree); 163 extern void merge_weak (tree, tree);
160 164
161 /* Emit any pending weak declarations. */ 165 /* Emit any pending weak declarations. */
162 extern void weak_finish (void); 166 extern void weak_finish (void);
163 167
164 /* Emit any pending emutls declarations and initializations. */ 168 /* Return the default TLS model for a given variable. */
165 extern void emutls_finish (void); 169 extern enum tls_model decl_default_tls_model (const_tree);
166 170
167 /* Decode an `asm' spec for a declaration as a register name. 171 /* Decode an `asm' spec for a declaration as a register name.
168 Return the register number, or -1 if nothing specified, 172 Return the register number, or -1 if nothing specified,
169 or -2 if the ASMSPEC is not `cc' or `memory' and is not recognized, 173 or -2 if the ASMSPEC is not `cc' or `memory' and is not recognized,
170 or -3 if ASMSPEC is `cc' and is not recognized, 174 or -3 if ASMSPEC is `cc' and is not recognized,
171 or -4 if ASMSPEC is `memory' and is not recognized. 175 or -4 if ASMSPEC is `memory' and is not recognized.
172 Accept an exact spelling or a decimal number. 176 Accept an exact spelling or a decimal number.
173 Prefixes such as % are optional. */ 177 Prefixes such as % are optional. */
174 extern int decode_reg_name (const char *); 178 extern int decode_reg_name (const char *);
175 179
180 /* Similar to decode_reg_name, but takes an extra parameter that is a
181 pointer to the number of (internal) registers described by the
182 external name. */
183 extern int decode_reg_name_and_count (const char *, int *);
184
176 extern void assemble_alias (tree, tree); 185 extern void assemble_alias (tree, tree);
177 186
178 extern void default_assemble_visibility (tree, int); 187 extern void default_assemble_visibility (tree, int);
179 188
180 /* Output a string of literal assembler code 189 /* Output a string of literal assembler code
222 231
223 /* Similar, for calling a library function FUN. */ 232 /* Similar, for calling a library function FUN. */
224 extern void assemble_external_libcall (rtx); 233 extern void assemble_external_libcall (rtx);
225 234
226 /* Assemble a label named NAME. */ 235 /* Assemble a label named NAME. */
227 extern void assemble_label (const char *); 236 extern void assemble_label (FILE *, const char *);
228 237
229 /* Output to FILE (an assembly file) a reference to NAME. If NAME 238 /* Output to FILE (an assembly file) a reference to NAME. If NAME
230 starts with a *, the rest of NAME is output verbatim. Otherwise 239 starts with a *, the rest of NAME is output verbatim. Otherwise
231 NAME is transformed in a target-specific way (usually by the 240 NAME is transformed in a target-specific way (usually by the
232 addition of an underscore). */ 241 addition of an underscore). */
258 the alignment of the integer in bits. Return 1 if we were able to output 267 the alignment of the integer in bits. Return 1 if we were able to output
259 the constant, otherwise 0. If FORCE is nonzero the constant must 268 the constant, otherwise 0. If FORCE is nonzero the constant must
260 be outputable. */ 269 be outputable. */
261 extern bool assemble_integer (rtx, unsigned, unsigned, int); 270 extern bool assemble_integer (rtx, unsigned, unsigned, int);
262 271
272 /* Return section for TEXT_SECITON_NAME if DECL or DECL_SECTION_NAME (DECL)
273 is NULL. */
274 extern section *get_named_text_section (tree, const char *, const char *);
275
263 /* An interface to assemble_integer for the common case in which a value is 276 /* An interface to assemble_integer for the common case in which a value is
264 fully aligned and must be printed. VALUE is the value of the integer 277 fully aligned and must be printed. VALUE is the value of the integer
265 object and SIZE is the number of bytes it contains. */ 278 object and SIZE is the number of bytes it contains. */
266 #define assemble_aligned_integer(SIZE, VALUE) \ 279 #define assemble_aligned_integer(SIZE, VALUE) \
267 assemble_integer (VALUE, SIZE, (SIZE) * BITS_PER_UNIT, 1) 280 assemble_integer (VALUE, SIZE, (SIZE) * BITS_PER_UNIT, 1)
282 #endif 295 #endif
283 296
284 extern void output_shared_constant_pool (void); 297 extern void output_shared_constant_pool (void);
285 298
286 extern void output_object_blocks (void); 299 extern void output_object_blocks (void);
300
301 extern void output_quoted_string (FILE *, const char *);
287 302
288 /* Whether a constructor CTOR is a valid static constant initializer if all 303 /* Whether a constructor CTOR is a valid static constant initializer if all
289 its elements are. This used to be internal to initializer_constant_valid_p 304 its elements are. This used to be internal to initializer_constant_valid_p
290 and has been exposed to let other functions like categorize_ctor_elements 305 and has been exposed to let other functions like categorize_ctor_elements
291 evaluate the property while walking a constructor for other purposes. */ 306 evaluate the property while walking a constructor for other purposes. */
399 /* User label prefix in effect for this compilation. */ 414 /* User label prefix in effect for this compilation. */
400 extern const char *user_label_prefix; 415 extern const char *user_label_prefix;
401 416
402 /* Default target function prologue and epilogue assembler output. */ 417 /* Default target function prologue and epilogue assembler output. */
403 extern void default_function_pro_epilogue (FILE *, HOST_WIDE_INT); 418 extern void default_function_pro_epilogue (FILE *, HOST_WIDE_INT);
419
420 /* Default target function switched text sections. */
421 extern void default_function_switched_text_sections (FILE *, tree, bool);
404 422
405 /* Default target hook that outputs nothing to a stream. */ 423 /* Default target hook that outputs nothing to a stream. */
406 extern void no_asm_to_stream (FILE *); 424 extern void no_asm_to_stream (FILE *);
407 425
408 /* Flags controlling properties of a section. */ 426 /* Flags controlling properties of a section. */
421 #define SECTION_TLS 0x40000 /* contains thread-local storage */ 439 #define SECTION_TLS 0x40000 /* contains thread-local storage */
422 #define SECTION_NOTYPE 0x80000 /* don't output @progbits */ 440 #define SECTION_NOTYPE 0x80000 /* don't output @progbits */
423 #define SECTION_DECLARED 0x100000 /* section has been used */ 441 #define SECTION_DECLARED 0x100000 /* section has been used */
424 #define SECTION_STYLE_MASK 0x600000 /* bits used for SECTION_STYLE */ 442 #define SECTION_STYLE_MASK 0x600000 /* bits used for SECTION_STYLE */
425 #define SECTION_COMMON 0x800000 /* contains common data */ 443 #define SECTION_COMMON 0x800000 /* contains common data */
426 #define SECTION_MACH_DEP 0x1000000 /* subsequent bits reserved for target */ 444 #define SECTION_RELRO 0x1000000 /* data is readonly after relocation processing */
445 #define SECTION_MACH_DEP 0x2000000 /* subsequent bits reserved for target */
427 446
428 /* This SECTION_STYLE is used for unnamed sections that we can switch 447 /* This SECTION_STYLE is used for unnamed sections that we can switch
429 to using a special assembler directive. */ 448 to using a special assembler directive. */
430 #define SECTION_UNNAMED 0x000000 449 #define SECTION_UNNAMED 0x000000
431 450
470 SECCAT_SDATA, 489 SECCAT_SDATA,
471 SECCAT_TDATA, 490 SECCAT_TDATA,
472 491
473 SECCAT_BSS, 492 SECCAT_BSS,
474 SECCAT_SBSS, 493 SECCAT_SBSS,
475 SECCAT_TBSS, 494 SECCAT_TBSS
476
477 SECCAT_EMUTLS_VAR,
478 SECCAT_EMUTLS_TMPL
479 }; 495 };
480 496
481 /* Information that is provided by all instances of the section type. */ 497 /* Information that is provided by all instances of the section type. */
482 struct GTY(()) section_common { 498 struct GTY(()) section_common {
483 /* The set of SECTION_* flags that apply to this section. */ 499 /* The set of SECTION_* flags that apply to this section. */
568 584
569 extern section *get_unnamed_section (unsigned int, void (*) (const void *), 585 extern section *get_unnamed_section (unsigned int, void (*) (const void *),
570 const void *); 586 const void *);
571 extern section *get_section (const char *, unsigned int, tree); 587 extern section *get_section (const char *, unsigned int, tree);
572 extern section *get_named_section (tree, const char *, int); 588 extern section *get_named_section (tree, const char *, int);
589 extern section *get_variable_section (tree, bool);
573 extern void place_block_symbol (rtx); 590 extern void place_block_symbol (rtx);
574 extern rtx get_section_anchor (struct object_block *, HOST_WIDE_INT, 591 extern rtx get_section_anchor (struct object_block *, HOST_WIDE_INT,
575 enum tls_model); 592 enum tls_model);
576 extern section *mergeable_constant_section (enum machine_mode, 593 extern section *mergeable_constant_section (enum machine_mode,
577 unsigned HOST_WIDE_INT, 594 unsigned HOST_WIDE_INT,
585 extern section *get_cdtor_priority_section (int, bool); 602 extern section *get_cdtor_priority_section (int, bool);
586 603
587 extern bool unlikely_text_section_p (section *); 604 extern bool unlikely_text_section_p (section *);
588 extern void switch_to_section (section *); 605 extern void switch_to_section (section *);
589 extern void output_section_asm_op (const void *); 606 extern void output_section_asm_op (const void *);
607
608 extern void default_asm_output_source_filename (FILE *, const char *);
609 extern void output_file_directive (FILE *, const char *);
590 610
591 extern unsigned int default_section_type_flags (tree, const char *, int); 611 extern unsigned int default_section_type_flags (tree, const char *, int);
592 612
593 extern bool have_global_bss_p (void); 613 extern bool have_global_bss_p (void);
594 extern void default_no_named_section (const char *, unsigned int, tree); 614 extern void default_no_named_section (const char *, unsigned int, tree);
621 extern bool default_binds_local_p_1 (const_tree, int); 641 extern bool default_binds_local_p_1 (const_tree, int);
622 extern void default_globalize_label (FILE *, const char *); 642 extern void default_globalize_label (FILE *, const char *);
623 extern void default_globalize_decl_name (FILE *, tree); 643 extern void default_globalize_decl_name (FILE *, tree);
624 extern void default_emit_unwind_label (FILE *, tree, int, int); 644 extern void default_emit_unwind_label (FILE *, tree, int, int);
625 extern void default_emit_except_table_label (FILE *); 645 extern void default_emit_except_table_label (FILE *);
646 extern void default_generate_internal_label (char *, const char *,
647 unsigned long);
626 extern void default_internal_label (FILE *, const char *, unsigned long); 648 extern void default_internal_label (FILE *, const char *, unsigned long);
649 extern void default_asm_declare_constant_name (FILE *, const char *,
650 const_tree, HOST_WIDE_INT);
627 extern void default_file_start (void); 651 extern void default_file_start (void);
628 extern void file_end_indicate_exec_stack (void); 652 extern void file_end_indicate_exec_stack (void);
653 extern void file_end_indicate_split_stack (void);
629 654
630 extern void default_elf_asm_output_external (FILE *file, tree, 655 extern void default_elf_asm_output_external (FILE *file, tree,
631 const char *); 656 const char *);
632 extern int maybe_assemble_visibility (tree); 657 extern int maybe_assemble_visibility (tree);
633 658
634 extern int default_address_cost (rtx, bool); 659 extern int default_address_cost (rtx, bool);
660
661 /* Output stack usage information. */
662 extern void output_stack_usage (void);
635 663
636 /* dbxout helper functions */ 664 /* dbxout helper functions */
637 #if defined DBX_DEBUGGING_INFO || defined XCOFF_DEBUGGING_INFO 665 #if defined DBX_DEBUGGING_INFO || defined XCOFF_DEBUGGING_INFO
638 666
639 extern void dbxout_int (int); 667 extern void dbxout_int (int);