Clinton Popetz [Fri, 14 Jan 2000 14:31:43 +0000 (14:31 +0000)]
mips.h (REGISTER_MOVE_COST): Remove redundant case for moving from HI/LO/HI_LO_REG.
* config/mips/mips.h (REGISTER_MOVE_COST): Remove redundant
case for moving from HI/LO/HI_LO_REG. This makes the behavior
match the comment for MIPS16.
Jeffrey A Law [Fri, 14 Jan 2000 09:28:10 +0000 (09:28 +0000)]
fr30.h (TRAMPOLINE_TEMPLATE): Use nops to ensure the static chain and destination functions are 32bit aligned...
* fr30.h (TRAMPOLINE_TEMPLATE): Use nops to ensure the static chain
and destination functions are 32bit aligned within the trampoline.
(TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Corresponding changes.
(TRAMPOLINE_ALIGNMENT): Define.
Jeffrey A Law [Fri, 14 Jan 2000 07:29:20 +0000 (07:29 +0000)]
fr30.c (call_operand): Tighten and rework to match rules for call RTL expressions.
* fr30.c (call_operand): Tighten and rework to match rules for
call RTL expressions.
* fr30.h (PREDICATE_CODES, case call_operand): Only allow MEMs.
* fr30.md (call patterns): Improve constraints.
Jason Eckhardt [Fri, 14 Jan 2000 02:01:21 +0000 (02:01 +0000)]
predict.c: New file.
Thu Jan 13 14:46:03 2000 Jason Eckhardt <jle@cygnus.com>
Stan Cox <scox@cygnus.com>
* predict.c: New file. Preliminary infrastructure work for static
branch prediction and basic block reordering.
* basic-block.h: Add prototype for estimate_probability.
* Makefile.in: Add rules for predict.o.
Co-Authored-By: Stan Cox <scox@cygnus.com>
From-SVN: r31402
Fred Fish [Thu, 13 Jan 2000 01:37:38 +0000 (01:37 +0000)]
Makefile.in (SHOPT): New macro, flag to ld to create shared library.
* Makefile.in (SHOPT): New macro, flag to ld to create
shared library. Defaults to "-shared".
(SHLIB): Use new SHOPT rather than hardcoded "-shared".
* configure.in: While configuring for *-*-beos*, if
--enable-shared is given, add beos.ml to list of makefile
frags.
* config/beos.ml: New file.
Jason Merrill [Thu, 13 Jan 2000 00:37:06 +0000 (19:37 -0500)]
configure.in (i?86-*-beos{pe,elf,}*): Recognize.
* configure.in (i?86-*-beos{pe,elf,}*): Recognize.
* i386/t-beos, i386/x-beos, i386/xm-beos.h: New files.
* i386/beos-elf.h, i386/beos-pe.h: New files.
* Makefile.in (CROSS_SYSTEM_HEADER_DIR): New.
* cross-make (SYSTEM_HEADER_DIR): Define using
CROSS_SYSTEM_HEADER_DIR.
* gcc.c (LIBRARY_PATH_ENV): Provide default.
(process_command): Use it.
(main): Likewise. Kill trailing = from env vars.
(build_search_list): Put it back.
* collect2.c (main): Use LIBRARY_PATH_ENV.
* configure.in (GCC_NEED_DECLARATIONS): Add environ.
* toplev.c: Use NEED_DECLARATION_ENVIRON.
Mark Mitchell [Wed, 12 Jan 2000 20:56:15 +0000 (20:56 +0000)]
cp-tree.h (dfs_skip_vbases): New function.
* cp-tree.h (dfs_skip_vbases): New function.
(find_vbase_instance): Likewise.
* class.c (determine_primary_base): Allow a nearly empty base to
serve as a primary base class under the new ABI.
(get_class_offset_1): Rename to ...
(dfs_get_class_offset): ... this. Simplify. Don't issue error
messages here.
(get_class_offset): Use it. Issue error messages here.
(dfs_modify_vtables): Rely on dfs_unmarked_real_bases_queue_p to
find the right copies of virtual bases.
(fixup_vtable_deltas1): Rename to ...
(dfs_fixup_vtable_deltas): ... this. Adjust to handle virtual
bases as primary bases.
(fixup_vtable_deltas): Remove.
(override_one_vtable): Handle virtual bases as primary bases.
(merge_overrides): Likewise.
(finish_struct_1): Likewise.
(dump_class_hierarchy): Dump primary-ness of bases as well.
* search.c (mark_primary_bases): Use a pre-order traversal to
handle primary virtual bases.
(dfs_skip_vbases): New fiunction.
(expand_upcast_fixups): Adjust to handle primary virtual bases.
(fixup_virtual_upcast_offsets): Likewise.
(fixup_all_virtual_upcast_offsets): Likewise.
(dfs_find_vbase_instances): New function.
(find_vbase_instance): Likewise.
* cpplib.h (struct cpp_options): Change lang_asm to char.
Add lang_fortran.
* cppinit.c (builtin_array): Take out __STDC_VERSION__, it's
done in cpp_handle_option now.
(initialize_builtins): Take out special case code used only by
__STDC_VERSION__.
(cpp_handle_option): Turn off trigraphs and trigraph warnings
if -traditional. Recognize -lang-fortran and set
lang_fortran, also turn off cplusplus_comments.
(print_help): Document -lang-fortran.
* cpplib.c (handle_directive): Ignore `# 123 "file"' if
lang_asm. Ignore all directives other than `# 123 "file"' if
CPP_PREPROCESSED.
(cpp_get_token): If -traditional, don't recognize directives
unless the # is in column 1.
(parse_string): If lang_fortran or lang_asm, silently
terminate strings ('' or "") at end of line.
Remove unnecessary braces.
Alexandre Oliva [Tue, 11 Jan 2000 23:52:07 +0000 (23:52 +0000)]
resource.c (mark_referenced_resources): Mark a set strict_low_part as used.
* resource.c (mark_referenced_resources): Mark a set strict_low_part
as used.
* config/i386/i386.c (ix86_expand_setcc): Re-enable clear + set
strict_low_part when possible.
Kaveh R. Ghazi [Tue, 11 Jan 2000 18:37:11 +0000 (18:37 +0000)]
pa-protos.h: New file.
* pa-protos.h: New file.
* pa.c: Include recog.h and tm_p.h.
(compute_zdepwi_operands, compute_movstrsi_length,
remove_useless_addtr_insns, store_reg, load_reg, set_reg_plus_d,
find_addr_reg, import_milli): Add static prototypes.
(pa_cpu_string, pa_arch_string): Constify a char*.
(legitimize_pic_address): Pass argument `mode' to pic_label_operand.
(read_only_operand): Add argument `mode'.
(singlemove_string, output_move_double, output_fp_move_double,
output_block_move, output_and, output_ior, output_ascii,
remove_useless_addtr_insns, milli_names, output_mul_insn,
output_div_insn, output_mod_insn, output_arg_descriptor,
output_cbranch, output_bb, output_bvb, output_dbra, ,
output_millicode_call, output_call, hppa_encode_label,
output_parallel_movb, output_parallel_addb): Constify a char*.
(hppa_va_start): Mark parameter `stdarg_p' with ATTRIBUTE_UNUSED.
(output_parallel_addb): Remove extra arg to `constrain_operands'
* pa.h: Move all prototypes to pa-protos.h.
(pa_cpu_string, pa_arch_string): Constify a char*.
(LEGITIMIZE_ADDRESS): Call `symbolic_operand' with mode argument.
* pa.md: Call `function_label_operand' with mode argument.
Likewise for `read_only_operand'.
Fix nesting of parens in call to `symbolic_operand'.
Clinton Popetz [Tue, 11 Jan 2000 17:42:30 +0000 (17:42 +0000)]
mips.c (mips_va_arg): For EABI...
* config/mips/mips.c (mips_va_arg): For EABI, emit the queued
integer vararg POSTINCREMENT before the destination of the jump
for the hard fp case.
(function_arg_pass_by_reference): Pass a copy of CUM to
FUNCTION_ARG.
* config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Move check
for CONSTANT_ADDRESS_P above while loop for subreg.
Clinton Popetz [Tue, 11 Jan 2000 17:26:28 +0000 (17:26 +0000)]
flow.c (propagate_block): When a prologue/epilogue insn is marked dead...
* flow.c (propagate_block): When a prologue/epilogue insn
is marked dead, unconditionally clear libcall_is_dead and
insn_is_dead, and only dump rtl if warnings aren't being
suppressed.
Jan Hubicka [Tue, 11 Jan 2000 15:44:34 +0000 (16:44 +0100)]
i386.c (ix86_attr_length_default): Handle TYPE_STR and TYPE_CLD.
* i386.c (ix86_attr_length_default): Handle TYPE_STR and TYPE_CLD.
* i386.md (FIRST_PSEUDO_REGISTER): Set to 20.
(FIXED_REGISTERS): Set dirflag as fixed.
(CALL_USED_REGISTERS): Set dirflag as used.
(REG_ALLOC_ORDER): Set dirflag as last one.
(DIRFLAG_REG): New macro.
(MD_ASM_CLOBBERS): Asm clobber dirflag for backward compatibility.
(HI_REGISTER_NAMES): Add dirflag.
(DEBUF_PRINT_REG): Handle dirflag.
* i386.md (type attribute): New cld and str types.
(length_opcode attribute): Set cld and str to 1.
(memory attribute): Set str to unknown - it is not clear from the
patterns.
(pent_np function unit): Prefixed string operations takes 12 cycles
minimally; cld takes 2 cycles.
(ppro_uops attribute): Str is "many" and cld is "few".
(ppro_p0 unit): Handle cld here.
(k6_alux unit): Handle cld and str types.
(k6_load unit): It is ocupied by str opcodes.
(k6_store unit): It is ocupied by str opcodes.
(athlon_decode): Str is vector decoded.
(athlon_ieu): Handle str and cld.
(cld pattern): New.
(movstrsi, clrstr, cmpstr, strlen expander): Emit cld instruction
(movstrsi_1, clrstrsi_1, cmpstrsi_1, strlensi_1,
cmpstrsi_nz_1 insn): Do not output cld instruction
Jeffrey A Law [Tue, 11 Jan 2000 12:50:18 +0000 (12:50 +0000)]
* Band-aid until haifa's bitset implementation is nuked.
* haifa-sched.c (extract_bitlst): New parameter for size of the
bitset in bits. All callers changed. Avoid looking at undefined
bits in the bitset.
(edgeset_bitsize): New variable.
(schedule_region): Initialize edgeset_bitsize.
Mark Mitchell [Tue, 11 Jan 2000 06:50:19 +0000 (06:50 +0000)]
class.c (dfs_modify_vtables_queue_p): Remove.
* class.c (dfs_modify_vtables_queue_p): Remove.
(modify_all_vtables): Use dfs_unmarked_real_bases_queue_p
and dfs_marked_real_bases_queue_p instead of
dfs_modify_vtables_queue_p.
Mark Mitchell [Tue, 11 Jan 2000 03:15:32 +0000 (03:15 +0000)]
class.c (build_base_field): New function, split out from ...
* class.c (build_base_field): New function, split out from ...
(build_base_fields): ... here. Use it. Allocate primary bases
first, under the new ABI.
(get_vtable_entry): Remove.
(remove_base_field): New function, split out from ...
(remove_base_fields): ... here. Adjust since primary bases come
first under the new ABI.