+2004-10-20 Zack Weinberg <zack@codesourcery.com>
+
+ * dbxout.c (asmfile): Delete. All uses changed to asm_out_file.
+ (DBX_BLOCKS_FUNCTION_RELATIVE, DBX_LINES_FUNCTION_RELATIVE):
+ Default to 0.
+ (dbxout_source_line): Use DBX_OUTPUT_SOURCE_LINE when defined.
+ When it is not, but DBX_LINES_FUNCTION_RELATIVE is true, emit
+ an internal label and an N_SLINE .stabn whose value is the
+ difference between that label and the function entry label.
+ (dbxout_finish): If DBX_OUTPUT_MAIN_SOURCE_FILE_END is not defined,
+ but DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END is, emit a
+ label and an N_SO stab with an empty string referring to it.
+ (dbx_output_lbrac, dbx_output_rbrac): Use if statement instead
+ of #ifdef directive to test DBX_BLOCKS_FUNCTION_RELATIVE.
+ (dbxout_type_methods, dbxout_symbol): Remove #if 0 block.
+ (dbxout_prepare_symbol): Remove #ifdef WINNING_GDB block, this
+ macro is never defined.
+ * sdbout.c (sdbout_source_line_counter): Delete.
+ (PUT_SDB_SRC_FILE): Delete. Uses replaced with sole definition.
+ (sdbout_source_line): Use SDB_OUTPUT_SOURCE_LINE, which takes
+ only two arguments.
+ * xcoffout.c (ASM_OUTPUT_SOURCE_LINE): Rename ASM_OUTPUT_LINE.
+
+ * config/dbxcoff.h, config/dbxelf.h: Remove unncessary #undefs.
+ * config/c4x/c4x.h, config/pa/pa.h: Remove unnecessary macro
+ definitions (identical to default).
+ * config/darwin.h, config/dbxcoff.h, config/dbxelf.h, config/ptx4.h
+ * config/h8300/coff.h, config/pa/som.h, config/sh/elf.h:
+ Define DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END, not
+ DBX_OUTPUT_MAIN_SOURCE_FILE_END.
+ * config/dbxcoff.h, config/dbxelf.h, config/ptx4.h
+ * config/mcore/mcore-pe.h, config/pa/som.h, config/sh/elf.h:
+ Define DBX_LINES_FUNCTION_RELATIVE, not ASM_OUTPUT_SOURCE_LINE.
+ * config/alpha/alpha-protos.h: Don't prototype alpha_output_lineno.
+ * config/alpha/alpha.c: Move declaration of num_source_filenames up.
+ (alpha_start_function): Use SDB_OUTPUT_SOURCE_LINE.
+ (sym_lineno): Delete.
+ (alpha_output_filename): Do not emit N_SOL stabs here. Remove
+ now-unused variable.
+ (alpha_output_lineno): Delete.
+ * config/mips/mips-protos.h: Don't prototype mips_output_lineno.
+ * config/mips/mips.c (mips_output_filename): Don't use
+ ASM_OUTPUT_FILENAME. Don't emit N_SOL stabs here.
+ (mips_output_lineno): Delete.
+ (mips_output_function_prologue: Use SDB_OUTPUT_SOURCE_LINE.
+ * config/alpha/alpha.h: Define DBX_OUTPUT_SOURCE_LINE and
+ SDB_OUTPUT_SOURCE_LINE, not ASM_OUTPUT_SOURCE_LINE.
+ * config/mips/mips.h: Likewise. Don't define ASM_OUTPUT_FILENAME.
+ * config/mips/sdb.h: Use SDB_OUTPUT_SOURCE_LINE.
+ * config/avr/avr.h: Don't define ASM_OUTPUT_SOURCE_LINE.
+ * config/mmix/mmix.h: Likewise.
+ * config/mmix/mmix.c (mmix_asm_output_source_line): Delete.
+ * config/mmix/mmix-protos.h: Don't prototype it.
+ * config/alpha/unicosmk.h: Also #undef PREFERRED_DEBUGGING_TYPE;
+ no need to #undef ASM_OUTPUT_SOURCE_LINE.
+ * config/arm/aout.h: Remove RISCiX-specific definition of
+ DBX_OUTPUT_MAIN_SOURCE_FILENAME.
+ * config/m32r/m32r.h: Define DBX_OUTPUT_SOURCE_LINE, not
+ ASM_OUTPUT_SOURCE_LINE.
+ * config/rs6000/rs6000.h: (ASM_OUTPUT_SOURCE_LINE): Rename
+ DBX_OUTPUT_SOURCE_LINE. Don't use current_function_func_begin_label.
+ * config/vax/elf.h: No need to define DBX_OUTPUT_FUNCTION_END.
+
+ * doc/tm.texi: Update.
+
2004-10-20 Richard Henderson <rth@redhat.com>
* tree-sra.c (instantiate_element): Copy DECL_IGNORED_P also.
* c-parse.in (reservedwords): Add OBJC_TYPE_QUAL as alternative.
2004-10-18 Eric Botcazou <ebotcazou@libertysurf.fr>
- Roger Sayle <roger@eyesopen.com>
+ Roger Sayle <roger@eyesopen.com>
PR middle-end/17813
* dojump.c (discard_pending_stack_adjust): New function.
2004-10-18 Richard Henderson <rth@redhat.com>
- * c-common.c (handle_mode_attribute): Allow scalar->vector
+ * c-common.c (handle_mode_attribute): Allow scalar->vector
type changes yet.
2004-10-18 Kazu Hirata <kazu@cs.umass.edu>
* params.def: Add parameter to restrict the number of expansions.
* params.h: (MAX_VARIABLE_EXPANSIONS): New define to restrict
the number of expansions.
- * common.opt: (fvariable-expansion-in-unroller): New flag.
+ * common.opt: (fvariable-expansion-in-unroller): New flag.
* doc/invoke.texi: (fvariable-expansion-in-unroller): Document.
2004-10-18 Danny Smith <dannysmith@users.sourceforge.net>
Revert:
2004-10-17 Andrew Pinski <pinskia@physics.uc.edu>
- * c-typeck.c (default_function_array_conversion): Always create
- &a[0] for array types.
- (build_unary_op): Do not fold &a[x] into a + x.
+ * c-typeck.c (default_function_array_conversion): Always create
+ &a[0] for array types.
+ (build_unary_op): Do not fold &a[x] into a + x.
2004-10-17 Andrew Pinski <pinskia@physics.uc.edu>
* tree.h (struct pointer_set_t): Declare as opaque type.
(tree_walk): Last argument is pointer_set_t* now.
* tree-inline.c (WALK_SUBTREE): Convert from htab to pset.
- (walk_type_fields):
+ (walk_type_fields):
(walk_tree): Convert from htab_t to pointer_set_t for keeping
track of which nodes have already been visited.
(walk_tree_without_duplicates): Convert from htab_t to pointer_set_t.
(tree-inline.o): Depends on pointer-set.h
(tree-dfa.o): Likewise
(cgraphunit.o): Likewise
-
+
2004-10-14 Geoffrey Keating <geoffk@apple.com>
* config/rs6000/darwin.h (ASM_SPEC): Delete.
PR 17635
* tree-if-conv.c (process_phi_nodes): Process latch block.
(combine_blocks): Process latch block and update loop structure.
-
+
2004-10-14 Olga Golovanevsky <olga@il.ibm.com>
* tree-vectorizer.c (vect_generate_tmps_on_preheader):
(tree_duplicate_loop_to_edge_cfg):
(add_loop_guard):
(vect_analyze_loop_with_symbolic_num_of_iters):
- (verify_loop_for_duplication):
+ (verify_loop_for_duplication):
(vect_gen_niters_for_prolog_loop):
(vect_update_niters_after_peeling):
(vect_update_inits_of_dr):
(vect_build_loop_niters):
(vect_do_peeling_for_alignment): New functions.
(vect_transform_loop): Add unknown and known but indivisible loop
- bound support; add peeling for unalignment support.
+ bound support; add peeling for unalignment support.
(vect_analyze_loop_form): Support symbolic number of iterations.
(vect_transform_loop_bound): New input parameter.
(vect_get_loop_niters): Change input parameter type.
(vectorize_loops): Add rewrite_into_loop_closed_ssa.
(vect_analyze_data_refs_alignment): Allowed one unaligned
store.
- * tree-vectorizer.h (LOOP_VINFO_NITERS_KNOWN_P): Redefined
+ * tree-vectorizer.h (LOOP_VINFO_NITERS_KNOWN_P): Redefined
to use tree.
(LOOP_VINFO_INT_NITERS): New macro.
(MAX_NUMBER_OF_UNALIGNED_DATA_REFS): New define.
2004-10-13 Richard Henderson <rth@redhat.com>
- PR c/17384
- * c-common.c (handle_mode_attribute): Disallow mode changes that
- alter the CODE of the top-level type.
-
- * crtstuff.c (__FRAME_END__): Remove mode attribute. Find 32-bit
- integer from internal limits macros.
- * config/i386/mm3dnow.h (__v2sf): Fix base type.
+ PR c/17384
+ * c-common.c (handle_mode_attribute): Disallow mode changes that
+ alter the CODE of the top-level type.
+
+ * crtstuff.c (__FRAME_END__): Remove mode attribute. Find 32-bit
+ integer from internal limits macros.
+ * config/i386/mm3dnow.h (__v2sf): Fix base type.
2004-10-13 Richard Henderson <rth@redhat.com>
-
- PR debug/13841
- * function.c (instantiate_decl): Recurse for CONCAT.
+
+ PR debug/13841
+ * function.c (instantiate_decl): Recurse for CONCAT.
2004-10-13 David Edelsohn <edelsohn@gnu.org>
* Makefile.in (tree-ssa-loop-niter.o): Depends on tree-data-ref.h.
* cfgloop.c (initialize_loops_parallel_p): New.
- (flow_loops_find): Initialize the parallel_p field to true for all
+ (flow_loops_find): Initialize the parallel_p field to true for all
the loops.
* tree-ssa-loop-niter.c: Include "tree-data-ref.h".
- (estimate_numbers_of_iterations_loop): Infers the loop bounds from
+ (estimate_numbers_of_iterations_loop): Infers the loop bounds from
the size of the data accessed in the loop.
- (struct nb_iter_bound): Moved...
+ (struct nb_iter_bound): Moved...
* cfgloop.h (struct nb_iter_bound): ... here.
(estimated_nb_iterations, parallel_p): New fields in struct loop.
(record_estimate): Declare extern here.
* tree-chrec.c: Fix comments.
(nb_vars_in_chrec): New function.
* tree-chrec.h (nb_vars_in_chrec): Declared here.
- * tree-data-ref.c: Don't include lambda.h, that is already included
+ * tree-data-ref.c: Don't include lambda.h, that is already included
in tree-data-ref.h.
(tree_fold_divides_p): Don't check for integer_onep.
(tree_fold_bezout): Removed.
(gcd): New static duplicated function.
(int_divides_p, dump_subscript): New.
(dump_data_dependence_relation): Use dump_subscript.
- (dump_dist_dir_vectors, dump_ddrs, compute_estimated_nb_iterations,
+ (dump_dist_dir_vectors, dump_ddrs, compute_estimated_nb_iterations,
estimate_niter_from_size_of_data): New.
- (analyze_array_indexes, analyze_array): Call
- estimate_niter_from_size_of_data during the detection of array
- references. Pass in a pointer to the statement that contains the
+ (analyze_array_indexes, analyze_array): Call
+ estimate_niter_from_size_of_data during the detection of array
+ references. Pass in a pointer to the statement that contains the
array reference.
(all_chrecs_equal_p): New.
(compute_distance_vector): Renamed compute_subscript_distance.
Deal with multivariate conflict functions.
- (initialize_data_dependence_relation): Initialize DDR_AFFINE_P,
+ (initialize_data_dependence_relation): Initialize DDR_AFFINE_P,
DDR_SIZE_VECT, DDR_DIST_VECT, and DDR_DIR_VECT.
(non_affine_dependence_relation): New.
- (analyze_ziv_subscript, analyze_siv_subscript_cst_affine,
- analyze_siv_subscript, analyze_miv_subscript,
- analyze_overlapping_iterations, subscript_dependence_tester):
+ (analyze_ziv_subscript, analyze_siv_subscript_cst_affine,
+ analyze_siv_subscript, analyze_miv_subscript,
+ analyze_overlapping_iterations, subscript_dependence_tester):
Initialize and return last_conflicts function.
(initialize_matrix_A, FLOOR, compute_overlap_steps_for_affine_univar,
compute_overlap_steps_for_affine_1_2): New.
(analyze_siv_subscript_affine_cst): Removed.
- (analyze_subscript_affine_affine): Disprove dependences based on the
- iteration domains. Solve the univariate dependence case as before,
+ (analyze_subscript_affine_affine): Disprove dependences based on the
+ iteration domains. Solve the univariate dependence case as before,
but use lambda_matrix_right_hermite instead of tree_fold_bezout.
Implement the multivariate case of 2 versus 1 variables.
- (build_classic_dist_vector, build_classic_dir_vector): Implement some
+ (build_classic_dist_vector, build_classic_dir_vector): Implement some
unhandled cases.
- (find_data_references_in_loop): Compute and initialize
+ (find_data_references_in_loop): Compute and initialize
loop->estimated_nb_iterations and loop->parallel_p.
(analyze_all_data_dependences): Modify the debug dump order.
* tree-data-ref.h (SUB_LAST_CONFLICT_IN_A, SUB_LAST_CONFLICT_IN_B,
subscript->last_conflict_in_a, subscript->last_conflict_in_b): Removed.
- (SUB_LAST_CONFLICT, subscript->last_conflict,
+ (SUB_LAST_CONFLICT, subscript->last_conflict,
data_dependence_relation->affine_p, data_dependence_relation->size_vect,
DDR_AFFINE_P, DDR_SIZE_VECT): New.
(find_data_references_in_loop, initialize_data_dependence_relation,
PR 17892
* tree-ssa-dom.c (unsafe_associative_fp_binop): New function.
(simplify_rhs_and_lookup_avail_expr): Disallow associativity
- and constant folding of floating point MULT_EXPR/PLUS_EXPR
+ and constant folding of floating point MULT_EXPR/PLUS_EXPR
expressions.
2004-10-12 Ulrich Weigand <uweigand@de.ibm.com>
PR middle-end/17657
* stmt.c (add_case_node): Add additional type argument. Declare
as static to match prototype. Convert the upper and lower bounds
- to the specified index type. Optimize away case ranges/values
+ to the specified index type. Optimize away case ranges/values
that are outside the index type's bounds. Truncate case ranges
that span the index type's bounds.
(expand_case): Avoid unnessary computation and memory allocation
#include "regs.h"
#include "insn-config.h"
#include "reload.h"
-#include "output.h" /* ASM_OUTPUT_SOURCE_LINE may refer to sdb functions. */
+#include "output.h"
#include "dbxout.h"
#include "toplev.h"
#include "tm_p.h"
#define NO_DBX_BNSYM_ENSYM 0
#endif
+#ifndef DBX_BLOCKS_FUNCTION_RELATIVE
+#define DBX_BLOCKS_FUNCTION_RELATIVE 0
+#endif
+
+#ifndef DBX_LINES_FUNCTION_RELATIVE
+#define DBX_LINES_FUNCTION_RELATIVE 0
+#endif
+
enum typestatus {TYPE_UNSEEN, TYPE_XREF, TYPE_DEFINED};
/* Structure recording information about a C data type.
#define DEBUGGER_ARG_OFFSET(OFFSET, X) (OFFSET)
#endif
-/* Stream for writing to assembler file. */
-
-static FILE *asmfile;
-
/* These variables are for dbxout_symbol to communicate to
dbxout_finish_symbol.
current_sym_code is the symbol-type-code, a symbol N_... define in stab.h.
the system doesn't insert underscores in front of user generated
labels. */
ASM_GENERATE_INTERNAL_LABEL (lscope_label_name, "Lscope", scope_labelno);
- targetm.asm_out.internal_label (asmfile, "Lscope", scope_labelno);
+ targetm.asm_out.internal_label (asm_out_file, "Lscope", scope_labelno);
scope_labelno++;
/* The N_FUN tag at the end of the function is a GNU extension,
/* By convention, GCC will mark the end of a function with an N_FUN
symbol and an empty string. */
#ifdef DBX_OUTPUT_NFUN
- DBX_OUTPUT_NFUN (asmfile, lscope_label_name, current_function_decl);
+ DBX_OUTPUT_NFUN (asm_out_file, lscope_label_name, current_function_decl);
#else
- fprintf (asmfile, "%s\"\",%d,0,0,", ASM_STABS_OP, N_FUN);
- assemble_name (asmfile, lscope_label_name);
- putc ('-', asmfile);
- assemble_name (asmfile, XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0));
- fprintf (asmfile, "\n");
+ fprintf (asm_out_file, "%s\"\",%d,0,0,", ASM_STABS_OP, N_FUN);
+ assemble_name (asm_out_file, lscope_label_name);
+ putc ('-', asm_out_file);
+ assemble_name (asm_out_file, XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0));
+ fprintf (asm_out_file, "\n");
#endif
if (!NO_DBX_BNSYM_ENSYM && !flag_debug_only_used_symbols)
- fprintf (asmfile, "%s%d,0,0\n", ASM_STABD_OP, N_ENSYM);
+ fprintf (asm_out_file, "%s%d,0,0\n", ASM_STABD_OP, N_ENSYM);
}
#endif /* DBX_DEBUGGING_INFO */
char ltext_label_name[100];
tree syms = lang_hooks.decls.getdecls ();
- asmfile = asm_out_file;
-
typevec_len = 100;
typevec = ggc_calloc (typevec_len, sizeof typevec[0]);
if (cwd)
{
#ifdef DBX_OUTPUT_MAIN_SOURCE_DIRECTORY
- DBX_OUTPUT_MAIN_SOURCE_DIRECTORY (asmfile, cwd);
+ DBX_OUTPUT_MAIN_SOURCE_DIRECTORY (asm_out_file, cwd);
#else /* no DBX_OUTPUT_MAIN_SOURCE_DIRECTORY */
- fprintf (asmfile, "%s", ASM_STABS_OP);
- output_quoted_string (asmfile, cwd);
- fprintf (asmfile, ",%d,0,%d,", N_SO, get_lang_number ());
- assemble_name (asmfile, ltext_label_name);
- fputc ('\n', asmfile);
+ fprintf (asm_out_file, "%s", ASM_STABS_OP);
+ output_quoted_string (asm_out_file, cwd);
+ fprintf (asm_out_file, ",%d,0,%d,", N_SO, get_lang_number ());
+ assemble_name (asm_out_file, ltext_label_name);
+ fputc ('\n', asm_out_file);
#endif /* no DBX_OUTPUT_MAIN_SOURCE_DIRECTORY */
}
}
#ifdef DBX_OUTPUT_MAIN_SOURCE_FILENAME
- DBX_OUTPUT_MAIN_SOURCE_FILENAME (asmfile, input_file_name);
+ DBX_OUTPUT_MAIN_SOURCE_FILENAME (asm_out_file, input_file_name);
#else /* no DBX_OUTPUT_MAIN_SOURCE_FILENAME */
/* We include outputting `Ltext:' here,
because that gives you a way to override it. */
/* Used to put `Ltext:' before the reference, but that loses on sun 4. */
- fprintf (asmfile, "%s", ASM_STABS_OP);
- output_quoted_string (asmfile, input_file_name);
- fprintf (asmfile, ",%d,0,%d,", N_SO, get_lang_number ());
- assemble_name (asmfile, ltext_label_name);
- fputc ('\n', asmfile);
+ fprintf (asm_out_file, "%s", ASM_STABS_OP);
+ output_quoted_string (asm_out_file, input_file_name);
+ fprintf (asm_out_file, ",%d,0,%d,", N_SO, get_lang_number ());
+ assemble_name (asm_out_file, ltext_label_name);
+ fputc ('\n', asm_out_file);
text_section ();
- targetm.asm_out.internal_label (asmfile, "Ltext", 0);
+ targetm.asm_out.internal_label (asm_out_file, "Ltext", 0);
#endif /* no DBX_OUTPUT_MAIN_SOURCE_FILENAME */
#ifdef DBX_OUTPUT_GCC_MARKER
- DBX_OUTPUT_GCC_MARKER (asmfile);
+ DBX_OUTPUT_GCC_MARKER (asm_out_file);
#else
/* Emit an N_OPT stab to indicate that this file was compiled by GCC. */
- fprintf (asmfile, "%s\"%s\",%d,0,0,0\n",
+ fprintf (asm_out_file, "%s\"%s\",%d,0,0,0\n",
ASM_STABS_OP, STABS_GCC_MARKER, N_OPT);
#endif
static void
emit_bincl_stab (const char *name)
{
- fprintf (asmfile, "%s", ASM_STABS_OP);
- output_quoted_string (asmfile, name);
- fprintf (asmfile, ",%d,0,0,0\n", N_BINCL);
+ fprintf (asm_out_file, "%s", ASM_STABS_OP);
+ output_quoted_string (asm_out_file, name);
+ fprintf (asm_out_file, ",%d,0,0,0\n", N_BINCL);
}
/* If there are pending bincls then it is time to emit all of them. */
#ifdef DBX_USE_BINCL
/* Emit EINCL stab only if BINCL is not pending. */
if (current_file->bincl_status == BINCL_PROCESSED)
- fprintf (asmfile, "%s%d,0,0,0\n", ASM_STABN_OP, N_EINCL);
+ fprintf (asm_out_file, "%s%d,0,0,0\n", ASM_STABN_OP, N_EINCL);
current_file->bincl_status = BINCL_NOT_REQUIRED;
current_file = current_file->next;
#endif
source_label_number);
fprintf (file, "%s", ASM_STABS_OP);
output_quoted_string (file, filename);
- fprintf (asmfile, ",%d,0,0,", N_SOL);
- assemble_name (asmfile, ltext_label_name);
- fputc ('\n', asmfile);
+ fprintf (asm_out_file, ",%d,0,0,", N_SOL);
+ assemble_name (asm_out_file, ltext_label_name);
+ fputc ('\n', asm_out_file);
if (current_function_decl != NULL_TREE
&& DECL_SECTION_NAME (current_function_decl) != NULL_TREE)
; /* Don't change section amid function. */
&& !NO_DBX_FUNCTION_END
&& !NO_DBX_BNSYM_ENSYM
&& !flag_debug_only_used_symbols)
- fprintf (asmfile, "%s%d,0,0\n", ASM_STABD_OP, N_BNSYM);
+ fprintf (asm_out_file, "%s%d,0,0\n", ASM_STABD_OP, N_BNSYM);
dbxout_source_line (lineno, filename);
}
static void
dbxout_source_line (unsigned int lineno, const char *filename)
{
- dbxout_source_file (asmfile, filename);
+ dbxout_source_file (asm_out_file, filename);
-#ifdef ASM_OUTPUT_SOURCE_LINE
+#ifdef DBX_OUTPUT_SOURCE_LINE
dbxout_source_line_counter += 1;
- ASM_OUTPUT_SOURCE_LINE (asmfile, lineno, dbxout_source_line_counter);
+ DBX_OUTPUT_SOURCE_LINE (asm_out_file, lineno, dbxout_source_line_counter);
#else
- fprintf (asmfile, "%s%d,0,%d\n", ASM_STABD_OP, N_SLINE, lineno);
+ if (DBX_LINES_FUNCTION_RELATIVE)
+ {
+ char label[100];
+ dbxout_source_line_counter += 1;
+
+ ASM_GENERATE_INTERNAL_LABEL (label, "LM", dbxout_source_line_counter);
+ fprintf (asm_out_file, "%s%d,0,%d,", ASM_STABN_OP, N_SLINE, lineno);
+ assemble_name (asm_out_file, label);
+ putc ('-', asm_out_file);
+ assemble_name (asm_out_file,
+ XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0));
+ putc ('\n', asm_out_file);
+ targetm.asm_out.internal_label (asm_out_file, "LM",
+ dbxout_source_line_counter);
+ }
+ else
+ fprintf (asm_out_file, "%s%d,0,%d\n", ASM_STABD_OP, N_SLINE, lineno);
#endif
}
dbxout_begin_block (unsigned int line ATTRIBUTE_UNUSED, unsigned int n)
{
emit_pending_bincls_if_required ();
- targetm.asm_out.internal_label (asmfile, "LBB", n);
+ targetm.asm_out.internal_label (asm_out_file, "LBB", n);
}
/* Describe the end line-number of an internal block within a function. */
dbxout_end_block (unsigned int line ATTRIBUTE_UNUSED, unsigned int n)
{
emit_pending_bincls_if_required ();
- targetm.asm_out.internal_label (asmfile, "LBE", n);
+ targetm.asm_out.internal_label (asm_out_file, "LBE", n);
}
/* Output dbx data for a function definition.
#endif
dbxout_block (DECL_INITIAL (decl), 0, DECL_ARGUMENTS (decl));
#ifdef DBX_OUTPUT_FUNCTION_END
- DBX_OUTPUT_FUNCTION_END (asmfile, decl);
+ DBX_OUTPUT_FUNCTION_END (asm_out_file, decl);
#endif
dbxout_function_end ();
}
}
/* At the end of compilation, finish writing the symbol table.
- Unless you define DBX_OUTPUT_MAIN_SOURCE_FILE_END, the default is
- to do nothing. */
+ The default is to call debug_free_queue but do nothing else. */
static void
dbxout_finish (const char *filename ATTRIBUTE_UNUSED)
{
#ifdef DBX_OUTPUT_MAIN_SOURCE_FILE_END
- DBX_OUTPUT_MAIN_SOURCE_FILE_END (asmfile, filename);
-#endif /* DBX_OUTPUT_MAIN_SOURCE_FILE_END */
-
+ DBX_OUTPUT_MAIN_SOURCE_FILE_END (asm_out_file, filename);
+#elif defined DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END
+ {
+ char letext_label[100];
+ ASM_GENERATE_INTERNAL_LABEL (letext_label, "Letext", 0);
+ fprintf (asm_out_file, "%s\"\",%d,0,0,", ASM_STABS_OP, N_SO);
+ assemble_name (asm_out_file, letext_label);
+ putc ('\n', asm_out_file);
+ targetm.asm_out.internal_label (asm_out_file, "Letext", 0);
+ }
+#endif
debug_free_queue ();
}
dbxout_type_index (tree type)
{
#ifndef DBX_USE_BINCL
- fprintf (asmfile, "%d", TYPE_SYMTAB_ADDRESS (type));
+ fprintf (asm_out_file, "%d", TYPE_SYMTAB_ADDRESS (type));
CHARS (3);
#else
struct typeinfo *t = &typevec[TYPE_SYMTAB_ADDRESS (type)];
- fprintf (asmfile, "(%d,%d)", t->file_number, t->type_number);
+ fprintf (asm_out_file, "(%d,%d)", t->file_number, t->type_number);
CHARS (9);
#endif
}
{
emit_pending_bincls_if_required ();
#ifdef DBX_CONTIN_CHAR
- fprintf (asmfile, "%c", DBX_CONTIN_CHAR);
+ fprintf (asm_out_file, "%c", DBX_CONTIN_CHAR);
#else
- fprintf (asmfile, "\\\\");
+ fprintf (asm_out_file, "\\\\");
#endif
dbxout_finish_symbol (NULL_TREE);
- fprintf (asmfile, "%s\"", ASM_STABS_OP);
+ fprintf (asm_out_file, "%s\"", ASM_STABS_OP);
current_sym_nchars = 0;
}
#endif /* DBX_CONTIN_LENGTH > 0 */
if (DECL_NAME (tem))
{
- fprintf (asmfile, "%s:", IDENTIFIER_POINTER (DECL_NAME (tem)));
+ fprintf (asm_out_file, "%s:", IDENTIFIER_POINTER (DECL_NAME (tem)));
CHARS (2 + IDENTIFIER_LENGTH (DECL_NAME (tem)));
}
else
{
- fprintf (asmfile, ":");
+ fprintf (asm_out_file, ":");
CHARS (1);
}
|| TREE_CODE (tem) != FIELD_DECL))
{
have_used_extensions = 1;
- putc ('/', asmfile);
+ putc ('/', asm_out_file);
putc ((TREE_PRIVATE (tem) ? '0'
: TREE_PROTECTED (tem) ? '1' : '2'),
- asmfile);
+ asm_out_file);
CHARS (2);
}
tree name = DECL_ASSEMBLER_NAME (tem);
have_used_extensions = 1;
- fprintf (asmfile, ":%s;", IDENTIFIER_POINTER (name));
+ fprintf (asm_out_file, ":%s;", IDENTIFIER_POINTER (name));
CHARS (IDENTIFIER_LENGTH (name) + 2);
}
else
{
/* If TEM is non-static, GDB won't understand it. */
- fprintf (asmfile, ",0,0;");
+ fprintf (asm_out_file, ",0,0;");
CHARS (5);
}
}
else
{
- putc (',', asmfile);
+ putc (',', asm_out_file);
print_wide_int (int_bit_position (tem));
- putc (',', asmfile);
+ putc (',', asm_out_file);
print_wide_int (tree_low_cst (DECL_SIZE (tem), 1));
- putc (';', asmfile);
+ putc (';', asm_out_file);
CHARS (3);
}
}
c2 = '.';
}
- fprintf (asmfile, ":%s;%c%c%c", debug_name,
+ fprintf (asm_out_file, ":%s;%c%c%c", debug_name,
TREE_PRIVATE (decl) ? '0'
: TREE_PROTECTED (decl) ? '1' : '2', c1, c2);
CHARS (IDENTIFIER_LENGTH (DECL_ASSEMBLER_NAME (decl)) + 6
if (DECL_VINDEX (decl) && host_integerp (DECL_VINDEX (decl), 0))
{
print_wide_int (tree_low_cst (DECL_VINDEX (decl), 0));
- putc (';', asmfile);
+ putc (';', asm_out_file);
CHARS (1);
dbxout_type (DECL_CONTEXT (decl), 0);
- fprintf (asmfile, ";");
+ fprintf (asm_out_file, ";");
CHARS (1);
}
}
type_encoding = DECL_NAME (TYPE_NAME (type));
-#if 0
- /* C++: Template classes break some assumptions made by this code about
- the class names, constructor names, and encodings for assembler
- label names. For now, disable output of dbx info for them. */
- {
- const char *ptr = IDENTIFIER_POINTER (type_encoding);
- /* This should use index. (mrs) */
- while (*ptr && *ptr != '<') ptr++;
- if (*ptr != 0)
- {
- static int warned;
- if (!warned)
- warned = 1;
- return;
- }
- }
-#endif
-
type_identifier_length = IDENTIFIER_LENGTH (type_encoding);
sprintf (formatted_type_identifier_length, "%d", type_identifier_length);
if (need_prefix)
{
tree name = DECL_NAME (fndecl);
- fprintf (asmfile, "%s::", IDENTIFIER_POINTER (name));
+ fprintf (asm_out_file, "%s::", IDENTIFIER_POINTER (name));
CHARS (IDENTIFIER_LENGTH (name) + 2);
need_prefix = 0;
}
}
if (!need_prefix)
{
- putc (';', asmfile);
+ putc (';', asm_out_file);
CHARS (1);
}
}
static void
dbxout_range_type (tree type)
{
- fprintf (asmfile, "r");
+ fprintf (asm_out_file, "r");
if (TREE_TYPE (type))
dbxout_type (TREE_TYPE (type), 0);
else if (TREE_CODE (type) != INTEGER_TYPE)
if (TYPE_MIN_VALUE (type) != 0
&& host_integerp (TYPE_MIN_VALUE (type), 0))
{
- putc (';', asmfile);
+ putc (';', asm_out_file);
CHARS (1);
if (print_int_cst_bounds_in_octal_p (type))
print_int_cst_octal (TYPE_MIN_VALUE (type));
}
else
{
- fprintf (asmfile, ";0");
+ fprintf (asm_out_file, ";0");
CHARS (2);
}
if (TYPE_MAX_VALUE (type) != 0
&& host_integerp (TYPE_MAX_VALUE (type), 0))
{
- putc (';', asmfile);
+ putc (';', asm_out_file);
CHARS (1);
if (print_int_cst_bounds_in_octal_p (type))
print_int_cst_octal (TYPE_MAX_VALUE (type));
else
print_wide_int (tree_low_cst (TYPE_MAX_VALUE (type), 0));
- putc (';', asmfile);
+ putc (';', asm_out_file);
CHARS (1);
}
else
{
- fprintf (asmfile, ";-1;");
+ fprintf (asm_out_file, ";-1;");
CHARS (4);
}
}
/* Output a definition now. */
- fprintf (asmfile, "=");
+ fprintf (asm_out_file, "=");
CHARS (1);
/* Mark it as defined, so that if it is self-referent
cv-qualified types if we're using extensions. */
if (TYPE_READONLY (type) > TYPE_READONLY (main_variant))
{
- putc ('k', asmfile);
+ putc ('k', asm_out_file);
CHARS (1);
dbxout_type (build_type_variant (type, 0, TYPE_VOLATILE (type)), 0);
return;
}
else if (TYPE_VOLATILE (type) > TYPE_VOLATILE (main_variant))
{
- putc ('B', asmfile);
+ putc ('B', asm_out_file);
CHARS (1);
dbxout_type (build_type_variant (type, TYPE_READONLY (type), 0), 0);
return;
from the output of pcc.
This used to use `r2' explicitly and we used to
take care to make sure that `char' was type number 2. */
- fprintf (asmfile, "r");
+ fprintf (asm_out_file, "r");
CHARS (1);
dbxout_type_index (type);
- fprintf (asmfile, ";0;127;");
+ fprintf (asm_out_file, ";0;127;");
CHARS (7);
}
&& TYPE_PRECISION (type) != TYPE_PRECISION (integer_type_node))
{
have_used_extensions = 1;
- fprintf (asmfile, "@s%d;", TYPE_PRECISION (type));
+ fprintf (asm_out_file, "@s%d;", TYPE_PRECISION (type));
CHARS (5);
}
&& TYPE_PRECISION (type) != TYPE_PRECISION (integer_type_node))
{
have_used_extensions = 1;
- fprintf (asmfile, "@s%d;", TYPE_PRECISION (type));
+ fprintf (asm_out_file, "@s%d;", TYPE_PRECISION (type));
CHARS (5);
}
if (print_int_cst_bounds_in_octal_p (type))
{
- fprintf (asmfile, "r");
+ fprintf (asm_out_file, "r");
CHARS (1);
/* If this type derives from another type, output type index of
else
dbxout_type_index (type);
- fprintf (asmfile, ";");
+ fprintf (asm_out_file, ";");
CHARS (1);
print_int_cst_octal (TYPE_MIN_VALUE (type));
- fprintf (asmfile, ";");
+ fprintf (asm_out_file, ";");
CHARS (1);
print_int_cst_octal (TYPE_MAX_VALUE (type));
- fprintf (asmfile, ";");
+ fprintf (asm_out_file, ";");
CHARS (1);
}
case REAL_TYPE:
/* This used to say `r1' and we used to take care
to make sure that `int' was type number 1. */
- fprintf (asmfile, "r");
+ fprintf (asm_out_file, "r");
CHARS (1);
dbxout_type_index (integer_type_node);
- putc (';', asmfile);
+ putc (';', asm_out_file);
CHARS (1);
print_wide_int (int_size_in_bytes (type));
- fputs (";0;", asmfile);
+ fputs (";0;", asm_out_file);
CHARS (3);
break;
if (use_gnu_debug_info_extensions)
{
have_used_extensions = 1;
- fputs ("@s", asmfile);
+ fputs ("@s", asm_out_file);
CHARS (2);
print_wide_int (BITS_PER_UNIT * int_size_in_bytes (type));
- fputs (";-20;", asmfile);
+ fputs (";-20;", asm_out_file);
CHARS (4);
}
else
{
/* Output the type `char' as a subrange of itself.
That is what pcc seems to do. */
- fprintf (asmfile, "r");
+ fprintf (asm_out_file, "r");
CHARS (1);
dbxout_type_index (char_type_node);
- fprintf (asmfile, ";0;%d;", TYPE_UNSIGNED (type) ? 255 : 127);
+ fprintf (asm_out_file, ";0;%d;", TYPE_UNSIGNED (type) ? 255 : 127);
CHARS (7);
}
break;
if (use_gnu_debug_info_extensions)
{
have_used_extensions = 1;
- fputs ("@s", asmfile);
+ fputs ("@s", asm_out_file);
CHARS (2);
print_wide_int (BITS_PER_UNIT * int_size_in_bytes (type));
- fputs (";-16;", asmfile);
+ fputs (";-16;", asm_out_file);
CHARS (4);
}
else /* Define as enumeral type (False, True) */
{
- fprintf (asmfile, "eFalse:0,True:1,;");
+ fprintf (asm_out_file, "eFalse:0,True:1,;");
CHARS (17);
}
break;
case FILE_TYPE:
- putc ('d', asmfile);
+ putc ('d', asm_out_file);
CHARS (1);
dbxout_type (TREE_TYPE (type), 0);
break;
if (TREE_CODE (TREE_TYPE (type)) == REAL_TYPE)
{
- fputs ("R3;", asmfile);
+ fputs ("R3;", asm_out_file);
CHARS (3);
print_wide_int (2 * int_size_in_bytes (TREE_TYPE (type)));
- fputs (";0;", asmfile);
+ fputs (";0;", asm_out_file);
CHARS (3);
}
else
{
/* Output a complex integer type as a structure,
pending some other way to do it. */
- putc ('s', asmfile);
+ putc ('s', asm_out_file);
CHARS (1);
print_wide_int (int_size_in_bytes (type));
- fprintf (asmfile, "real:");
+ fprintf (asm_out_file, "real:");
CHARS (5);
dbxout_type (TREE_TYPE (type), 0);
- fprintf (asmfile, ",0,%d;", TYPE_PRECISION (TREE_TYPE (type)));
+ fprintf (asm_out_file, ",0,%d;", TYPE_PRECISION (TREE_TYPE (type)));
CHARS (7);
- fprintf (asmfile, "imag:");
+ fprintf (asm_out_file, "imag:");
CHARS (5);
dbxout_type (TREE_TYPE (type), 0);
- fprintf (asmfile, ",%d,%d;;", TYPE_PRECISION (TREE_TYPE (type)),
+ fprintf (asm_out_file, ",%d,%d;;", TYPE_PRECISION (TREE_TYPE (type)),
TYPE_PRECISION (TREE_TYPE (type)));
CHARS (10);
}
if (use_gnu_debug_info_extensions)
{
have_used_extensions = 1;
- fputs ("@s", asmfile);
+ fputs ("@s", asm_out_file);
CHARS (2);
print_wide_int (BITS_PER_UNIT * int_size_in_bytes (type));
- putc (';', asmfile);
+ putc (';', asm_out_file);
CHARS (1);
/* Check if a bitstring type, which in Chill is
different from a [power]set. */
if (TYPE_STRING_FLAG (type))
{
- fprintf (asmfile, "@S;");
+ fprintf (asm_out_file, "@S;");
CHARS (3);
}
}
- putc ('S', asmfile);
+ putc ('S', asm_out_file);
CHARS (1);
dbxout_type (TYPE_DOMAIN (type), 0);
break;
if (TYPE_PACKED (type) && use_gnu_debug_info_extensions)
{
have_used_extensions = 1;
- fputs ("@s", asmfile);
+ fputs ("@s", asm_out_file);
CHARS (2);
print_wide_int (BITS_PER_UNIT * int_size_in_bytes (type));
- fprintf (asmfile, ";@S;S");
+ fprintf (asm_out_file, ";@S;S");
CHARS (5);
dbxout_type (TYPE_DOMAIN (type), 0);
break;
if (TYPE_STRING_FLAG (type) && use_gnu_debug_info_extensions)
{
have_used_extensions = 1;
- fprintf (asmfile, "@S;");
+ fprintf (asm_out_file, "@S;");
CHARS (3);
}
tem = TYPE_DOMAIN (type);
if (tem == NULL)
{
- fprintf (asmfile, "ar");
+ fprintf (asm_out_file, "ar");
CHARS (2);
dbxout_type_index (integer_type_node);
- fprintf (asmfile, ";0;-1;");
+ fprintf (asm_out_file, ";0;-1;");
CHARS (6);
}
else
{
- fprintf (asmfile, "a");
+ fprintf (asm_out_file, "a");
CHARS (1);
dbxout_range_type (tem);
}
If the type has a name, don't nest its definition within
another type's definition; instead, output an xref
and let the definition come when the name is defined. */
- fputs ((TREE_CODE (type) == RECORD_TYPE) ? "xs" : "xu", asmfile);
+ fputs ((TREE_CODE (type) == RECORD_TYPE) ? "xs" : "xu", asm_out_file);
CHARS (2);
-#if 0 /* This assertion is legitimately false in C++. */
- /* We shouldn't be outputting a reference to a type before its
- definition unless the type has a tag name.
- A typedef name without a tag name should be impossible. */
- gcc_assert (TREE_CODE (TYPE_NAME (type)) == IDENTIFIER_NODE);
-#endif
if (TYPE_NAME (type) != 0)
dbxout_type_name (type);
else
{
- fprintf (asmfile, "$$%d", anonymous_type_number++);
+ fprintf (asm_out_file, "$$%d", anonymous_type_number++);
CHARS (5);
}
- fprintf (asmfile, ":");
+ fprintf (asm_out_file, ":");
CHARS (1);
typevec[TYPE_SYMTAB_ADDRESS (type)].status = TYPE_XREF;
break;
}
/* Identify record or union, and print its size. */
- putc (((TREE_CODE (type) == RECORD_TYPE) ? 's' : 'u'), asmfile);
+ putc (((TREE_CODE (type) == RECORD_TYPE) ? 's' : 'u'), asm_out_file);
CHARS (1);
print_wide_int (int_size_in_bytes (type));
if (BINFO_N_BASE_BINFOS (binfo))
{
have_used_extensions = 1;
- fprintf (asmfile, "!%u,", BINFO_N_BASE_BINFOS (binfo));
+ fprintf (asm_out_file, "!%u,", BINFO_N_BASE_BINFOS (binfo));
CHARS (8);
}
}
if (use_gnu_debug_info_extensions)
{
have_used_extensions = 1;
- putc (BINFO_VIRTUAL_P (child) ? '1' : '0', asmfile);
+ putc (BINFO_VIRTUAL_P (child) ? '1' : '0', asm_out_file);
putc (access == access_public_node ? '2' :
(access == access_protected_node ? '1' :'0'),
- asmfile);
+ asm_out_file);
CHARS (2);
if (BINFO_VIRTUAL_P (child)
&& strcmp (lang_hooks.name, "GNU C++") == 0)
else
print_wide_int (tree_low_cst (BINFO_OFFSET (child), 0)
* BITS_PER_UNIT);
- putc (',', asmfile);
+ putc (',', asm_out_file);
CHARS (1);
dbxout_type (BINFO_TYPE (child), 0);
- putc (';', asmfile);
+ putc (';', asm_out_file);
CHARS (1);
}
else
fields which have the same names at the types
they hold. */
dbxout_type_name (BINFO_TYPE (child));
- putc (':', asmfile);
+ putc (':', asm_out_file);
CHARS (1);
dbxout_type (BINFO_TYPE (child), full);
- putc (',', asmfile);
+ putc (',', asm_out_file);
CHARS (1);
print_wide_int (tree_low_cst (BINFO_OFFSET (child), 0)
* BITS_PER_UNIT);
- putc (',', asmfile);
+ putc (',', asm_out_file);
CHARS (1);
print_wide_int
(tree_low_cst (TYPE_SIZE (BINFO_TYPE (child)), 0)
* BITS_PER_UNIT);
- putc (';', asmfile);
+ putc (';', asm_out_file);
CHARS (1);
}
}
dbxout_type_methods (type);
}
- putc (';', asmfile);
+ putc (';', asm_out_file);
CHARS (1);
if (use_gnu_debug_info_extensions && TREE_CODE (type) == RECORD_TYPE
have_used_extensions = 1;
/* Tell GDB+ that it may keep reading. */
- putc ('~', asmfile);
+ putc ('~', asm_out_file);
CHARS (1);
/* We need to write out info about what field this class
figure out which field it's using in time. */
if (TYPE_VFIELD (type))
{
- putc ('%', asmfile);
+ putc ('%', asm_out_file);
CHARS (1);
dbxout_type (DECL_FCONTEXT (TYPE_VFIELD (type)), 0);
}
- putc (';', asmfile);
+ putc (';', asm_out_file);
CHARS (1);
}
break;
&& !full)
|| !COMPLETE_TYPE_P (type))
{
- fprintf (asmfile, "xe");
+ fprintf (asm_out_file, "xe");
CHARS (2);
dbxout_type_name (type);
typevec[TYPE_SYMTAB_ADDRESS (type)].status = TYPE_XREF;
- putc (':', asmfile);
+ putc (':', asm_out_file);
CHARS (1);
return;
}
if (use_gnu_debug_info_extensions
&& TYPE_PRECISION (type) != TYPE_PRECISION (integer_type_node))
{
- fprintf (asmfile, "@s%d;", TYPE_PRECISION (type));
+ fprintf (asm_out_file, "@s%d;", TYPE_PRECISION (type));
CHARS (5);
}
- putc ('e', asmfile);
+ putc ('e', asm_out_file);
CHARS (1);
for (tem = TYPE_VALUES (type); tem; tem = TREE_CHAIN (tem))
{
- fprintf (asmfile, "%s:", IDENTIFIER_POINTER (TREE_PURPOSE (tem)));
+ fprintf (asm_out_file, "%s:", IDENTIFIER_POINTER (TREE_PURPOSE (tem)));
CHARS (IDENTIFIER_LENGTH (TREE_PURPOSE (tem)) + 1);
if (TREE_INT_CST_HIGH (TREE_VALUE (tem)) == 0)
print_wide_int (TREE_INT_CST_LOW (TREE_VALUE (tem)));
else
print_int_cst_octal (TREE_VALUE (tem));
- putc (',', asmfile);
+ putc (',', asm_out_file);
CHARS (1);
if (TREE_CHAIN (tem) != 0)
CONTIN;
}
- putc (';', asmfile);
+ putc (';', asm_out_file);
CHARS (1);
break;
case POINTER_TYPE:
- putc ('*', asmfile);
+ putc ('*', asm_out_file);
CHARS (1);
dbxout_type (TREE_TYPE (type), 0);
break;
if (use_gnu_debug_info_extensions)
{
have_used_extensions = 1;
- putc ('#', asmfile);
+ putc ('#', asm_out_file);
CHARS (1);
/* Write the argument types out longhand. */
dbxout_type (TYPE_METHOD_BASETYPE (type), 0);
- putc (',', asmfile);
+ putc (',', asm_out_file);
CHARS (1);
dbxout_type (TREE_TYPE (type), 0);
dbxout_args (TYPE_ARG_TYPES (type));
- putc (';', asmfile);
+ putc (';', asm_out_file);
CHARS (1);
}
else
if (use_gnu_debug_info_extensions)
{
have_used_extensions = 1;
- putc ('@', asmfile);
+ putc ('@', asm_out_file);
CHARS (1);
dbxout_type (TYPE_OFFSET_BASETYPE (type), 0);
- putc (',', asmfile);
+ putc (',', asm_out_file);
CHARS (1);
dbxout_type (TREE_TYPE (type), 0);
}
case REFERENCE_TYPE:
if (use_gnu_debug_info_extensions)
have_used_extensions = 1;
- putc (use_gnu_debug_info_extensions ? '&' : '*', asmfile);
+ putc (use_gnu_debug_info_extensions ? '&' : '*', asm_out_file);
CHARS (1);
dbxout_type (TREE_TYPE (type), 0);
break;
case FUNCTION_TYPE:
- putc ('f', asmfile);
+ putc ('f', asm_out_file);
CHARS (1);
dbxout_type (TREE_TYPE (type), 0);
break;
else
high = 0, low &= (((HOST_WIDE_INT) 1 << width) - 1);
- fprintf (asmfile, "0");
+ fprintf (asm_out_file, "0");
CHARS (1);
if (excess == 3)
<< (HOST_BITS_PER_WIDE_INT / 3 * 3))
- 1);
- fprintf (asmfile, "%o%01o", (int) beg, (int) middle);
+ fprintf (asm_out_file, "%o%01o", (int) beg, (int) middle);
CHARS (2);
print_octal (end, HOST_BITS_PER_WIDE_INT / 3);
}
int i;
for (i = digits - 1; i >= 0; i--)
- fprintf (asmfile, "%01o", (int) ((value >> (3 * i)) & 7));
+ fprintf (asm_out_file, "%01o", (int) ((value >> (3 * i)) & 7));
CHARS (digits);
}
{
int digs = 0;
- fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC, c);
+ fprintf (asm_out_file, HOST_WIDE_INT_PRINT_DEC, c);
if (c < 0)
digs++, c = -c;
gcc_unreachable ();
}
- fprintf (asmfile, "%s", IDENTIFIER_POINTER (t));
+ fprintf (asm_out_file, "%s", IDENTIFIER_POINTER (t));
CHARS (IDENTIFIER_LENGTH (t));
}
dbxout_class_name_qualifiers (name);
name = DECL_NAME (name);
}
- fprintf (asmfile, "%s::", IDENTIFIER_POINTER (name));
+ fprintf (asm_out_file, "%s::", IDENTIFIER_POINTER (name));
CHARS (IDENTIFIER_LENGTH (name) + 2);
}
}
break;
FORCE_TEXT;
- fprintf (asmfile, "%s\"%s:%c", ASM_STABS_OP,
+ fprintf (asm_out_file, "%s\"%s:%c", ASM_STABS_OP,
IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)),
TREE_PUBLIC (decl) ? 'F' : 'f');
result = 1;
mention the containing function name
as well as (since dbx wants it) our own assembler-name. */
if (context != 0)
- fprintf (asmfile, ",%s,%s",
+ fprintf (asm_out_file, ",%s,%s",
IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)),
IDENTIFIER_POINTER (DECL_NAME (context)));
current_sym_addr = 0;
current_sym_nchars = 2 + IDENTIFIER_LENGTH (name);
- fprintf (asmfile, "%s\"%s:T", ASM_STABS_OP,
+ fprintf (asm_out_file, "%s\"%s:T", ASM_STABS_OP,
IDENTIFIER_POINTER (name));
dbxout_type (type, 1);
dbxout_finish_symbol (NULL_TREE);
}
/* Output .stabs (or whatever) and leading double quote. */
- fprintf (asmfile, "%s\"", ASM_STABS_OP);
+ fprintf (asm_out_file, "%s\"", ASM_STABS_OP);
if (use_gnu_debug_info_extensions)
{
}
/* Output typedef name. */
- fprintf (asmfile, "%s:", IDENTIFIER_POINTER (DECL_NAME (decl)));
+ fprintf (asm_out_file, "%s:", IDENTIFIER_POINTER (DECL_NAME (decl)));
/* Short cut way to output a tag also. */
if ((TREE_CODE (type) == RECORD_TYPE
{
if (use_gnu_debug_info_extensions && have_used_extensions)
{
- putc ('T', asmfile);
+ putc ('T', asm_out_file);
TREE_ASM_WRITTEN (TYPE_NAME (type)) = 1;
}
-#if 0 /* Now we generate the tag for this case up above. */
- else
- tag_needed = 1;
-#endif
}
- putc ('t', asmfile);
+ putc ('t', asm_out_file);
current_sym_code = DBX_TYPE_DECL_STABS_CODE;
dbxout_type (type, 1);
current_sym_addr = 0;
current_sym_nchars = 2 + IDENTIFIER_LENGTH (name);
- fprintf (asmfile, "%s\"%s:T", ASM_STABS_OP,
+ fprintf (asm_out_file, "%s\"%s:T", ASM_STABS_OP,
IDENTIFIER_POINTER (name));
dbxout_type (type, 1);
dbxout_finish_symbol (NULL_TREE);
/* Some debuggers fail when given NULL names, so give this a
harmless name of ` '. */
- fprintf (asmfile, "%s\" :T", ASM_STABS_OP);
+ fprintf (asm_out_file, "%s\" :T", ASM_STABS_OP);
dbxout_type (type, 1);
dbxout_finish_symbol (NULL_TREE);
}
|| TREE_CODE (TREE_TYPE (decl)) == ENUMERAL_TYPE)
{
HOST_WIDE_INT ival = tree_low_cst (DECL_INITIAL (decl), 0);
- fprintf (asmfile, "%s\"%s:c=i" HOST_WIDE_INT_PRINT_DEC
+ fprintf (asm_out_file, "%s\"%s:c=i" HOST_WIDE_INT_PRINT_DEC
"\",0x%x,0,0,0\n",
ASM_STABS_OP, name, ival, N_LSYM);
DBXOUT_DECR_NESTING;
FORCE_TEXT;
#ifdef DBX_STATIC_BLOCK_START
- DBX_STATIC_BLOCK_START (asmfile, current_sym_code);
+ DBX_STATIC_BLOCK_START (asm_out_file, current_sym_code);
#endif
dbxout_symbol_name (decl, suffix, letter);
dbxout_finish_symbol (decl);
#ifdef DBX_STATIC_BLOCK_END
- DBX_STATIC_BLOCK_END (asmfile, current_sym_code);
+ DBX_STATIC_BLOCK_END (asm_out_file, current_sym_code);
#endif
return 1;
}
if (name == 0)
name = "(anon)";
- fprintf (asmfile, "%s\"%s%s:", ASM_STABS_OP, name,
+ fprintf (asm_out_file, "%s\"%s%s:", ASM_STABS_OP, name,
(suffix ? suffix : ""));
if (letter)
- putc (letter, asmfile);
+ putc (letter, asm_out_file);
}
static void
dbxout_prepare_symbol (tree decl ATTRIBUTE_UNUSED)
{
-#ifdef WINNING_GDB
- const char *filename = DECL_SOURCE_FILE (decl);
-
- dbxout_source_file (asmfile, filename);
-#endif
-
/* Initialize variables used to communicate each symbol's debug
information to dbxout_finish_symbol with zeroes. */
if (use_gnu_debug_info_extensions && sym != 0)
line = DECL_SOURCE_LINE (sym);
- fprintf (asmfile, "\",%d,0,%d,", current_sym_code, line);
+ fprintf (asm_out_file, "\",%d,0,%d,", current_sym_code, line);
if (current_sym_addr)
- output_addr_const (asmfile, current_sym_addr);
+ output_addr_const (asm_out_file, current_sym_addr);
else
- fprintf (asmfile, "%d", current_sym_value);
- putc ('\n', asmfile);
+ fprintf (asm_out_file, "%d", current_sym_value);
+ putc ('\n', asm_out_file);
#endif
}
{
current_sym_nchars = 2 + IDENTIFIER_LENGTH (DECL_NAME (parms));
- fprintf (asmfile, "%s\"%s:%c", ASM_STABS_OP,
+ fprintf (asm_out_file, "%s\"%s:%c", ASM_STABS_OP,
IDENTIFIER_POINTER (DECL_NAME (parms)),
DBX_MEMPARM_STABS_LETTER);
}
else
{
current_sym_nchars = 8;
- fprintf (asmfile, "%s\"(anon):%c", ASM_STABS_OP,
+ fprintf (asm_out_file, "%s\"(anon):%c", ASM_STABS_OP,
DBX_MEMPARM_STABS_LETTER);
}
if (DECL_NAME (parms))
{
current_sym_nchars = 2 + IDENTIFIER_LENGTH (DECL_NAME (parms));
- fprintf (asmfile, "%s\"%s:%c", ASM_STABS_OP,
+ fprintf (asm_out_file, "%s\"%s:%c", ASM_STABS_OP,
IDENTIFIER_POINTER (DECL_NAME (parms)),
regparm_letter);
}
else
{
current_sym_nchars = 8;
- fprintf (asmfile, "%s\"(anon):%c", ASM_STABS_OP,
+ fprintf (asm_out_file, "%s\"(anon):%c", ASM_STABS_OP,
regparm_letter);
}
current_sym_nchars
= 2 + strlen (IDENTIFIER_POINTER (DECL_NAME (parms)));
- fprintf (asmfile, "%s\"%s:%c", ASM_STABS_OP,
+ fprintf (asm_out_file, "%s\"%s:%c", ASM_STABS_OP,
IDENTIFIER_POINTER (DECL_NAME (parms)),
regparm_letter);
}
else
{
current_sym_nchars = 8;
- fprintf (asmfile, "%s\"(anon):%c", ASM_STABS_OP,
+ fprintf (asm_out_file, "%s\"(anon):%c", ASM_STABS_OP,
regparm_letter);
}
current_sym_code = N_PSYM;
FORCE_TEXT;
- fprintf (asmfile, "%s\"%s:v", ASM_STABS_OP, decl_name);
+ fprintf (asm_out_file, "%s\"%s:v", ASM_STABS_OP, decl_name);
current_sym_value
= DEBUGGER_ARG_OFFSET (current_sym_value,
current_sym_nchars
= 2 + strlen (IDENTIFIER_POINTER (DECL_NAME (parms)));
- fprintf (asmfile, "%s\"%s:%c", ASM_STABS_OP,
+ fprintf (asm_out_file, "%s\"%s:%c", ASM_STABS_OP,
IDENTIFIER_POINTER (DECL_NAME (parms)),
DBX_MEMPARM_STABS_LETTER);
}
else
{
current_sym_nchars = 8;
- fprintf (asmfile, "%s\"(anon):%c", ASM_STABS_OP,
+ fprintf (asm_out_file, "%s\"(anon):%c", ASM_STABS_OP,
DBX_MEMPARM_STABS_LETTER);
}
{
while (args)
{
- putc (',', asmfile);
+ putc (',', asm_out_file);
dbxout_type (TREE_VALUE (args), 0);
CHARS (1);
args = TREE_CHAIN (args);
const char *begin_label ATTRIBUTE_UNUSED)
{
#ifdef DBX_OUTPUT_LBRAC
- DBX_OUTPUT_LBRAC (asmfile, label);
+ DBX_OUTPUT_LBRAC (asm_out_file, label);
#else
- fprintf (asmfile, "%s%d,0,0,", ASM_STABN_OP, N_LBRAC);
- assemble_name (asmfile, label);
-#if DBX_BLOCKS_FUNCTION_RELATIVE
- putc ('-', asmfile);
- assemble_name (asmfile, begin_label);
-#endif
- fprintf (asmfile, "\n");
+ fprintf (asm_out_file, "%s%d,0,0,", ASM_STABN_OP, N_LBRAC);
+ assemble_name (asm_out_file, label);
+ if (DBX_BLOCKS_FUNCTION_RELATIVE)
+ {
+ putc ('-', asm_out_file);
+ assemble_name (asm_out_file, begin_label);
+ }
+ fprintf (asm_out_file, "\n");
#endif
}
const char *begin_label ATTRIBUTE_UNUSED)
{
#ifdef DBX_OUTPUT_RBRAC
- DBX_OUTPUT_RBRAC (asmfile, label);
+ DBX_OUTPUT_RBRAC (asm_out_file, label);
#else
- fprintf (asmfile, "%s%d,0,0,", ASM_STABN_OP, N_RBRAC);
- assemble_name (asmfile, label);
-#if DBX_BLOCKS_FUNCTION_RELATIVE
- putc ('-', asmfile);
- assemble_name (asmfile, begin_label);
-#endif
- fprintf (asmfile, "\n");
+ fprintf (asm_out_file, "%s%d,0,0,", ASM_STABN_OP, N_RBRAC);
+ assemble_name (asm_out_file, label);
+ if (DBX_BLOCKS_FUNCTION_RELATIVE)
+ {
+ putc ('-', asm_out_file);
+ assemble_name (asm_out_file, begin_label);
+ }
+ fprintf (asm_out_file, "\n");
#endif
}
dbxout_block (tree block, int depth, tree args)
{
const char *begin_label;
- if (current_function_func_begin_label != NULL)
- begin_label = current_function_func_begin_label;
- else
- begin_label = XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0);
+ begin_label = XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0);
while (block)
{
tree decl = BLOCK_VARS (block);
while (decl)
{
- fprintf (asmfile, "%s\"%s:C1\",%d,0,0,", ASM_STABS_OP,
+ fprintf (asm_out_file, "%s\"%s:C1\",%d,0,0,", ASM_STABS_OP,
IDENTIFIER_POINTER (DECL_NAME (decl)), N_CATCH);
- assemble_name (asmfile, scope_start);
- fprintf (asmfile, "\n");
+ assemble_name (asm_out_file, scope_start);
+ fprintf (asm_out_file, "\n");
decl = TREE_CHAIN (decl);
}
}