alpha.c (alpha_comparison_operator): Don't be so strict about DImode.
* config/alpha/alpha.c (alpha_comparison_operator): Don't be
so strict about DImode.
(alpha_swapped_comparison_operator): Likewise.
* config/alpha/alpha.md (*setne_internal): Name it. Allow
any integer output mode.
(*setcc_internal): Likewise.
(*setcc_swapped_internal): Likewise.
(*movdicc_internal, *movdicc_lbc, *movdicc_lbs): Name them.
(*mov[qhs]icc_internal): New.
(*mov[qhs]icc_lbc, *mov[qhs]icc_lbs): New.
bb-reorder.c (reorder_block_def): Reorder elements for size.
* bb-reorder.c (reorder_block_def): Reorder elements for size.
Remove add_jump; add next; replace flags with visited.
(rbd_init): Remove.
(REORDER_BLOCK_HEAD, REORDER_BLOCK_VISITED): Remove.
(REORDER_BLOCK_FLAGS, REORDER_BLOCK_INDEX): Remove.
(REORDER_BLOCK_ADD_JUMP, REORDER_BLOCK_EFF_HEAD): Remove.
(REORDER_BLOCK_EFF_END, REORDER_BLOCK_SCOPE): Remove.
(RBI): New.
(reorder_index, reorder_last_visited): Remove.
(skip_insns_after_block): Rewrite to use a switch.
(get_common_dest): Remove.
(chain_reorder_blocks): Remove.
(record_effective_endpoints): Split out from reorder_basic_blocks.
(make_reorder_chain): Likewise. Loop until all blocks are placed.
(make_reorder_chain_1): Renamed from old make_reorder_chain.
Only construct the reorder chain, do not move insns. Try harder
to tail recurse.
(label_for_bb, emit_jump_to_block_after): New.
(fixup_reorder_chain): Use them. Do bulk block movement. Examine
and adjust the jump insns appropriately. Fixup basic_block_info.
(verify_insn_chain): Always define.
(relate_bbs_with_scopes): Call xmalloc, not xcalloc. Fix thinko
in allocation size.
(make_new_scope): Don't write zeros to calloc'd space.
(build_scope_forest): Rely on xrealloc to DTRT.
(reorder_basic_blocks): Don't build loop nest. Don't fail if
profile_arc_flag. Streamline EH test.
Tom Tromey [Fri, 26 May 2000 01:16:20 +0000 (01:16 +0000)]
re GNATS gcj/162 (gcj does not initialize interfaces according to spec)
* parse.y (resolve_field_access): Don't check DECL_LANG_SPECIFIC
when trying to see if field's class should be initialized. Always
initialize field's declaring class, not qualified class.
For PR gcj/162.
* ifcvt.c (seq_contains_jump): New.
(noce_try_store_flag_constants): Use it to fail conversion.
(noce_try_store_flag_inc, noce_try_store_flag_mask): Likewise.
Mark Mitchell [Thu, 25 May 2000 23:27:18 +0000 (23:27 +0000)]
Finish implementation of VTTs.
* cp-tree.h (cp_tree_index): Add CPTI_VTT_PARM_TYPE and
CPTI_VTT_PARM_IDENTIFIER.
(vtt_parm_identifier): New macro.
(vtt_parm_type): Likewise.
(BINFO_SUBVTT_INDEX): Likewise.
(BINFO_VPTR_INDEX): Likewise.
(struct lang_decl): Add vtt_parm.
(DECL_VTT_PARM): New macro.
(DECL_USE_VTT_PARM): Likewise.
(DECL_NEEDS_VTT_PARM_P): Likewise.
(get_vtt_name): Declare.
(build_artifical_parm): Likewise.
(fixup_all_virtual_upcast_offsets): Likewise.
(expand_indirect_vtbls_init): Remove.
* call.c (build_new_method_call): Pass the vtt to subobject
constructors and destructors.
* class.c (get_vtt_name): Give it external linkage.
(build_clone): Handle the magic VTT parameters for clones.
(clone_function_decl): Fix typo in comment.
(build_vtt): Keep track of the indices in the VTTs where various
entities are stored.
(build_vtt_inits): Likewise.
(dfs_build_vtt_inits): Likewise.
(build_ctor_vtbl_group): Tweak type of construction vtables.
(dfs_accumulate_vtbl_inits): Build vtables for all bases, even
primary bases, when building construction vtables.
* decl.c (duplicate_decls): Handle DECL_VTT_PARM.
(initialize_predefined_identifiers): Add vtt_parm_identifier.
(init_decl_processing): Initialize vtt_parm_type.
(grokfndecl): Use DECL_OVERLOADED_OPERATOR_P.
(lang_mark_tree): Make vtt_parm.
* decl2.c (build_artificial_parm): New function.
(maybe_retrofit_in_chrg): Use it. Add VTT parameters.
(grokclassfn): Use build_artificial_parm.
* init.c (initialize_vtbl_ptrs): Call
fixup_all_virtual_upcast_offsets directly.
(perform_member_init): Use the complete subobject destructor for
member cleanups.
(build_vtbl_address): New function.
(expand_virtual_init): Handle VTTs.
* optimize (maybe_clone_body): Likewise.
* search.c (fixup_all_virtual_upcast_offsets): Give it external
linkage.
(expand_indirect_vtbls_init): Remove.
* semantics.c (setup_vtbl_ptr): Fix typos in comment.
* tree.c (make_binfo): Make them bigger.
David Edelsohn [Thu, 25 May 2000 18:17:46 +0000 (18:17 +0000)]
rs6000.c (expand_block_move): Add 64-bit PowerPC doubleword move to STRING case.
* rs6000.c (expand_block_move): Add 64-bit PowerPC doubleword move
to STRING case. Use doubleword STRING move for TARGET_POWERPC64
when unaligned.
* rs6000.h (CONST_OK_FOR_LETTER_P, 'J'): unsigned HOST_WIDE_INT.
(RETURN_ADDR_RTX): Use COUNT and FRAME, not count and frame.
(LEGITIMIZE_RELOAD_ADDRESS): unsigned HOST_WIDE_INT high.
* rs6000.md: Name various internal patterns.
Jan Hubicka [Thu, 25 May 2000 16:41:30 +0000 (09:41 -0700)]
Jan Hubicka <jh@suse.cz>
* jump.c (invert_exp_1): Remove first argument, use pc_set
to get the expression.
(redirect_exp): Make static; redirect only the pc_set expression,
remove first argument.
(invert_exp): Remove first argument, make static.
(jump_optimize): Use any_condjump_p, any_uncondjump_p and
any_onlyjump at most places where we originaly did condjump_p
and simplejump_p.
(jump_back_p, follow_jumps, thread_jumps): Likewise.
(delete_barrier_succesors): Use pc_set.
(invert_jump_1, invert_jump, redirect_jump_1, redirect_jump): Update
calls of invert_exp and redirect_exp.
* rtl.h (redirect_exp, invert_exp): Remove.
* unroll.c (copy_loop_body): Use invert_jump and redirect_jump.
Andrew MacLeod [Thu, 25 May 2000 15:21:51 +0000 (15:21 +0000)]
except.c (func_eh_entry): Add emitted field.
2000-05-25 Andrew MacLeod <amacleod@cygnus.com>
Andrew Haley <aph@cygnus.com>
* except.c (func_eh_entry): Add emitted field.
(new_eh_region_entry): Set emitted field to 0;
(output_exception_table_entry): Only emit previously un-emitted data,
and send it to the eh_data section.
(output_exception_table): Break out common parts. Output
exception table for entire compilation unit to eh_data section.
(output_exception_table_data): Common parts of output_exception_table.
Send output to eh_data section.
(output_function_exception_table): Output exception table data for
a single function to eh_data section.
(free_exception_table): New external to free the table.
* except.h (free_exception_table): Add prototype.
(output_function_exception_table): Add prototype.
* final.c (final_end_function): Output function exception table
for IA64_UNWIND_INFO.
(final_scan_insn): Emit any unwind directives for an insn.
* frame-dwarf2.c: New file containing all DWARF 2 specific code
from frame.c.
* frame.c: Remove all DWARF 2 specific code.
* config/ia64/frame-ia64.c: New file.
(gthread_stuff): Make all gthread available with
IA64_UNWIND_INFO.
(dwarf_fde): Define an IA64 struct for dwarf_fde.
(__register_frame_info, __register_frame): Move to common area of file.
(__register_frame_info_table, __register_frame_table): Move to common i
area.
(__deregister_frame_info, __deregister_frame): Move to common area.
(__frame_init, find_fde): New versions for IA64_UNWIND_INFO.
(read_uleb128): New version for ia64.
(get_unwind_record): Read the next IA-64 unwind record.
(read_R_record): Read a region header record.
(process_a_b_reg_code): X record helper.
(read_X_record): Read an X format record.
(read_B_record): Read a B format record.
(P3_record_types): List of record types matching the P3 format.
(P7_record_types): List of record types matching the P7 format.
(P8_record_types): List of record types matching the P8 format.
(read_P_record): Read a P format record.
(init_ia64_reg_loc): Set default fields for a register.
(init_ia64_unwind_frame): Set defaults for all register records.
(execute_one_ia64_descriptor): Execute one descriptor record.
(rse_address_add): Calculate the position of a local reg in memory.
(normalize_reg_loc): Turn a location descriptor into a memory address.
(maybe_normalize_reg_loc): Only normalize a descriptor if it falls
within a specified PC offset range.
(get_real_reg_value): Given a register location, retrieve its value.
(set_real_reg_value): Change the value of a register location.
(copy_reg_value): Copy reg values, if needed.
(copy_saved_reg_state): Copy all registers that need to be copied.
(process_state_between): Normalize all frame register records that
fall within the specified PC range.
(frame_translate): Take a processed frame description, and turn
everything into addresses.
(build_ia64_frame_state ): Find and create frame state record for a PC.
(get_personality): Get the personality routine for a given frame.
(get_except_table): Get the exception table for a given frame.
(record_name): Unwind record names for debugging.
(print_record): Print and unwind record.
(print_all_records): Print an entire unwind image.
(__ia64_backtrace): Print a backtrace.
(ia64_backtrace_helper): New function.
(__register_frame_info_aux): New function.
* config/ia64/crtend.asm (__do_frame_setup_aux): New function.
* frame.h (enum unw_record_type): New unwind record types.
(struct unw_p_record, unw_b_record, unw_x_record) : New unwind records.
(struct unw_r_record, unwind_record): New unwind record structs.
(struct unwind_info_ptr): Unwind information layout.
(IA64_UNW_LOC_TYPE_*): Macros for different types for location
descriptors.
(struct ia64_reg_loc): Register location description.
(struct ia64_frame_state): Location of all registers in a frame.
(struct object): Add pc_base and fde_end for IA64_UNWIND_INFO.
* libgcc2.c (__ia64_personality_v1): Personality routine.
(__calc_caller_bsp): Calculate the bsp register for the caller's
frame.
(ia64_throw_helper): Figure out who to return to and set up the
registers.
(__throw): Throw routine.
* output.h (assemble_eh_align, assemble_eh_label): New functions
to generate EH info where we want it.
(assemble_eh_integer): New function.
* toplev.c (compile_file): Output module level exception table for
non-ia64 targets.
(main): Set exceptions_via_longjump and flag_new_exceptions based
on IA64_UNWIND_INFO too.
* varasm.c (assemble_eh_label): Generate a label via
ASM_OUTPUT_EH_LABEL if it has been specified.
(assemble_eh_align): Generate an alignment directive via
ASM_OUTPUT_EH_ALIGN if it has been specified.
(assemble_eh_label): Generate an integer value via
ASM_OUTPUT_EH_type if they have been specified.
* config/ia64/ia64.c (rtx_needs_barrier): Add flushrs.
(ia64_init_builtins): Add __builtin_ia64_bsp
and __builtin_ia64_flushrs.
(ia64_expand_builtin): Add IA64_BUILTIN_BSP and
IA64_BUILTIN_FLUSHRS.
* config/ia64/ia64.h (ia64_builtins): Add IA64_BUILTIN_BSP and
IA64_BUILTIN_FLUSHRS.
* config/ia64/ia64.md (flushrs): New insn to flush the register
stack. Add to unspec list.
Nathan Sidwell [Thu, 25 May 2000 11:13:17 +0000 (11:13 +0000)]
tinfo.h (__user_type_info::contained_virtual_p): New predicate.
* tinfo.h (__user_type_info::contained_virtual_p): New
predicate.
* tinfo.cc (__user_type_info::do_upcast): Fix bug with diamond
shaped heirarchy.
(__vmi_class_type_info::__do_upcast): Fix bug with NULL pointer to
diamond shaped heirarchy. Add early out for mixed diamond and
duplicate shaped heirarchy.
Benjamin Kosnik [Thu, 25 May 2000 10:14:26 +0000 (10:14 +0000)]
[multiple changes]
2000-05-24 Nathan "I don't write ChangeLog Entries" Myers <ncm@cantrip.org>
* config/cpu/i486: New directory.
* config/cpu/i486/bits: New directory.
* config/cpu/i486/bits/atomicity.h: New file.
* config/cpu/i386/bits/atomicity.h (__compare_and_swap): Delete
'cmpxchgl' asm.
* acinclude.m4 (GLIBCPP_CHECK_CPU): Enable i386.
2000-05-24 Loren J. Rittle <ljrittle@acm.org>
* backward/alloc.h (__default_alloc_template): Only expose
implementation-specific symbol, if it exists in the
configuration.
* backward/iostream.h (ends): Expose symbol.
* backward/strstream.h: New file.
* backward/stream.h: New file.
* backward/ostream.h: New file.
* backward/istream.h: New file.
* backward/fstream.h: New file.
* backward/complex.h: New file.
* backward/iomanip.h: New file.
Loren J. Rittle [Thu, 25 May 2000 10:06:30 +0000 (10:06 +0000)]
alloc.h (__default_alloc_template): Only expose implementation-specific symbol, if it exists in the configuration.
2000-05-24 Loren J. Rittle <ljrittle@acm.org>
* backward/alloc.h (__default_alloc_template): Only expose
implementation-specific symbol, if it exists in the
configuration.
* backward/iostream.h (ends): Expose symbol.
* backward/strstream.h: New file.
* backward/stream.h: New file.
* backward/ostream.h: New file.
* backward/istream.h: New file.
* backward/fstream.h: New file.
* backward/complex.h: New file.
* backward/iomanip.h: New file.
J. David Anglin [Thu, 25 May 2000 01:49:09 +0000 (01:49 +0000)]
configure.in: Check for -Wno-long-long option support and improve handling of warning CFLAGS...
* configure.in: Check for -Wno-long-long option support and improve
handling of warning CFLAGS for stages 1 and 2.
* Makefile.in (WARN_CFLAGS): Move definition to configure.in.
* configure: Regenerate.
* Back out this patch:
Tue Dec 7 19:22:06 1999 Richard Henderson <rth@cygnus.com>
* loop.h (struct induction): Add multi_insn_incr.
* loop.c (basic_induction_var): New multi_insn_incr argument.
Set it if we search back through previous insns for the biv.
(record_biv): New multi_insn_incr argument; fill in struct induction.
(strength_reduce): Discard an iv with multiple bivs, any of
which require multiple insns to increment.
* loop.c (check_insn_for_bivs): Remove bits copied from above patch.
J"orn Rennecke [Thu, 25 May 2000 01:11:22 +0000 (01:11 +0000)]
rtl.h (loc_mentioned_in_p): Declare.
* rtl.h (loc_mentioned_in_p): Declare.
* reload.c (loc_mentioned_in_p): Moved from here...
* rtlanal.c (loc_mentioned_in_p): to here. No longer static.
Fix loop increment for 'E' handling.
* loop.c (strength_reduce): When doing biv->giv conversion,
take multi-insn biv increments into account.
Mark Mitchell [Wed, 24 May 2000 22:56:54 +0000 (22:56 +0000)]
cp-tree.h (build_delete): Change prototype.
* cp-tree.h (build_delete): Change prototype.
(build_vec_delete): Likewise.
* call.c (build_scoped_method_call): Use special_function_kind
values to indicate the kind of destruction to be done.
(build_method_call): Likewise.
* decl.c (finish_destructor_body): Likewise.
(maybe_build_cleanup_1): Likewise. Rename to ...
(maybe_build_cleanup): ... this.
* decl2.c (delete_sanity): Use special_function_kind
values to indicate the kind of destruction to be done.
(build_cleanup): Likewise.
* init.c (perform_member_init): Likewise.
(build_vec_delete_1): Likewise.
(build_dtor_call): Simplify.
(build_delete): Use special_function_kind
values to indicate the kind of destruction to be done.
(build_vbase_delete): Likewise.
(build_vec_delete): Likewise.
2000-05-24 Benjamin Kosnik <bkoz@purist.soma.redhat.com>
* acinclude.m4 (GLIBCPP_CHECK_COMPILER_VERSION): Remove
OPTLEVEL. Add FMTFLAGS.
* aclocal.m4: Regenerate.
* src/Makefile.am (AC_CXXFLAGS): Take out OPTLEVEL, as this is has
been disabled due to higher-level makefiles running amuck over
this bit, and add in FMTFLAGS so that formatting is clear.
* src/Makefile.in: Regenerate.
* configure: Regenerate.
* src/ios.cc (ios_base::sync_with_stdio): Cleanup buffers from
initialization.
* docs/download.html: Remove references to Cygwin-specific bits,
as this can now be built natively.
Update with current information.
Phil Edwards [Wed, 24 May 2000 18:35:37 +0000 (18:35 +0000)]
acinclude.m4 (GLIBCPP_CHECK_COMPILER_VERSION): If we can use -fdiagnostics-show-location=once, do so.
2000-05-24 Phil Edwards <pme@sourceware.cygnus.com>
* acinclude.m4 (GLIBCPP_CHECK_COMPILER_VERSION): If we can use
-fdiagnostics-show-location=once, do so. Expand AC_LANG_* to
enclose other tests in this macro, including future ones.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* docs/faq/index.html: Update location of libg++ FAQ.
* docs/faq/index.txt: Regenerate.
Nick Clifton [Wed, 24 May 2000 18:24:06 +0000 (18:24 +0000)]
(extract_muldiv): When constructing a multiplier/divisor...
(extract_muldiv): When constructing a multiplier/divisor, do not expect
const_binop to correctly determine if overflow has occured, so check explicitly.
Mark Mitchell [Wed, 24 May 2000 04:34:38 +0000 (04:34 +0000)]
decl2.c (maybe_retrofit_in_chrg): Don't create in-charge parameters for template functions.
* decl2.c (maybe_retrofit_in_chrg): Don't create in-charge
parameters for template functions.
* pt.c (tsubst_decl): Make sure we call maybe_retrofit_in_chrg for
destructors as well as constructors.
Clinton Popetz [Tue, 23 May 2000 20:10:17 +0000 (20:10 +0000)]
sh.c (gen_far_branch, [...]): Update to reflect new prototypes for redirect_jump and invert_jump.
* config/sh/sh.c (gen_far_branch, split_branches): Update
to reflect new prototypes for redirect_jump and invert_jump.
(sh_insn_length_adjustment): Get rid of const warnings.
Zack Weinberg [Tue, 23 May 2000 18:06:22 +0000 (18:06 +0000)]
simplify-rtx.c (SIGN_EXTEND): New macro.
* simplify-rtx.c (SIGN_EXTEND): New macro.
(simplify_unary_operation, simplify_binary_operation,
simplify_relational_operation): Use SIGN_EXTEND. Make low
halves of (low, high) pairs unsigned if they weren't already.
(simplify_ternary_operation): Cast INTVAL to unsigned before
comparing to a MODE_BITSIZE.
Richard Kenner [Tue, 23 May 2000 10:42:56 +0000 (10:42 +0000)]
alpha.c: Remove #ifdef HAIFA since now only scheduler.
* config/alpha/alpha.c: Remove #ifdef HAIFA since now only scheduler.
(alpha_start_function): Never write ..ng label if VMS or NT.
(alpha_align_insns): Remove GP_IN_USE arg.
Alignment now unsigned.
(alpha_reorg): Don't pass GP_IN_USE arg to alpha_align_insns.
* config/alpha/alpha.md (prologue_ldgp): Split into one define_expand
and two define_insn's.
Richard Kenner [Tue, 23 May 2000 01:44:05 +0000 (01:44 +0000)]
alpha.c (alpha_fnname): New static variable.
* config/alpha/alpha.c (alpha_fnname): New static variable.
(print_operand, case '~'): New case.
(alpha_expand_prologue): Emit prologue_ldgp insn if needed.
(alpha_start_function): Set alpha_fnname.
Write "ng" label if no ldgp; don't write ldgp insn.
* config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): New case '~'.
* config/alpha/alpha.md (prologue_ldgp): New define_insn.
Mark Mitchell [Mon, 22 May 2000 22:52:32 +0000 (22:52 +0000)]
cp-tree.h (IDENTIFIER_TYPENAME_P): Use a flag, not strncmp.
* cp-tree.h (IDENTIFIER_TYPENAME_P): Use a flag, not strncmp.
(DECL_CONV_FN_P): Simplify.
(DECL_OPERATOR): Remove.
(language_to_string): Declare.
* decl.c (duplicate_decls): Fix typo in comment.
(grokdeclarator): Adjust use of IDENTIFIER_TYPENAME_P.
(grok_op_properties): Use DECL_CONV_FN_P instead of
IDENTIFIER_TYPENAME_P.
* dump.c (dequeue_and_dump): Dump the language linkage of
declarations.
* error.c (language_to_string): Give it external linkage.
* method.c (build_typename_overload): Set IDENTIFIER_TYPENAME_P.
(implicitly_declare_fn): Set DECL_LANGUAGE.
* pt.c (check_explicit_specialization): Use DECL_CONV_FN_P, not
IDENTIFIER_TYPENAME_P.
(tsubst_decl): Likewise.
(tsubst_copy): Adjust use of IDENTIFIER_TYPENAME_P.
* semantics.c (finish_member_declaration): Don't mark members of
classes declared in an extern "C" region as extern "C".
Phil Edwards [Mon, 22 May 2000 20:56:51 +0000 (20:56 +0000)]
acinclude.m4: If the new pragma isn't supported, don't kill -Werror...
2000-05-22 Phil Edwards <pme@sourceware.cygnus.com>
* acinclude.m4: If the new pragma isn't supported, don't kill -Werror;
keep -Werror and add -Wno-unknown-pragma. -Werror Is Good.
* aclocal.m4: Regenerate.
* configure: Regenerate.