X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fdwarf2asm.c;h=c2ca9166f460ca699359d31044fda5ab49b8ec7b;hb=c342158555be3354f4e7475c55c7d8eecdbd6b69;hp=777ba8da71cceab2ee8c2cae519f5650a9a03333;hpb=805e22b2051e9c6a75377ea6599654d7415da483;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/dwarf2asm.c b/gcc/dwarf2asm.c index 777ba8da71c..c2ca9166f46 100644 --- a/gcc/dwarf2asm.c +++ b/gcc/dwarf2asm.c @@ -67,13 +67,12 @@ dw2_assemble_integer (size, x) /* Output an immediate constant in a given size. */ void -dw2_asm_output_data VPARAMS ((int size, unsigned HOST_WIDE_INT value, - const char *comment, ...)) +dw2_asm_output_data (int size, unsigned HOST_WIDE_INT value, + const char *comment, ...) { - VA_OPEN (ap, comment); - VA_FIXEDARG (ap, int, size); - VA_FIXEDARG (ap, unsigned HOST_WIDE_INT, value); - VA_FIXEDARG (ap, const char *, comment); + va_list ap; + + va_start (ap, comment); if (size * 8 < HOST_BITS_PER_WIDE_INT) value &= ~(~(unsigned HOST_WIDE_INT) 0 << (size * 8)); @@ -87,7 +86,7 @@ dw2_asm_output_data VPARAMS ((int size, unsigned HOST_WIDE_INT value, } fputc ('\n', asm_out_file); - VA_CLOSE (ap); + va_end (ap); } /* Output the difference between two symbols in a given size. */ @@ -97,14 +96,12 @@ dw2_asm_output_data VPARAMS ((int size, unsigned HOST_WIDE_INT value, symbol must appear after both symbols are defined. */ void -dw2_asm_output_delta VPARAMS ((int size, const char *lab1, const char *lab2, - const char *comment, ...)) +dw2_asm_output_delta (int size, const char *lab1, const char *lab2, + const char *comment, ...) { - VA_OPEN (ap, comment); - VA_FIXEDARG (ap, int, size); - VA_FIXEDARG (ap, const char *, lab1); - VA_FIXEDARG (ap, const char *, lab2); - VA_FIXEDARG (ap, const char *, comment); + va_list ap; + + va_start (ap, comment); #ifdef ASM_OUTPUT_DWARF_DELTA ASM_OUTPUT_DWARF_DELTA (asm_out_file, size, lab1, lab2); @@ -121,7 +118,7 @@ dw2_asm_output_delta VPARAMS ((int size, const char *lab1, const char *lab2, } fputc ('\n', asm_out_file); - VA_CLOSE (ap); + va_end (ap); } /* Output a section-relative reference to a label. In general this @@ -131,13 +128,12 @@ dw2_asm_output_delta VPARAMS ((int size, const char *lab1, const char *lab2, Some targets have special relocations for this that we must use. */ void -dw2_asm_output_offset VPARAMS ((int size, const char *label, - const char *comment, ...)) +dw2_asm_output_offset (int size, const char *label, + const char *comment, ...) { - VA_OPEN (ap, comment); - VA_FIXEDARG (ap, int, size); - VA_FIXEDARG (ap, const char *, label); - VA_FIXEDARG (ap, const char *, comment); + va_list ap; + + va_start (ap, comment); #ifdef ASM_OUTPUT_DWARF_OFFSET ASM_OUTPUT_DWARF_OFFSET (asm_out_file, size, label); @@ -152,21 +148,20 @@ dw2_asm_output_offset VPARAMS ((int size, const char *label, } fputc ('\n', asm_out_file); - VA_CLOSE (ap); + va_end (ap); } /* Output a self-relative reference to a label, possibly in a different section or object file. */ void -dw2_asm_output_pcrel VPARAMS ((int size ATTRIBUTE_UNUSED, - const char *label ATTRIBUTE_UNUSED, - const char *comment, ...)) +dw2_asm_output_pcrel (int size ATTRIBUTE_UNUSED, + const char *label ATTRIBUTE_UNUSED, + const char *comment, ...) { - VA_OPEN (ap, comment); - VA_FIXEDARG (ap, int, size); - VA_FIXEDARG (ap, const char *, label); - VA_FIXEDARG (ap, const char *, comment); + va_list ap; + + va_start (ap, comment); #ifdef ASM_OUTPUT_DWARF_PCREL ASM_OUTPUT_DWARF_PCREL (asm_out_file, size, label); @@ -184,19 +179,18 @@ dw2_asm_output_pcrel VPARAMS ((int size ATTRIBUTE_UNUSED, } fputc ('\n', asm_out_file); - VA_CLOSE (ap); + va_end (ap); } /* Output an absolute reference to a label. */ void -dw2_asm_output_addr VPARAMS ((int size, const char *label, - const char *comment, ...)) +dw2_asm_output_addr (int size, const char *label, + const char *comment, ...) { - VA_OPEN (ap, comment); - VA_FIXEDARG (ap, int, size); - VA_FIXEDARG (ap, const char *, label); - VA_FIXEDARG (ap, const char *, comment); + va_list ap; + + va_start (ap, comment); dw2_assemble_integer (size, gen_rtx_SYMBOL_REF (Pmode, label)); @@ -207,19 +201,18 @@ dw2_asm_output_addr VPARAMS ((int size, const char *label, } fputc ('\n', asm_out_file); - VA_CLOSE (ap); + va_end (ap); } /* Similar, but use an RTX expression instead of a text label. */ void -dw2_asm_output_addr_rtx VPARAMS ((int size, rtx addr, - const char *comment, ...)) +dw2_asm_output_addr_rtx (int size, rtx addr, + const char *comment, ...) { - VA_OPEN (ap, comment); - VA_FIXEDARG (ap, int, size); - VA_FIXEDARG (ap, rtx, addr); - VA_FIXEDARG (ap, const char *, comment); + va_list ap; + + va_start (ap, comment); dw2_assemble_integer (size, addr); @@ -230,19 +223,17 @@ dw2_asm_output_addr_rtx VPARAMS ((int size, rtx addr, } fputc ('\n', asm_out_file); - VA_CLOSE (ap); + va_end (ap); } void -dw2_asm_output_nstring VPARAMS ((const char *str, size_t orig_len, - const char *comment, ...)) +dw2_asm_output_nstring (const char *str, size_t orig_len, + const char *comment, ...) { size_t i, len; + va_list ap; - VA_OPEN (ap, comment); - VA_FIXEDARG (ap, const char *, str); - VA_FIXEDARG (ap, size_t, orig_len); - VA_FIXEDARG (ap, const char *, comment); + va_start (ap, comment); len = orig_len; @@ -277,7 +268,7 @@ dw2_asm_output_nstring VPARAMS ((const char *str, size_t orig_len, assemble_integer (const0_rtx, 1, BITS_PER_UNIT, 1); } - VA_CLOSE (ap); + va_end (ap); } @@ -506,16 +497,15 @@ eh_data_format_name (format) /* Output an unsigned LEB128 quantity. */ void -dw2_asm_output_data_uleb128 VPARAMS ((unsigned HOST_WIDE_INT value, - const char *comment, ...)) +dw2_asm_output_data_uleb128 (unsigned HOST_WIDE_INT value, + const char *comment, ...) { - VA_OPEN (ap, comment); - VA_FIXEDARG (ap, unsigned HOST_WIDE_INT, value); - VA_FIXEDARG (ap, const char *, comment); + va_list ap; + + va_start (ap, comment); #ifdef HAVE_AS_LEB128 - fputs ("\t.uleb128 ", asm_out_file); - fprintf (asm_out_file, HOST_WIDE_INT_PRINT_HEX, value); + fprintf (asm_out_file, "\t.uleb128 " HOST_WIDE_INT_PRINT_HEX , value); if (flag_debug_asm && comment) { @@ -550,8 +540,8 @@ dw2_asm_output_data_uleb128 VPARAMS ((unsigned HOST_WIDE_INT value, if (flag_debug_asm) { - fprintf (asm_out_file, "\t%s uleb128 ", ASM_COMMENT_START); - fprintf (asm_out_file, HOST_WIDE_INT_PRINT_HEX, value); + fprintf (asm_out_file, "\t%s uleb128 " HOST_WIDE_INT_PRINT_HEX, + ASM_COMMENT_START, value); if (comment) { fputs ("; ", asm_out_file); @@ -562,22 +552,21 @@ dw2_asm_output_data_uleb128 VPARAMS ((unsigned HOST_WIDE_INT value, #endif fputc ('\n', asm_out_file); - VA_CLOSE (ap); + va_end (ap); } /* Output a signed LEB128 quantity. */ void -dw2_asm_output_data_sleb128 VPARAMS ((HOST_WIDE_INT value, - const char *comment, ...)) +dw2_asm_output_data_sleb128 (HOST_WIDE_INT value, + const char *comment, ...) { - VA_OPEN (ap, comment); - VA_FIXEDARG (ap, HOST_WIDE_INT, value); - VA_FIXEDARG (ap, const char *, comment); + va_list ap; + + va_start (ap, comment); #ifdef HAVE_AS_LEB128 - fputs ("\t.sleb128 ", asm_out_file); - fprintf (asm_out_file, HOST_WIDE_INT_PRINT_DEC, value); + fprintf (asm_out_file, "\t.sleb128 " HOST_WIDE_INT_PRINT_DEC, value); if (flag_debug_asm && comment) { @@ -615,8 +604,8 @@ dw2_asm_output_data_sleb128 VPARAMS ((HOST_WIDE_INT value, if (flag_debug_asm) { - fprintf (asm_out_file, "\t%s sleb128 ", ASM_COMMENT_START); - fprintf (asm_out_file, HOST_WIDE_INT_PRINT_DEC, value); + fprintf (asm_out_file, "\t%s sleb128 " HOST_WIDE_INT_PRINT_DEC, + ASM_COMMENT_START, value); if (comment) { fputs ("; ", asm_out_file); @@ -627,18 +616,17 @@ dw2_asm_output_data_sleb128 VPARAMS ((HOST_WIDE_INT value, #endif fputc ('\n', asm_out_file); - VA_CLOSE (ap); + va_end (ap); } void -dw2_asm_output_delta_uleb128 VPARAMS ((const char *lab1 ATTRIBUTE_UNUSED, - const char *lab2 ATTRIBUTE_UNUSED, - const char *comment, ...)) +dw2_asm_output_delta_uleb128 (const char *lab1 ATTRIBUTE_UNUSED, + const char *lab2 ATTRIBUTE_UNUSED, + const char *comment, ...) { - VA_OPEN (ap, comment); - VA_FIXEDARG (ap, const char *, lab1); - VA_FIXEDARG (ap, const char *, lab2); - VA_FIXEDARG (ap, const char *, comment); + va_list ap; + + va_start (ap, comment); #ifdef HAVE_AS_LEB128 fputs ("\t.uleb128 ", asm_out_file); @@ -656,18 +644,17 @@ dw2_asm_output_delta_uleb128 VPARAMS ((const char *lab1 ATTRIBUTE_UNUSED, } fputc ('\n', asm_out_file); - VA_CLOSE (ap); + va_end (ap); } void -dw2_asm_output_delta_sleb128 VPARAMS ((const char *lab1 ATTRIBUTE_UNUSED, - const char *lab2 ATTRIBUTE_UNUSED, - const char *comment, ...)) +dw2_asm_output_delta_sleb128 (const char *lab1 ATTRIBUTE_UNUSED, + const char *lab2 ATTRIBUTE_UNUSED, + const char *comment, ...) { - VA_OPEN (ap, comment); - VA_FIXEDARG (ap, const char *, lab1); - VA_FIXEDARG (ap, const char *, lab2); - VA_FIXEDARG (ap, const char *, comment); + va_list ap; + + va_start (ap, comment); #ifdef HAVE_AS_LEB128 fputs ("\t.sleb128 ", asm_out_file); @@ -685,15 +672,15 @@ dw2_asm_output_delta_sleb128 VPARAMS ((const char *lab1 ATTRIBUTE_UNUSED, } fputc ('\n', asm_out_file); - VA_CLOSE (ap); + va_end (ap); } -static int mark_indirect_pool_entry PARAMS ((splay_tree_node, void *)); -static void mark_indirect_pool PARAMS ((PTR arg)); static rtx dw2_force_const_mem PARAMS ((rtx)); static int dw2_output_indirect_constant_1 PARAMS ((splay_tree_node, void *)); -static splay_tree indirect_pool; +static GTY((param1_is (char *), param2_is (tree))) splay_tree indirect_pool; + +static GTY(()) int dw2_const_labelno; #if defined(HAVE_GAS_HIDDEN) && defined(SUPPORTS_ONE_ONLY) # define USE_LINKONCE_INDIRECT 1 @@ -701,26 +688,6 @@ static splay_tree indirect_pool; # define USE_LINKONCE_INDIRECT 0 #endif -/* Mark all indirect constants for GC. */ - -static int -mark_indirect_pool_entry (node, data) - splay_tree_node node; - void* data ATTRIBUTE_UNUSED; -{ - ggc_mark_tree ((tree) node->value); - return 0; -} - -/* Mark all indirect constants for GC. */ - -static void -mark_indirect_pool (arg) - PTR arg ATTRIBUTE_UNUSED; -{ - splay_tree_foreach (indirect_pool, mark_indirect_pool_entry, NULL); -} - /* Put X, a SYMBOL_REF, in memory. Return a SYMBOL_REF to the allocated memory. Differs from force_const_mem in that a single pool is used for the entire unit of translation, and the memory is not guaranteed to be @@ -735,10 +702,7 @@ dw2_force_const_mem (x) tree decl; if (! indirect_pool) - { - indirect_pool = splay_tree_new (splay_tree_compare_pointers, NULL, NULL); - ggc_add_root (&indirect_pool, 1, sizeof indirect_pool, mark_indirect_pool); - } + indirect_pool = splay_tree_new_ggc (splay_tree_compare_pointers); if (GET_CODE (x) != SYMBOL_REF) abort (); @@ -765,11 +729,10 @@ dw2_force_const_mem (x) } else { - extern int const_labelno; char label[32]; - ASM_GENERATE_INTERNAL_LABEL (label, "LC", const_labelno); - ++const_labelno; + ASM_GENERATE_INTERNAL_LABEL (label, "LDFCM", dw2_const_labelno); + ++dw2_const_labelno; id = get_identifier (label); decl = build_decl (VAR_DECL, id, ptr_type_node); DECL_ARTIFICIAL (decl) = 1; @@ -821,16 +784,13 @@ dw2_output_indirect_constants () /* Like dw2_asm_output_addr_rtx, but encode the pointer as directed. */ void -dw2_asm_output_encoded_addr_rtx VPARAMS ((int encoding, - rtx addr, - const char *comment, ...)) +dw2_asm_output_encoded_addr_rtx (int encoding, rtx addr, + const char *comment, ...) { int size; - - VA_OPEN (ap, comment); - VA_FIXEDARG (ap, int, encoding); - VA_FIXEDARG (ap, rtx, addr); - VA_FIXEDARG (ap, const char *, comment); + va_list ap; + + va_start (ap, comment); size = size_of_encoded_value (encoding); @@ -904,5 +864,7 @@ dw2_asm_output_encoded_addr_rtx VPARAMS ((int encoding, } fputc ('\n', asm_out_file); - VA_CLOSE (ap); + va_end (ap); } + +#include "gt-dwarf2asm.h"