Mercurial > hg > CbC > CbC_gcc
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); |