* config/freebsd.h: New, FreeBSD architecture independent file.
* config/i386/freebsd-elf.h: removed FreeBSD architecturally
independent pieces.
* config/i386/freebsd.h: include i386/perform.h via tm.h rather than
directly by i386/freebsd.h.
* configure.in (*-*-freebsdelf): Include new FreeBSD architecturally
independent configuration file.
(*-*-freebsdelf): Include i386/perform.h via tm.h rather than
directly by i386/freebsd.h.
* configure: Rebuilt.
*POTFILES.in: Add config/freebsd.h
David O'Brien [Tue, 23 Nov 1999 06:09:34 +0000 (06:09 +0000)]
xm-i386.h: Define `__i386__' if not defined...
* xm-i386.h: Define `__i386__' if not defined, rather than `i386'
which is in the user's namespace.
* libgcc2.c: Look for the ANSI-C approved `__i386__' symbol, vs.
`i386' which is not in our namespace.
Mark Mitchell [Tue, 23 Nov 1999 02:49:41 +0000 (02:49 +0000)]
cp-tree.def (FUNCTION_NAME): New tree node.
* cp-tree.def (FUNCTION_NAME): New tree node.
* cp-tree.h (current_function_name_declared): Tweak documentation.
(lang_decl_flags): Add pretty_function_p, adjust dummy.
(DECL_PRETTY_FUNCTION_P): New macro.
* decl.c (cp_finish_decl): Handle declarations of __FUNCTION__,
etc., in a template function. Use at_function_scope_p instead of
expanding it inline.
* pt.c (tsubst_decl): Handle DECL_PRETTY_FUNCTION_P declarations
specially.
(tsubst): Handle FUNCTION_NAME.
(tsubst_copy): Likewise.
(instantiate_decl): Prevent redeclarations of __PRETTY_FUNCTION__,
etc. in instantiation.
* semantics.c (begin_compound_stmt): Declare __FUNCTION__, etc.,
even in template functions.
(setup_vtbl_ptr): Don't declare __PRETTY_FUNCTION in the
conditional scope at the top of a destructor.
* error.c (dump_function_decl): Use `[ with ... ]' syntax for
specializations too.
Jason Merrill [Tue, 23 Nov 1999 01:50:36 +0000 (01:50 +0000)]
dwarf2out.c (die_struct): Remove die_attr_last and die_child_last.
* dwarf2out.c (die_struct): Remove die_attr_last and die_child_last.
(add_dwarf_attr, add_child_die): Just push onto the front.
(reverse_die_lists): New fn.
(add_sibling_attributes): Use it.
(push_decl_scope): Reorganize.
(gen_struct_or_union_type_die): Don't add a DW_AT_containing_type
that points to ourself.
(add_name_and_src_coords_attributes): Don't set file and line for
an artificial decl.
(gen_subprogram_die): An artificial function doesn't need to match
file and line.
(gen_compile_unit_die): Return the generated die. Only add
AT_comp_dir if the filename is relative.
(remove_AT): Simplify loop. Also free string values.
(output_die): A DIE ref can't be null.
(output_value_format, value_format): Take a dw_attr_ref.
(dwarf_last_decl, is_extern_subr_die, sibling_offset): Remove.
(AT_class, AT_flag, AT_int, AT_unsigned, AT_string, AT_ref, AT_loc,
AT_addr, AT_lbl): New fns.
(various): Use them.
(various): Constify.
Nathan Sidwell [Mon, 22 Nov 1999 15:51:14 +0000 (15:51 +0000)]
cleanup2.C: New test.
* g++.old-deja/g++.eh/cleanup2.C: New test.
* g++.old-deja/g++.ext/pretty2.C: New test.
* g++.old-deja/g++.ext/pretty3.C: New test.
* g++.old-deja/g++.other/debug6.C: New test.
Andrew Haley [Mon, 22 Nov 1999 14:20:35 +0000 (14:20 +0000)]
varasm.c (function_defined): Remove.
1999-11-22 Andrew Haley <aph@cygnus.com>
* varasm.c (function_defined): Remove.
(make_function_rtl): Don't set function_defined.
(make_decl_rtl): Remove global register warning.
* regclass.c (no_global_reg_vars): New variable.
(globalize_reg): Warn if function has already been defined.
(regclass_init): Set no_global_reg_vars.
Jan Hubicka [Mon, 22 Nov 1999 13:43:39 +0000 (14:43 +0100)]
regclass.c (reg_pref): New structure and static variable
* regclass.c (reg_pref): New structure and static variable
(prefclass): Delete.
(altclass): Delete.
(all uses of prefclass and altclass): Use reg_pref instead.
Anthony Green [Sun, 21 Nov 1999 23:37:58 +0000 (23:37 +0000)]
constants.c (find_methodref_index): Unwrap method names before inserting them in the constant pool.
* constants.c (find_methodref_index): Unwrap method names before
inserting them in the constant pool.
* jcf-parse.c (jcf_parse): Display `interface' when appropriate.
* class.c (assume_compiled_node): New typedef.
(assume_compiled_tree): New static data.
(find_assume_compiled_node): New function.
(add_assume_compiled): New function.
(assume_compiled): New function.
* class.c (make_class_data): Use assume_compiled.
(is_compiled_class): Use assume_compiled.
Jan Hubicka [Sun, 21 Nov 1999 12:40:47 +0000 (12:40 +0000)]
regclass.c (may_move_in_cost): Rename from may_move_cost, all references updated.
* regclass.c (may_move_in_cost): Rename from may_move_cost, all
references updated.
(may_move_out_cost): New variable.
(init_reg_sets_1): Initialize may_move_out_cost.
(record_reg_classes): Use may_move_out_cost.
Jan Hubicka [Sun, 21 Nov 1999 01:34:22 +0000 (02:34 +0100)]
i386.md (neg, [...]): Revmap to use ix86_expand_unary_operator and ix86_unary_operator_ok.
* i386.md (neg, not and abs patterns): Revmap to use
ix86_expand_unary_operator and ix86_unary_operator_ok.
(add?f and sub?f expanders): Force operand 1 to register.
* i386.c (ix86_expand_unary_operator): Rewrite.
(ix86_unary_operator_ok): Ensure that memory operands
match real opcode.
(ix86_binary_operator_ok): Do not allow operand 1 to
come into memory and operand 0 not.
(ix86_expand_binary_operator): Ensure that
src1 is not non-matching memory.
Mark Mitchell [Thu, 18 Nov 1999 17:50:56 +0000 (17:50 +0000)]
except.h (struct eh_entry): Add goto_entry_p.
* except.h (struct eh_entry): Add goto_entry_p.
(eh_region_from_symbol): Remove prototype.
* except.c (find_func_region_from_symbol): New function.
(emit_cleanup_handler): Likewise.
(eh_region_from_symbol): Make it static.
(add_new_handler): Verify the argument.
(find_func_region): Update comment.
(expand_eh_region_end): Expand handlers here, rater than waiting
until expand_leftover_cleanups or start_all_catch.
(expand_leftover_cleanups): Don't expand here.
(expand_start_all_catch): Or here.
(expand_rethrow): Check the return value from find_func_region.
* function.c (expand_function_end): Emit the catch_clauses.
* varasm.c (output_constructor) Solved problem with long long
bitfields. Corrected calculating this_time and shift. Also
corrected calculating mask when BITS_PER_UNIT == 32 (c4x).
Diego Novillo [Thu, 18 Nov 1999 00:41:13 +0000 (00:41 +0000)]
invoke.texi: Add documentation for -muninit-const-in-rodata.
* invoke.texi: Add documentation for -muninit-const-in-rodata.
* config/mips/mips.h (MASK_UNINIT_CONST_IN_RODATA): Define.
(TARGET_UNINIT_CONST_IN_RODATA): Define.
(text_section): Add switches -munint-const-in-rodata and
-mno-uninit-const-in-rodata.
(ASM_OUTPUT_COMMON): Remove.
(ASM_OUTPUT_ALIGNED_DECL_COMMON): Define. Check if uninitialized
const objects should be placed in read-only data. Otherwise declare
them in common.
Jan Hubicka [Wed, 17 Nov 1999 17:39:18 +0000 (18:39 +0100)]
i386.md (divmodsi4): Rewrite to expander.
Mon Nov 15 22:45:39 CET 1999 Jan Hubicka <hubicka@freesoft.cz>
* i386.md (divmodsi4): Rewrite to expander.
(*divmodsi4_nocltd): New.
(*divmodsi4_cltd): New.
(divmodsi4 splitter): Handle the case when input comes in edx.
(udivmodhi4): Do not use constraints in exander.
(ashrsi3_31): Conditionize by TARGET_USE_CLTD.
Geoff Keating [Wed, 17 Nov 1999 02:34:15 +0000 (02:34 +0000)]
u77-test.f (wd): Allow for longer working directory pathnames.
* gcc/testsuite/g77.f-torture/execute/u77-test.f (wd): Allow for longer
working directory pathnames.
* libf2c/libU77/u77-test.f (wd): Allow for longer working directory
pathnames.
ggc-common.c (ggc_print_statistics): Cast size_t to unsigned long for printing.
* ggc-common.c (ggc_print_statistics): Cast size_t to unsigned long
for printing.
* ggc.h (struct ggc_statistics): Rearrange elements for better
packing on 64-bit hosts.
* lcm.c (compute_laterin): Store a size_t not an int in bb->aux.
(compute_nearerout): Likewise.
Mark Mitchell [Tue, 16 Nov 1999 03:42:28 +0000 (03:42 +0000)]
cp-tree.h (build_enumerator): Change prototype.
* cp-tree.h (build_enumerator): Change prototype.
* decl.c (enum_next_value): Remove.
(enum_overflow): Likewise.
(init_decl_processing): Don't register enum_next_value as a root.
(start_enum): Clear TYPE_VALUES for a redefined enum.
(finish_enum): Reset the type of enumeration constants.
(build_enumerator): Fix indentation. Don't copy CONST_DECLs when
we don't need to. Maintain the TYPE_VALUES list and look there
for the previously defined enumeration constant. Let enumeration
constants have the type of their values until the enumeration type
is complete.
* parse.y (enumlist_opt, enumlist, enumerator): Don't return a value.
(structsp): Adjust.
* parse.c: Regenerated.
* pt.c (tsubst_enum): Adjust according to build_enumerator changes.
Jason Merrill [Tue, 16 Nov 1999 01:37:39 +0000 (01:37 +0000)]
class.c (finish_struct): If we're a local class in a template function, add a TAG_DEFN.
* class.c (finish_struct): If we're a local class in a template
function, add a TAG_DEFN.
* pt.c (lookup_template_class): If this is a local class in a
template function, call pushtag.
(tsubst_expr, case TAG_DEFN): Handle classes, too.
Emit debug info with the vtable.
* search.c (maybe_suppress_debug_info): New function...
* class.c (finish_struct_1): ...split out from here.
* cp-tree.h: Declare it.
* decl2.c (finish_vtable_vardecl): Override TYPE_DECL_SUPPRESS_DEBUG
if we're writing out the vtable.
* decl.c, search.c (dfs_debug_mark, dfs_debug_unmarked_p,
note_debug_info_needed): #if 0 out.
Jason Merrill [Tue, 16 Nov 1999 00:13:51 +0000 (00:13 +0000)]
dwarf2out.c (scope_die_for): Don't rely on the decl_scope_table notion of nesting to find the DIE for a type...
* dwarf2out.c (scope_die_for): Don't rely on the decl_scope_table
notion of nesting to find the DIE for a type or function.
DIEs can go in limbo even if we got a context_die.
(push_decl_scope): Our context doesn't need to be in decl_scope_table.
(gen_struct_or_union_type_die): Don't use TREE_PERMANENT to test
for local type.
(gen_decl_die): Ignore NAMESPACE_DECLs for now.
(gen_type_die): Writing out the context doesn't cause member class
template instantiations to be written out as well.
Jeffrey A Law [Mon, 15 Nov 1999 08:12:29 +0000 (08:12 +0000)]
basic-block.h: Remove all #defines and prototypes related to integer lists.
* basic-block.h: Remove all #defines and prototypes related to
integer lists.
(free_bb_mem, compute_preds_succs): Remove prototype.
* rtl.h (free_bb_mem): Remove prototype.
* flow.c (alloc_int_list_node); Remove function.
(add_inst_list_node, free_int_list, add_pred_succ): Likewise.
(compute_preds_succs, free_bb_mem): Likewise.
* gcse.c (gcse_main): Do not call free_bb_mem anymore.
* toplev.c (rest_of_compilation): Likewise.
* haifa-sched.c (build_control_flow): Use flow generated edge
list to build the haifa specific edge list.
(find_rgns): Use new CFG data structures instead of pred/succ lists.
(schedule_insns): Do not build pred/succ lists anymore. Instead
build the edge table.
* gcse.c (delete_null_pointer_checks_1): Kill unused s_preds
argument. All callers changed.
(delete_null_pointer_checks_1): No longer need to compute the
pred/succ lists.