Jeffrey A Law [Thu, 5 Mar 1998 22:31:51 +0000 (22:31 +0000)]
haifa-sched.c (build_jmp_edges): Delete dead function.
* haifa-sched.c (build_jmp_edges): Delete dead function.
(build_control_flow): Use cfg routines from flow.c
(schedule_insns): Remove debugging code accidentally checked
in earlier today.
* basic-block.h: Add external integer list structures, typdefs,
accessor macros and function declarations. Simlarly for
basic block pred/succ support and simple bitmap stuff.
* flow.c: Add functions for integer list, basic block pred/succ
support and simple bitmap support.
(compute_dominators): New function to compute dominators and
post dominators.
(find_basic_blocks): Split into two functions.
(life_analysis): Likewise.
(flow_analysis): Removed. Now handled by calling find_basic_blocks,
the life_analysis from toplev.c
* toplev.c (rest_of_compilation): Call find_basic_blocks, then
life_analysis instead of flow_analysis.
Kaveh R. Ghazi [Thu, 5 Mar 1998 07:09:04 +0000 (07:09 +0000)]
Warning fixes:
* mips/iris6.h (TARGET_DEFAULT): Parenthesize macro definition.
* mips/mips.c: Include stdlib.h and unistd.h.
(mips_asm_file_end): Add braces around empty body in an if-statement.
(function_prologue): Wrap variable `fnname' in
!FUNCTION_NAME_ALREADY_DECLARED. Correct format specifier in fprintf.
(mips_select_rtx_section, mips_select_section): Declare as void.
* mips/mips.h: Add prototypes for extern functions in mips.c.
(FUNCTION_ARG_REGNO_P): Add parentheses around && within ||.
(ENCODE_SECTION_INFO): Add braces around empty body in an
if-statement.
* mips/mips.md (movdi): Add parentheses around && within ||.
(movsf, movdf): Likewise.
(branch_zero, branch_zero_di): Add default case in
enumeration switch.
alpha.h (TARGET_WINDOWS_NT, [...]): Just make them real constants, since they can't be changed.
* alpha/alpha.h (TARGET_WINDOWS_NT, TARGET_OPEN_VMS): Just make them
real constants, since they can't be changed.
(TARGET_AS_CAN_SUBTRACT_LABELS): New.
* alpha/alpha.md (builtin_setjmp_receiver): Use it.
* alpha/osf.h (TARGET_AS_CAN_SUBTRACT_LABELS): New.
* alpha/osf2or3.h (TARGET_AS_CAN_SUBTRACT_LABELS): New.
* alpha/vms.h (TARGET_OPEN_VMS): New.
* alpha/win-nt.h (TARGET_WINDOWS_NT): New.
haifa-sched.c (free_list): Rename from free_pnd_lst.
* haifa-sched.c (free_list): Rename from free_pnd_lst.
(free_pending_lists): Rename free_pnd_lst uses.
(remove_dependence): Place expunged element on unused_insn_list.
(alloc_INSN_LIST, alloc_EXPR_LIST): New. Change all callers of
gen_rtx_*_LIST and alloc_rtx to use them.
(compute_block_backward_dependences): Free the reg_last_* lists.
config.table: Make locating frag files failsafe even for the special case if...
�
* config.table: Make locating frag files failsafe even for the
special case if configuring and building in srcdir.
* configure.in: Make locating frag files failsafe even for the
special case if configuring and building in srcdir.
config.table: Make locating frag files failsafe even for the special case if...
�
* config.table: Make locating frag files failsafe even for the
special case if configuring and building in srcdir.
* configure.in: Make locating frag files failsafe even for the
special case if configuring and building in srcdir.
config.table: Make locating frag files failsafe even for the special case if...
a
* config.table: Make locating frag files failsafe even for the
special case if configuring and building in srcdir.
* configure.in: Make locating frag files failsafe even for the
special case if configuring and building in srcdir.
config.table: Make locating frag files failsafe even for the special case if...
�
* config.table: Make locating frag files failsafe even for the
special case if configuring and building in srcdir.
* configure.in: Make locating frag files failsafe even for the
special case if configuring and building in srcdir.
config.table: Make locating frag files failsafe even for the special case if...
* config.table: Make locating frag files failsafe even for the
special case if configuring and building in srcdir.
* configure.in: Make locating frag files failsafe even for the
special case if configuring and building in srcdir.
Franz Sirl [Wed, 4 Mar 1998 20:59:50 +0000 (13:59 -0700)]
linux.h: don't define DEFAULT_VTABLE_THUNKS to 1 if USE_GNULIBC_1 is defined
* rs6000/linux.h: don't define DEFAULT_VTABLE_THUNKS to 1 if
USE_GNULIBC_1 is defined
* configure.in: add a new case powerpc-*-linux-gnulibc1 which
includes the t-linux-gnulibc1 fragment
Michael Tiemann [Wed, 4 Mar 1998 12:13:02 +0000 (12:13 +0000)]
rtti.c (get_tinfo_fn_dynamic): If this function is called an FLAG_RTTI is unset...
* rtti.c (get_tinfo_fn_dynamic): If this function is called an
FLAG_RTTI is unset, initialize type info machinery and continue
with FLAG_RTTI enabled.
(get_typeid): Ditto.
Jason Merrill [Tue, 3 Mar 1998 22:27:04 +0000 (17:27 -0500)]
cvt.c, [...]: Clean up more old overloading code, old RTTI code, and some formatting quirks.
* cvt.c, decl.c, decl2.c, init.c, rtti.c, typeck.c, typeck2.c,
cp-tree.h: Clean up more old overloading code, old RTTI code, and
some formatting quirks.
J"orn Rennecke [Tue, 3 Mar 1998 20:45:49 +0000 (20:45 +0000)]
final.c (max_labelno): New static variable.
* final.c (max_labelno): New static variable.
(final_scan_insn): Check max_labelno before outputting an
alignment for a label.
(shorten_branches): Remove unused variable length_align.
Fix some minor problems with new shortening code.
Kaveh R. Ghazi [Tue, 3 Mar 1998 11:33:31 +0000 (11:33 +0000)]
Warning fixes:
Tue Mar 3 14:27:23 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* sparc.c (ultrasparc_adjust_cost): Add default case in
enumeration switch.
* sparc.h: Add prototypes for extern functions defined in
sparc.c.
* parse.y (explicit_template_type): Remove TEMPLATE keyword.
(nested_name_specifier): And add it before this use.
(typename_sub0): And this use. Also add use without the keyword.
(typename_sub1): Likewise.
* pt.c (instantiate_class_template): Don't actually instantiate
anything if our type uses template parms.
Jeff Law [Sun, 1 Mar 1998 17:24:18 +0000 (10:24 -0700)]
reorg.c (fill_slots_from_thread): Don't steal delay list from target if condition code of jump conflicts with...
* reorg.c (fill_slots_from_thread): Don't steal delay list from target
if condition code of jump conflicts with opposite_needed.
* reorg.c (fill_slots_from_thread): Mark resources referenced in
opposite_needed thread. Return delay_list even when cannot get
any more delay insns from end of subroutine.
* reorg.c (fill_slots_from_thread): New parameter, delay_list.
All callers changed.
Bruno Haible [Sun, 1 Mar 1998 17:09:39 +0000 (17:09 +0000)]
frame.c (start_fde_sort, [...]): New functions for fast sorting of an FDE array.
* frame.c (start_fde_sort, fde_split, heapsort, fde_merge,
end_fde_sort): New functions for fast sorting of an FDE array.
(fde_insert): Simplified.
(add_fdes): Change argument list.
(frame_init): Use the new functions.
Jason Merrill [Sat, 28 Feb 1998 15:32:02 +0000 (15:32 +0000)]
parse.y (nested_name_specifier): Use explicit_template_type.
* parse.y (nested_name_specifier): Use explicit_template_type.
(typename_sub): Allow a template_type, an explicit_template_type,
or an implicit template type at the end.
* lex.c (yyprint): Handle a PTYPENAME being a TEMPLATE_DECL.
* decl.c (make_typename_type): Handle template-id where the name
is a TEMPLATE_DECL.
* call.c (build_scoped_method_call): Handle member template
destructor call.
* pt.c (tsubst_copy, METHOD_CALL_EXPR): Don't assume a member
destructor is represented by the type.
Jason Merrill [Sat, 28 Feb 1998 12:19:29 +0000 (12:19 +0000)]
cp-tree.h (TYPENAME_TYPE_FULLNAME): New macro.
* cp-tree.h (TYPENAME_TYPE_FULLNAME): New macro.
* parse.y (nested_name_specifier): Add 'template' case.
(explicit_template_type): New rule.
(typename_sub): Use it.
* decl.c (make_typename_type): Handle getting a template-id for NAME.
* pt.c (tsubst): Likewise.
Kaveh R. Ghazi [Sat, 28 Feb 1998 07:06:53 +0000 (07:06 +0000)]
Fix warious warnings:
* c-aux-info.c: Include string.h/strings.h.
* pa.c: Include stdlib.h.
(pa_combine_instructions): Prototype the function.
(pa_can_combine_p, forward_branch_p, shadd_constant_p): Likewise.
(reloc_needed): Add default case for enumeration switch.
(remove_useless_addtr_insns): Remove unused variable `all'.
(hppa_expand_prologue): Add explicit braces to avoid
ambiguous `else'.
(output_function_epilogue): Remove unused variable `i'.
(output_millicode_call): Remove unused variable `link'.
(shadd_constant_p, forward_branch_p): Make the function static.
(following_call): Explicitly declare to return int.
(pa_reorg): Declare as void.
(pa_combine_instructions): Declare as static void. Add
parentheses around && within ||.
* pa.h: Add prototypes for pa_reorg, symbolic_operand,
following_call, function_label_operand, lhs_lshift_cint_operand
and zdepi_cint_p.
* pa.md: Add parentheses around && within ||.
* cppalloc.c: Include stdlib.h.
* cpperror.c (cpp_print_containing_files): Remove unused variable
`i'. Fix format specifier in fprintf.
* cse.c (cse_around_loop): Add explicit braces to avoid
ambiguous `else'.
(delete_dead_from_cse): Wrap variable `tem' in macro HAVE_cc0.
* expr.c (expand_expr): Add parentheses around && within ||.
* final.c (app_enable): Replace fprintf with fputs where there are
no format specifiers and no trailing argument after the string.
Eg, when printing ASM_APP_ON/ASM_APP_OFF.
(app_disable): Likewise.
(final_end_function): Likewise.
(final_scan_insn): Likewise. Remove unused variable `set'.
(profile_function): Wrap empty if-statement body in {} brackets.
* function.c: Include stdlib.h.
(pad_below): Wrap prototype and definition in ARGS_GROW_DOWNWARD.
(reposition_prologue_and_epilogue_notes): Add parentheses
around assignment used as truth value.
* integrate.c (expand_inline_function): Wrap variable
`cc0_insn' in macro HAVE_cc0.
* jump.c (jump_optimize): Wrap variable `q' in macro
HAVE_cc0. Remove unused variable `prev1'.
* libgcc2.c (__bb_exit_trace_func): Add parentheses around &&
within ||. Fix format specifier in fprintf.
(__bb_init_prg): Add parentheses around assignment used as
truth value.
* local-alloc.c: Include stdlib.h.
(requires_inout): Add parentheses around assignment used
as truth value.
* loop.c (analyze_loop_iterations): Wrap prototype and definition
in macro HAVE_decrement_and_branch_on_count.
(insert_bct, instrument_loop_bct): Likewise.
(move_movables): Add parentheses around assignment used as
truth value.
(consec_sets_invariant_p): Likewise.
(maybe_eliminate_biv_1): Wrap variable `new' in macro HAVE_cc0.
* objc/objc-act.c: Include stdlib.h.
(lookup_method_in_protocol_list): Wrap empty else-statement body
in braces.
(lookup_protocol_in_reflist): Likewise.
(objc_add_static_instance): Remove unused variables `decl_expr'
and `decl_spec'.
(get_objc_string_decl): Remove unused variable `decl'.
(generate_static_references): Remove unused variables `idecl' and
`instance'.
(check_protocols): Wrap empty else-statement body in braces.
* protoize.c: Include stdlib.h.
(substr): Add parentheses around assignment used as truth value.
(abspath): Likewise.
(shortpath): Likewise.
* regmove.c (fixup_match_1): Add parentheses around assignment
used as truth value.
* reload.c (push_secondary_reload): Remove unused variable `i'.
(find_reloads): Add parentheses around assignment used as truth
value.
* reload1.c: Include stdlib.h.
* rtl.h: Correct typo in prototype of offsettable_memref_p.
* stmt.c (add_case_node): Add parentheses around assignment used
as truth value.
(case_tree2list): Likewise.
* tree.c (valid_machine_attribute): Wrap variable `decl_attr_list'
in macro VALID_MACHINE_DECL_ATTRIBUTE. Wrap variable
`type_attr_list' in macro VALID_MACHINE_TYPE_ATTRIBUTE.
(merge_attributes): Add explicit braces to avoid ambiguous
`else'.
* unroll.c (copy_loop_body): Wrap variable `cc0_insn' in
macro HAVE_cc0.
* varasm.c: Include stdlib.h.
Kaveh R. Ghazi [Sat, 28 Feb 1998 06:11:54 +0000 (06:11 +0000)]
I've backed out of including stat.h via system.h because stat.h can define...
I've backed out of including stat.h via system.h because stat.h can
define static functions (eg on x86 svr4 according to jfc@mit.edu)
causing code bloat.
* system.h: Remove sys/stat.h.
* gcc.c: Add sys/stat.h.
Jason Merrill [Fri, 27 Feb 1998 12:15:17 +0000 (12:15 +0000)]
Support partial specialization of member class templates.
* pt.c (get_class_bindings): Add outer_args parm.
(most_specialized_class): Likewise.
(instantiate_class_template): Pass it.
(more_specialized_class): Likewise.
(lookup_template_class): Get context from template if none
was specified.
(finish_member_template_decl): Don't do anything with a
partial specialization.
* decl2.c (check_member_template): Use IS_AGGR_TYPE instead of
AGGREGATE_TYPE_P.
* class.c (finish_struct): Member class templates have already been
checked for name clashes.
* decl.c (pushdecl_with_scope): Handle pushing at class level.
Jason Merrill [Fri, 27 Feb 1998 02:27:38 +0000 (02:27 +0000)]
pt.c (tsubst, [...]): Support member class templates.
* pt.c (tsubst, TEMPLATE_DECL): Support member class templates.
(tsubst, *_PARM): Support multiple levels of template classes.
(instantiate_class_template): Look up the pattern from the
original template.
(lookup_template_class): Handle getting a template for d1.
(push_template_decl): Correct setting of 'primary'.
(reduce_template_parm_level): Add 'levels' parm.
(finish_member_template_decl): Support member class templates.
(template_class_depth): Handle multiple levels.
* parse.y (component_decl_1, fn.def2): Remove member template case.
(component_decl): Add member template cases.
* decl2.c (check_member_template): We now handle member template
classes.
* decl.c (pushtag): Handle member templates.
* method.c (do_inline_function_hair): Don't touch
IDENTIFIER_GLOBAL_VALUE.
* init.c (build_offset_ref): If name isn't an identifier, just
return it.
* spew.c (yylex): Handle PTYPENAME like TYPENAME.
* typeck.c (get_delta_difference): Do adjust for conversions to
and from virtual base.
Jeffrey A Law [Wed, 25 Feb 1998 22:39:34 +0000 (22:39 +0000)]
i386.c (struct machine_function): Add new fields for PIC stuff.
* i386.c (struct machine_function): Add new fields for PIC stuff.
(save_386_machine_status): Fix argument to xmalloc. Save pic_label_rtx
and pic_label_name.
(restore_386_machine_status): Corresponding changes.
(clear_386_stack_locals): Also clear pic_label_rtx and pic_label_name.
Jason Merrill [Wed, 25 Feb 1998 00:49:51 +0000 (19:49 -0500)]
Partial implementation of namespaces.
* decl.c (push_namespace): Handle redeclaration error.
* cp-tree.h (IDENTIFIER_NAMESPACE_VALUE): New macro.
(IDENTIFIER_NAMESPACE_BINDINGS): New macro.
(NAMESPACE_BINDING): New macro.
(IDENTIFIER_GLOBAL_VALUE): Use NAMESPACE_BINDING.
* *.c: Use them.
* pt.c (push_template_decl): Use innermost_args.
* decl.c (get_unique_name): Tweak from earlier in the name.
* cp-tree.def: Add CPLUS_BINDING node.
* cp-tree.h (tree_binding): new struct
(BINDING_SCOPE, BINDING_VALUE): new macros
(current_namespace, global_namespace): declare extern
(struct lang_decl_flags): new field in_namespace
(DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): new macros
(DECL_NAMESPACE, SET_DECL_NAMESPACE): new macros
(TREE_INDIRECT_USING): new macro
* decl2.c (current_namespace, global_namespace): Declare. The
value is a NAMESPACE_DECL now, not a TREE_LIST.
(is_namespace_ancestor, namespace_ancestor):new static functions.
(add_using_namespace, ambiguous_decl): likewise.
(lookup_using_namespace): new support function for lookup_name.
(qualified_lookup_using_namespace): new support function for
do_scoped_id and lookup_namespace_name
(get_namespace_id): mark as obsolete.
(current_namespace_id): Likewise.
(do_namespace_alias): Implement.
(do_using_directive): Implement as call to add_using_namespace.
* decl.c (binding_for_name): new function.
(push_namespace, pop_namespace): implement.
(push_decl): don't install a FUNCTION_DECL in the global branch.
(lookup_namespace_name): implement using qualified lookup.
(lookup_name_real): For global scoping, lookup in
global_namespace. For namespace scoping, lookup in given
namespace. For unscoped lookup, iterate over namespace,
considering using directives.
(init_decl_processing): initialize global_namespace.
(grokvardecl): Build assembler name as static name for globals.
(grokdeclarator): Remove old namespace mangling.
(xref_tag): When installing a global binding for the
tag, make sure we have an identifier.
* method.c (build_overload_nested_name): mangle namespaces.
(build_qualified_name): Likewise.
(build_decl_overload_real): Likewise.
* lex.c (build_lang_decl): set namespace for new declaration to
current_namespace.
(do_scoped_id): find global names in global or current
namespace, or using qualified namespace lookup, depending on
context.
* init.c (build_member_call): When scope is namespace, use
build_x_function_call instead.
(build_offset_ref): When scope is namespace, collapse processing
to lookup_namespace_name instead.
* error.c (dump_decl): Support NAMESPACE_DECL.
* decl.c (pushdecl): Bind globals to current namespace.
(push_overloaded_decl): Likewise.
(lookup_tag): Likewise.
(lookup_name_current_level): Likewise.
(xref_tag): Likewise.
(start_function): Likewise.
* lex.c (do_identifier): Likewise.
(identifier_typedecl_value): Likewise.
(real_yylex): Likewise.
* method.c (do_inline_function_hair): Likewise.
* parse.y (unscoped): Likewise.
* pt.c (check_explicit_specialization): Likewise.
(lookup_template_class): Likewise.
* rtti.c (call_void_fn): Likewise.
* sig.c (build_sigtable): Likewise.
* ptree.c (lang_print_xnode): New function.
* flags.h (g_switch_value, g_switch_set): Declare.
* alpha.c (override_options): Set g_switch_value=8 if not set.
* alpha/elf.h (CC1_SPEC): New.
(ASM_SPEC): New.
(LINK_SPEC): Pass along the -G value we were given.
(LOCAL_ASM_OP): Remove.
(ASM_OUTPUT_ALIGNED_LOCAL): Output to .bss or .sbss by size.
(MAX_OFILE_ALIGNMENT): New.
(BSS_SECTION_ASM_OP, SBSS_SECTION_ASM_OP, SDATA_SECTION_ASM_OP): New.
(EXTRA_SECTIONS): Add sbss and sdata.
(SECTION_FUNCTION_TEMPLATE): New.
(EXTRA_SECTION_FUNCTIONS): Use it.
(CTORS_SECTION_FUNCTION, DTORS_SECTION_FUNCTION): Remove.
(SELECT_SECTION): Use sdata when small enough.
* alpha/linux.h (ASM_SPEC): Remove.
Jason Merrill [Tue, 24 Feb 1998 01:41:45 +0000 (01:41 +0000)]
pt.c (instantiate_class_template): Don't instantiate if pedantic and the args use template parms.
* pt.c (instantiate_class_template): Don't instantiate if pedantic
and the args use template parms.
* pt.c (push_tinst_level): If the instantiaton uses template parms,
fail silently.
* decl.c (xref_basetypes): Do call complete_type for basetypes
that involve template parameters.