gcc/gcc/ChangeLog

1704 lines
65 KiB
Plaintext
Raw Normal View History

Wed Aug 26 09:30:59 1998 Nick Clifton <nickc@cygnus.com>
* config/arm/thumb.c (thumb_exit): Do not move a4 into lr if it
already contains the return address.
Wed Aug 26 12:57:09 1998 Jeffrey A Law (law@cygnus.com)
* mn10300.h (RTX_COSTS): Handle UDIV and UMOD too.
Wed Aug 26 16:35:37 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
* loop.c (check_dbra_loop): Add some code that would allow reversal
of some loops without a known constant loop end if it were enabled.
Wed Aug 26 11:08:44 1998 Gavin Romig-Koch <gavin@cygnus.com>
* mips.md (lshrsi3_internal2+2): Fix type-o.
Wed Aug 26 10:53:03 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* system.h: Include stdarg.h/varargs.h, make sure they are ordered
correctly with regards to stdio.h.
* calls.c: Remove stdarg.h/varargs.h.
* cccp.c: Likewise.
* cexp.y: Likewise.
* combine.c: Likewise.
* cpperror.c: Likewise.
* cpplib.c: Likewise.
* cpplib.h: Likewise.
* doprint.c: Likewise.
* emit-rtl.c: Likewise.
* final.c: Likewise.
* fix-header.c: Likewise.
* gcc.c: Likewise.
* genattr.c: Likewise.
* genattrtab.c: Likewise.
* gencodes.c: Likewise.
* genconfig.c: Likewise.
* genemit.c: Likewise.
* genextract.c: Likewise.
* genflags.c: Likewise.
* genopinit.c: Likewise.
* genoutput.c: Likewise.
* genpeep.c: Likewise.
* genrecog.c: Likewise.
* mips-tfile.c: Likewise.
* prefix.c: Likewise.
* protoize.c: Likewise.
* regmove.c: Likewise.
* toplev.c: Likewise.
* tree.c: Likewise.
Wed Aug 26 05:09:27 1998 Jakub Jelinek <jj@sunsite.ms.mff.cuni.cz>
* config/sparc/sparc.c (sparc_override_options): If not
TARGET_FPU, turn off TARGET_VIS.
* config/sparc/sparc.h (TARGET_SWITCHES): Add no-vis.
(LEGITIMATE_CONSTANT_P): Allow SF/DF mode zero when TARGET_VIS.
* config/sparc/sparc.md (movsi_insn): Use fzeros not fzero.
(movdi_insn_sp64): Add VIS fzero alternative.
(clear_sf, clear_df): New VIS patterns.
(movsf, movdf expanders): Allow fp_zero_operand flat out when
TARGET_VIS.
(one_cmpldi2_sp64): Provide new fnot1 VIS alternative.
Tue Aug 25 10:57:41 1998 Mark Mitchell <mark@markmitchell.com>
* loop.c (n_times_set, n_times_used, may_not_optimize,
reg_single_usage): Convert to varrays. All uses changed.
(insert_loop_mem): Return a value.
(scan_loop): Tweak AVOID_CC_MODE_COPIES code.
(load_mems_and_recount_loop_regs_set): Likewise. Grow the arrays, if
necessary.
Tue Aug 25 23:57:12 1998 Jeffrey A Law (law@cygnus.com)
* From Alexandre:
* configure.in: Do not set thread_file to "irix" since no such
support exists yet.
* sparc.md (float abs/neg splits): Check reload_completed before
calling alter_subreg.
Tue Aug 25 19:17:59 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* config/sparc/sparc.c (sparc_absnegfloat_split_legitimate): New
function.
* config/sparc/sparc.h: Declare it.
* config/sparc/sparc.md (float abs/neg splits): Use it.
(all other splits): Handle SUBREGs properly where necessary.
(unnamed (1<<x)-1 V8PLUS pattern): Disable for now.
Tue Aug 25 19:48:46 1998 Jeffrey A Law (law@cygnus.com)
* reorg.c (fill_simple_delay_slots): Do not abort if we encounter
an insn on the unfilled_slots_list that has no delay slots.
(fill_eager_delay_slots): Similarly.
Tue Aug 25 13:35:20 1998 Nick Clifton <nickc@cygnus.com>
* config/v850/v850.c (movsi_source_operand): Treat CONSTANT_P_RTX
as an ordinary operand.
Tue Aug 25 12:54:57 1998 Jason Merrill <jason@yorick.cygnus.com>
* tree.c (valid_machine_attribute): Don't apply attributes to both
decl and type.
Tue Aug 25 12:23:20 PDT 1998 Richard Henderson <rth@cygnus.com>
* reload.c (operands_match_p): Handle rtvecs.
* i386.c (legitimate_pic_address_disp_p): New.
(legitimate_address_p): Use it.
(legitimize_pic_address): Use unspecs to represent @GOT and @GOTOFF.
Handle constant pool symbols just like statics.
(emit_pic_move): Use Pmode not SImode for clarity.
(output_pic_addr_const) [SYMBOL_REF]: Remove @GOT and @GOTOFF hacks.
[UNSPEC]: New, handling what we killed above.
[PLUS]: Detect and abort on invalid symbol arithmetic.
* i386.h (CONSTANT_ADDRESS_P): Remove HIGH.
Tue Aug 25 12:02:23 1998 Mark Mitchell <mark@markmitchell.com>
* alias.c: Include output.h.
(DIFFERENT_ALIAS_SETS_P): Don't treat alias sets as
different if we're in a varargs function.
* Makefile.in (alias.o): Depend on output.h
Tue Aug 25 19:20:12 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
* sh.h (GIV_SORT_CRITERION): Delete.
Tue Aug 25 13:19:46 1998 Dave Brolley <brolley@cygnus.com>
* regclass.c (regclass): Use xmalloc/free instead of alloca.
* stupid.c (stupid_life_analysis): Ditto.
* reload1.c (reload): Ditto.
Tue Aug 25 05:48:18 1998 Jakub Jelinek <jj@sunsite.ms.mff.cuni.cz>
* config/sparc/sparc.c (arith_4096_operand, arith_add_operand,
arith_double_4096_operand, arith_double_add_operand): New
predicates.
* config/sparc/sparc.h (PREDICATE_CODES): Add them, declare them.
* config/sparc/sparc.md (adddi3, addsi3, subdi3, subsi3): Use
them to transform add/sub 4096 into add/sub -4096.
Mon Aug 24 23:31:03 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* loop.c (scan_loop): Allocate some slop to handle pseudos
generated by move_movables.
(load_mems_and_recount_loop_regs_set): Honor AVOID_CC_MODE_COPIES
here too.
Mon Aug 24 19:45:40 1998 Jim Wilson <wilson@cygnus.com>
* tree.def (DECL_RESULT): Correct documentation.
Tue Aug 25 01:15:27 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
* reload1.c (reload_reg_free_before_p): New argument EQUIV; Changed
all callers. Abort for RELOAD_FOR_INSN. RELOAD_FOR_OUTADDR_ADDR:
conflicts will all RELOAD_FOR_OUTPUT reloads.
* reload1.c (reload_cse_regs_1): When deleting a no-op move that
loads the function result, substitute with a USE.
Mon Aug 24 15:20:19 1998 David Edelsohn <edelsohn@mhpcc.edu>
* rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Use TARGET_POWERPC64
when testing LEGITIMATE_INDEXED_ADDRESS_P DFmode and DImode.
(LEGITIMIZE_ADDRESS): Use TARGET_POWERPC64 for INDEXED fixup.
* rs6000.c (print_operand, case 'L'): Add UNITS_PER_WORD, not 4.
(print_operand, cases 'O' and 'T'): Fix typos in lossage strings.
* rs6000.md (fix_truncdfsi2_store): Remove %w from non-CONST_INT
operand.
(movdf_softfloat32, movdf_hardfloat64, movdf_softfloat64): Change
'o' to 'm' for GPR variant constraints.
Mon Aug 24 10:25:46 1998 Jeffrey A Law (law@cygnus.com)
* loop.c (scan_loop): Honor AVOID_CC_MODE_COPIES.
* h8300.h (STRIP_NAME_ENCODING): Fix typo.
* sparc.md (TFmode splits): Use reg_overlap_mentioned_p to detect
when the source and destination overlap.
* stmt.c (emit_case_nodes): Change rtx_function to rtx_fn to avoid
clash with global type.
Mon Aug 24 00:53:53 1998 Jason Merrill <jason@yorick.cygnus.com>
* fixinc.irix: Add curses.h handling from fixinc.wrap.
* c-common.c (combine_strings): Also set TREE_READONLY.
Change warn_write_strings to flag_const_strings.
* c-decl.c, c-tree.h: Likewise.
Sun Aug 23 18:39:11 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* config/sparc/sparc.c (sparc_emit_set_const32): If outputting a
CONST_INT, not a symbolic reference, don't use a HIGH/LO_SUM
sequence, use SET/IOR instead so CSE can see it.
* config/sparc/sparc.md (movhi_const64_special,
movsi_const64_special): New patterns necessitated by that change.
(movhi_high): Remove.
(movhi_lo_sum): Change to match an IOR.
(movdf_insn_sp32): Test TARGET_V9 not TARGET_ARCH64.
(movdf_insn_v9only): New pattern for when V9 but not ARCH64.
(movdf_insn_sp64): Test both TARGET_V9 and TARGET_ARCH64.
(movdf splits): Allow when not V9 or when not ARCH64 and integer
registers are involved.
(snesi_zero_extend split): Remove reload_completed test.
(unnamed plus and minus zero_extend sidi splits): Add it.
iomanip.h: Use __extension__ for `extern' explicit template instantiations. * iomanip.h: Use __extension__ for `extern' explicit template instantiations. * sinst.cc: Don't explicitly instantiation string_char_traits<char>. * cinst.cc: Likewiwse, for complex<float>, complex<double>, complex<long double>. * extend.texi: Remove description of extension to explicit instantiation that is now endorsed by standard C++. * decl2.c (grok_array_decl): Add comment. (mark_used): Don't instantiate an explicit instantiation. * friend.c (make_friend_class): Remove bogus comment. Fix check for partial specializations. * pt.c (check_explicit_specialization): Don't SET_DECL_EXPLICIT_INSTANTIATION here. (mark_decl_instantiated): Or here. (do_decl_instantiation): Do it here, instead. Add checks for duplicate explicit instantiations, etc. Tidy. (do_type_instantiation): Likewise. (instantiate_decl): Improve comments. Complain about explicit instantiations where no definition is available. * cp-tree.h (ansi_null_node): Remove. * call.c (build_over_call): Warn about converting NULL to an arithmetic type. * cvt.c (build_expr_type_conversion): Likewise. Use null_ptr_cst_p instead of expanding it inline. * decl.c (ansi_null_node): Remove. (init_decl_processing): Make null_node always have integral type. * except.c (build_throw): Warn about converting NULL to an arithmetic type. * lex.c (init_parse): Remove handling of ansi_null_node. * pt.c (type_unification_real): Don't convert NULL to void* type. * typeck.c (build_binary_op_nodefault): Fix NULL warnings. (convert_for_assignment): Warn about converting NULL to an arithmetic type. (convert_for_initialization): Likewise. From-SVN: r21915
1998-08-23 14:47:24 +02:00
Sun Aug 23 11:56:08 1998 Mark Mitchell <mark@markmitchell.com>
* extend.texi: Remove description of extension to explicit
instantiation that is now endorsed by standard C++.
Sun Aug 23 09:39:09 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* config/arc/arc.c (arc_initialize_pic): Remove.
* config/arc/arc.h (INITIALIZE_PIC): Similarly, this routine does
nothing on any platform and is invoked by no-one, it does not even
appear in the documentation.
* config/sparc/sparc.h (INITIALIZE_PIC): Likewise.
* config/sparc/sparc.c (initialize_pic): Likewise.
(find_addr_reg): Remove this as well, no longer referenced after
my rewrite.
Sun Aug 23 00:17:14 1998 Jeffrey A Law (law@cygnus.com)
* recog.c (validate_replace_rtx_group): New function.
* recog.h (validate_replace_rtx_group): Declare it.
* regmove.c (optimize_reg_copy_3): If any substitution fails, then undo
the entire group of substitutions.
Sat Aug 22 23:31:00 1998 Klaus-Georg Adams (Klaus-Georg.Adams@chemie.uni-karlsruhe.de)
* loop.c (load_mems): Fix initializers.
Fri Aug 21 23:07:46 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* config/sparc/sparc.md (TFmode splits): Handle destination
registers being referenced in the address correctly.
* expmed.c (make_tree) [CONST_INT]: Sign extend even if
TREE_UNSIGNED, when bitsize of type's mode is larger than
HOST_BITS_PER_WIDE_INT.
Fri Aug 21 19:31:31 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
* tree.def (LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR): New tree nodes.
* tree.h (LABELED_BLOCK_LABEL, LABELED_BLOCK_BODY,
EXIT_BLOCK_LABELED_BLOCK, EXIT_BLOCK_RETURN, LOOP_EXPR_BODY): New
macros.
* expr.c (expand_expr): Handle LABELED_BLOCK_EXPR and
EXIT_BLOCK_EXPR.
Thu Aug 20 19:43:44 1998 Jeffrey A Law (law@cygnus.com)
* h8300.c (h8300_encode_label): Use '&' for tiny data items.
* h8300.h (TINY_DATA_NAME_P): Likewise.
(STRIP_NAME_ENCODING): Handle '&'.
* mn10200.h (REG_OK_FOR_INDEX_P): Do not check the mode of the
register (it could be accessed via an outer SUBREG).
(REG_OK_FOR_BASE_P): Likewwise.
(GO_IF_LEGITIMATE_ADDRESS): Consistently use REGNO_OK_FOR_BASE_P.
* remove.c (optimize_reg_copy_3): Abort instead of silently generating
bogus rtl.
* jump.c (rtx_renumbered_equal_p): Do not consider PLUS commutative.
Thu Aug 20 17:35:20 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* config/sparc/sparc.md (movtf_insn_sp32): All memory operands
must be offsettable so the splits can be made.
Thu Aug 20 13:56:53 1998 Michael Meissner <meissner@cygnus.com>
* config/i386/winnt.c: Include system.h, not stdio.h to get
sys/param.h pulled in before rtl.h in case the system defines MIN
and MAX.
Thu Aug 20 13:44:20 1998 David Edelsohn <edelsohn@mhpcc.edu>
* rs6000.md (movqi, movhi): Add CONSTANT_P_RTX.
Thu Aug 20 13:15:11 1998 Dave Brolley <brolley@cygnus.com>
* stor-layout.c (layout_type): Compute TYPE_SIZE_UNIT correctly for
arrays of bits.
* cpplib.c (cpp_define): Handle macros with parameters.
Wed Aug 19 21:33:19 1998 David Edelsohn <edelsohn@mhpcc.edu>
* rs6000.c (rs6000_output_load_toc_table): Use ld for 64-bit.
(output_toc): Use single TOC slot or llong minimal-toc for DFmode
and DImode 64-bit. Use llong for minimal-toc SFmode and
SYMBOL_REF / LABEL_REF 64-bit.
(output_function_profiler): Use llong for profiler label and ld to
load 64-bit label address.
Wed Aug 19 17:52:27 1998 Nick Clifton (nickc@cygnus.com)
* config/arm/thumb.md (extendqisi2_insn): Cope with REG +
OFFSET addressing.
1998-08-19 16:13:35 +02:00
Wed Aug 19 14:13:31 PDT 1998 Jeff Law (law@cygnus.com)
* version.c: Bump for snapshot.
1998-08-19 15:10:34 +02:00
Wed Aug 19 13:10:30 PDT 1998 Jeff Law (law@cygnus.com)
* version.c: Bump for snapshot.
Wed Aug 19 13:06:47 1998 Jason Merrill <jason@yorick.cygnus.com>
* collect2.c (extract_init_priority): Use atoi instead of strtoul.
Wed Aug 19 13:51:35 1998 Hans-Peter Nilsson <hp@axis.se>
* tm.texi (Misc): Fix typo "teh".
* tm.texi (PIC): Fix typo "PPIC".
* tm.texi (Caller Saves): Say that DEFAULT_CALLER_SAVES has no
effect when -O2 and higher.
* invoke.texi (Optimize Options): Likewise for -fcaller-saves.
1998-08-19 Michael Hayes <michaelh@ongaonga.chch.cri.nz>
* regclass.c: Changed register set documentation to be consistent
with GCC behaviour.
* final.c (final_start_function) Removed redundant test for
call_fixed_regs.
1998-08-19 14:30:47 +02:00
Wed Aug 19 13:28:41 1998 Mark Mitchell <mark@markmitchell.com>
* rtl.h (rtx_function): New type.
(for_each_rtx): New function.
* rtlanal.c (for_each_rtx): Define it.
* recog.c (change_t): New type.
(change_objects, change_old_codes, change_locs, change_olds):
Replace with ...
(changes): New variable.
(validate_change): Dynamically allocate room for more changes, if
necessary. Uses changes array instead of change_objects, etc.
(apply_change_group): Use changes array instead of
change_objects, etc.
* loop.c (loop_mem_info): New type.
(loop_mems): New variable.
(loop_mems_idx): Likewise.
(looop_mems_allocated): Likewise.
(scan_loop): Remove nregs parameter.
(next_insn_in_loop): New function.
(load_mems_and_recount_loop_regs_set): Likewise.
(load_mems): Likewise.
(insert_loop_mem): Likewise.
(replace_loop_mem): Likewise.
(replace_label): Likewise.
(INSN_IN_RANGE_P): New macro.
(loop_optimize): Don't pass max_reg_num() to scan_loop.
(scan_loop): Remove nregs parameter, compute it after any new
registers are created by load_mems. Use INSN_IN_RANGE_P and
next_insn_in_loop rather than expanding them inline. Call
load_mems to load memory into pseudos, if appropriate.
(prescan_loop): Figure out whether or not there are jumps from the
loop to targets other than the label immediately following the
loop. Call insert_loop_mem to notice all the MEMs used in the
loop, if it could be safe to pull MEMs into REGs for the duration
of the loop.
(strength_reduce): Use next_insn_in_loop. Tweak comments.
Wed Aug 19 08:29:44 1998 Richard Earnshaw (rearnsha@arm.com)
* arm.c (arm_override_options): Remove lie about ignoring PIC flag.
Wed Aug 19 07:08:15 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* config/sparc/sparc.c (finalize_pic): Check for the correct
nonlocal_goto_receiver UNSPEC number.
* config/sparc/sparc.md (nonlocal_goto_receiver): Add comment
making note of this dependency existing in sparc.c
(negtf2_notv9 split): Give NEG SFmode.
(negsf2): Fix insn output string.
Tue Aug 18 12:40:27 1998 Richard Henderson <rth@cygnus.com>
* c-common.c (decl_attributes): Issue an error if the argument
to alias is not a string.
Tue Aug 18 10:33:30 1998 Jeffrey A Law (law@cygnus.com)
* haifa-sched.c (sched_analyze): Put all JUMP_INSNs on the last
pending memory flush list.
* combine.c (can_combine_p): Allow combining insns with REG_RETVAL
notes.
(try_combine): Allow combining insns with REG_LIBCALL notes.
* expr.c (emit_block_move): Do not call memcpy as a libcall
instead build up a CALL_EXPR and call it like any other
function.
(clear_storage): Similarly for memset.
* regmove.c (fixup_match_2): Do not call reg_overlap_mentioned_p
on notes.
* Makefile.in (cplus-dem.o): Provide explicit rules for building
cplus-dem.o
* regmove.c (optimize_reg_copy_1): Update REG_N_CALLS_CROSSED
and REG_LIVE_LENGTH as successful substitutions are made.
Tue Aug 18 07:15:27 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* config/sparc/sparc.c (ultra_find_type): Add empty semicolon
statement after end of loop label.
Tue Aug 18 07:13:27 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* config/sparc/sparc.c (ultra_types_avail): New variable.
(ultra_build_types_avail): New function to record mask of insn
types in ready list at this cycle.
(ultrasparc_sched_reorder): Call it.
(ultra_find_type): Use it to quicken the search. Also simplif
dependency check, don't use rtx_equal_p because we know exactly
what we are looking for.
Tue Aug 18 03:20:53 1998 Richard Earnshaw (rearnsha@arm.com)
* arm.h (SECONDARY_INPUT_RELOAD_CLASS): Return NO_REGS if compiling
for architecture v4.
Mon Aug 17 21:26:38 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* config/sparc/sparc.md (sltu, sgeu): Don't FAIL, call
gen_compare_reg.
(movsf_const_intreg, movsf_const_high, movsf_const_lo,
movdf_const_intreg and helper splits): New patterns to move float
constants into integer registers.
(negtf2, negdf2, abstf2, absdf2): Rework using new patterns and
splits.
Mon Aug 17 11:46:19 1998 Jeffrey A Law (law@cygnus.com)
* From Graham
* tree.c (build_index_type): Copy TYPE_SIZE_UNIT from sizetype
to itype.
* c-decl.c (finish_enum): Copy TYPE_SIZ_UNIT from enumtype to tem.
* rs6000.c (secondary_reload_class): For TARGET_ELF, indicate that
a BASE_REGS register is needed as an intermediate when copying
a symbolic value into any register class other than BASE_REGS.
* expr.c (move_by_pieces): No longer static. Remove prototype.
* rtl.h (move_by_pieces): Add extern prototype.
* mips.c (expand_block_move): Handle aligned straight line copy by
calling move_by_pieces.
* expr.c (expand_expr): Allow assignments from TImode PARM_DECLs
and VAR_DECLs.
Mon Aug 17 10:28:52 1998 Mark Mitchell <mark@markmitchell.com>
* stmt.c (expand_end_loop): Tidy. Allow unconditional
jumps out of the loop to be treated as part of the exit test.
Mon Aug 17 10:06:11 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
Jeff Law <law@cygnus.com>
* Makefile.in (cplus-dep.o): Use cplus-dem.c from libiberty.
* cplus-dem.c: Delete.
* Makefile.in (fold-const.o): depend on $(RTL_H).
* fold-const.c: Include rtl.h to get the prototype for
`set_identifier_local_value'.
* loop.c (express_from_1): Remove unused variable `tmp'.
(combine_givs): cast the first argument of bzero to char *.
* toplev.c (display_help): Remove unused variable `looking_for_start'.
* c-decl.c (init_decl_processing): Remove unneeded &.
* alpha.h (alpha_initialize_trampoline): Provide prototype.
* except.c (set_exception_lang_code, set_exception_version_code):
Change parameter from `short' to `int' to avoid using a gcc
extension.
* except.h (set_exception_lang_code, set_exception_version_code):
Likewise for prototypes.
* flow.c (count_reg_references): Remove unused variables `regno'
and `i'.
* gcse.c (hash_scan_insn): Declare parameter `in_libcall_block'.
* prefix.c (translate_name): Cast the result of `alloca'.
* varray.h (VARRAY_FREE): Reimplement as a `do-while(0)' statement.
Mon Aug 17 09:23:42 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* config/m68k/m68k.c: Include "system.h" instead of <stdio.h>.
Include "toplev.h".
(valid_dbcc_comparison_p): Mark mode argument as unused.
(symbolic_operand): Likewise.
(legitimize_pic_address): Likewise.
(const_uint32_operand): Likewise.
(const_sint32_operand): Likewise.
* sched.c [!INSN_SCHEDULING]: Define only dummy function
schedule_insns and comment out rest of file.
* m68k.c (output_move_simode_const): Use subl to move a zero into an
address register.
(output_move_[hq]imode): Likewise.
Mon Aug 17 09:15:47 1998 Jeffrey A Law (law@cygnus.com)
* toplev.c (main): Enable -fstrict-aliasing for -O2 and above.
* invoke.texi: Corresponding changes.
Mon Aug 17 02:03:55 1998 Richard Henderson <rth@cygnus.com>
* regclass.c (allocate_reg_info): Respect MIN when clearing data.
Sun Aug 16 17:37:06 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* config/sparc/sparc.c (ultra_code_from_mask,
ultra_cmove_results_ready_p, ultra_fpmode_conflict_exists,
ultra_find_type, ultra_schedule_insn, ultra_flush_pipeline,
ultrasparc_sched_init, ultrasparc_variable_issue,
ultra_rescan_pipeline_state, ultrasparc_sched_reorder): New
functions to describe UltraSPARC pipeline exactly to Haifa.
(ultrasparc_adjust_cost): Indicate IMUL type insns have zero cost,
as there is nothing the scheduler can do about it. Indicate that
REG_DEP_OUTPUT's collide. Fixup formatting.
* config/sparc/sparc.h (RTX_COSTS): Fixup integer multiply and
divide costs on Ultra for DImode.
(MD_SCHED_INIT, MD_SCHED_REORDER, MD_SCHED_VARIABLE_ISSUE):
Define.
* config/sparc/sparc.md (ieu_unnamed function unit): Rename to
ieuN and add call_no_delay_slot to type list.
(cti function unit): New unit for branches on UltraSPARC.
(subx/addx insns): Set type to misc.
(sidi zero/sign extension insns on arch64): Set type to shift.
(sign_extendhidi2_insn): Set type to sload.
Sun Aug 16 13:52:00 1998 David Edelsohn <edelsohn@mhpcc.edu>
* rs6000.c (rs6000_stack_info): Use if == 0 for sizes.
(output_epilog): Use if != 0 for offset.
(rs6000_fatal_bad_address): Prepare for Intl.
* rs6000.h (rs6000_fatal_bad_address): Declare.
* rs6000.md (movsfcc, movdfcc): Use else if.
(elf_high): Use {liu|lis}.
(elf_low): Use {cal|la}. Remove %a template from old mnemonics.
(movsi): Use rs6000_fatal_bad_address.
Sun Aug 16 01:53:21 1998 Richard Henderson <rth@cygnus.com>
* reload.c (find_equiv_reg): Reject equivalences separated
by a volatile instruction.
Sun Aug 16 00:21:44 1998 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* rs6000/linux.h (CPP_OS_DEFAULT_SPEC): Define.
Sat Aug 15 20:51:35 1998 Richard Henderson <rth@cygnus.com>
* alpha.md (movsicc): Fix mode mismatch.
Sat Aug 15 20:22:33 1998 H.J. Lu (hjl@gnu.org)
* config/alpha/alpha.h (ASM_OUTPUT_MI_THUNK): Handle aggregated
return type.
* config/alpha/win-nt.h (ASM_OUTPUT_MI_THUNK): Likewise.
Sat Aug 15 08:39:49 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* config/sparc/sparc.md (movsi_lo_sum_pic_label_reg): Remove
write-only modifier from operand 1 constraint.
Sat Aug 15 06:28:19 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* config/sparc/sparc.c (sparc_emit_set_const64_quick1): If
emitting a XOR of -1 at the end, emit a NOT instead for combine's
sake.
(sparc_emit_set_const64): Likewise, also when computing trailing
bits do not negate low_bits and make fast_int an int.
Fri Aug 14 21:07:03 1998 Jeffrey A Law (law@cygnus.com)
* loop.c (add_label_notes): Do not ignore references to labels
before dispatch tables. Mirrors Apr 8 change to mark_jump_label.
* gcse.c (add_label_notes): Similarly.
* pa.h (ASM_OUTPUT_MI_THUNK): Strip name encoding.
* m68k.md (adddi_dilshr32): One of the operands must be a register.
(adddi_dishl32): Similarly.
Fri Aug 14 14:12:59 1998 Jason Merrill <jason@yorick.cygnus.com>
* i386.h (MODES_TIEABLE_P): Reorganize to shut up warnings.
* alias.c (memrefs_conflict_p): Add braces to shut up warnings.
* cse.c (cse_basic_block): Add parens to shut up warnings.
Fri Aug 14 12:58:21 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* config/sparc/sparc.c (sparc_emit_set_const64_quick2,
sparc_emit_set_const64_longway, const64_is_2insns,
create_simple_focus_bits, sparc_emit_set_const64): Fix more bugs
in 64-bit constant formation.
* config/sparc/sparc.md (snesi_zero_extend split): Generate
rtl for addx not subx.
(define_insn movdi_const64_special): Make available even when
HOST_BITS_PER_WIDE_INT is not 64.
(movdi_lo_sum_sp64_cint, movdi_high_sp64_cint): Remove.
(losum_di_medlow, sethm, setlo): Make op2 symbolic_operand.
(cmp_siqi_trunc_set, cmp_diqi_trunc_set): Encapsulate both
instances of operand 1 inside a QI subreg.
(xordi3_sp64_dbl): Remove '%' constraint for op1.
(one_cmpldi2_sp64): Fix output string.
(one_cmplsi2_not_liveg0): Rewrite to remove unneeded extra
alternative case.
(unnamed arch64 ashift DI): Truncate shift count if greater than
63, not 31.
Fri Aug 14 21:52:53 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
* expr.c (store_expr): Don't optimize away load-store pair
when either source or destination have a side effect.
Fri Aug 14 16:50:10 1998 John Carr <jfc@mit.edu>
* genrecog.c (add_to_sequence): Fatal error if the modes of the
operands of SET are incompatible.
* alpha.md: Fix max and min patterns so modes of SET operands match.
Fri Aug 14 12:22:55 1998 Ian Lance Taylor <ian@cygnus.com>
* configure.in: Avoid [[ by using test and changequote.
* configure: Rebuild.
Fri Aug 14 01:22:31 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* rtl.def (CONSTANT_P_RTX): Fix typo in string name.
* config/sparc/sparc.md (seqdi_special_trunc, snedi_special_trunc,
seqsi_special_extend, snesi_special_extend, snesi_zero_extend and
split, snedi_zero_trunc and split, seqsi_zero_extend and split,
seqdi_zero_trunc and split, pic_lo_sum_di, pic_sethi_di,
movdi_cc_sp64_trunc, movdi_cc_reg_sp64_trunc, addx_extend_sp32 and
split, addx_extend_sp64, subx_extend_sp64, subx_extend and split):
Fix mismatching modes in SET operands.
(conditional move patterns): Fix formatting.
(unnamed subx arch64 pattern): Remove duplicate insn.
Fri Aug 14 00:34:34 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* config/sparc/sparc.c (const64_operand, const64_high_operand):
Get it right when HOST_BITS_PER_WIDE_INT is not 64.
(input_operand): Fixup test for what we accept for constant
integers.
(sparc_emit_set_const32, sparc_emit_set_symbolic_const64): Give
set VOIDmode.
(safe_constDI): Remove.
(sparc_emit_set_safe_HIGH64, gen_safe_SET64, gen_safe_OR64,
gen_safe_XOR64): New functions.
(sparc_emit_set_const64_quick1, sparc_emit_set_const64_quick2,
sparc_emit_set_const64_longway, sparc_emit_set_const64): Use
them.
* config/sparc/sparc.md (define_insn xordi3_sp64_dbl): Only make
available when HOST_BITS_PER_WIDE_INT is not 64.
(define_insn movdi_sp64_dbl, movdi_const64_special): Likewise and
move before movdi_insn_sp64 pattern.
(define_insn movdi_lo_sum_sp64_dbl, movdi_high_sp64_dbl): Remove.
(define_insn sethi_di_medlow, seth44, setm44, sethh): Use
symbolic_operand as predicate for second operand.
(DImode minus split on arch32, negsi2 expander, one_cmplsi2
expander): Give set VOIDmode.
Fri Aug 14 01:45:06 1998 Mumit Khan <khan@xraylith.wisc.edu>
* i386/cygwin32 (DEFAULT_PCC_STRUCT_RETURN): Define.
Fri Aug 14 01:40:21 1998 Geoffrey Keating <geoffk@ozemail.com.au>
* rs6000/linux.h (LINK_SPEC): Pass -G args to the linker.
Fri Aug 14 01:23:23 1998 Richard Earnshaw (rearnsha@arm.com)
* arm/netbsd.h (TARGET_DEFAULT): Default includes software floating
point.
(CPP_FLOAT_DEFAULT_SPEC): Re-define accordingly.
Fri Aug 14 01:19:08 1998 Robert Lipe <robertl@dgii.com>
* install.texi: Various SCO OpenServer tweaks.
Thu Aug 13 20:14:40 1998 Jim Wilson <wilson@cygnus.com>
* reload1.c (eliminate_regs_in_insn): Handle another case when
eliminating the frame pointer to the hard frame pointer. Add
missing ep->to_rtx check to one existing case.
* mips/mips.md (movhi_internal2+2): Fix typo mem:SI -> mem:HI.
Thu Aug 13 17:08:11 1998 Jason Merrill <jason@yorick.cygnus.com>
* tree.h: De-conditionalize init_priority code.
* mips.h (NM_FLAGS): Change from -Bp to -Bn.
* collect2.c (NM_FLAGS): Change from -p to -n.
* configure.in: Turn on collect2 for mipstx39-elf.
Handle use_collect2=no properly.
* c-common.c: De-conditionalize init_priority code.
* collect2.c (extract_init_priority, sort_ids): New fns.
(main): Call sort_ids.
Move sequence_number to file scope.
* configure.in: Handle --enable-init-priority.
* c-common.c (attrs): Add A_INIT_PRIORITY.
(init_attributes, decl_attributes): Likewise.
* tree.h (DEFAULT_INIT_PRIORITY, MAX_INIT_PRIORITY): New macros.
* tree.c (get_file_function_name_long): Split out...
(get_file_function_name): ...from here.
Thu Aug 13 16:09:53 1998 Martin von Loewis <loewis@informatik.hu-berlin.de>
* expr.c (safe_from_p): Change code to ERROR_MARK only when not
accessing nodes.
Thu Aug 13 15:24:48 1998 Jason Merrill <jason@yorick.cygnus.com>
* toplev.c (display_help): Add braces to shut up warnings.
* tree.c (simple_cst_equal): Likewise.
* fold-const.c (non_lvalue): Don't deal with null pointer
constants here.
(fold, case COMPOUND_EXPR): Wrap a constant 0 in a NOP_EXPR.
* c-typeck.c (initializer_constant_valid_p): Allow conversion of 0
of any size to a pointer.
Thu Aug 13 12:53:13 1998 Jim Wilson <wilson@cygnus.com>
* i386/winnt.c (i386_pe_asm_file_end): Check TREE_SYMBOL_REFERENCED.
Wed Aug 12 17:25:18 1998 Jeffrey A Law (law@cygnus.com)
* mn10300.c (REG_SAVE_BYTES): Only reserve space for registers
which will be saved.
* mn10300.md (prologue insn): Only save registers which need saving.
(epilogue insn): Similarly.
* mn10300.c, mn10300.h, mn10300.md: Remove "global zero register"
optimizations.
Wed Aug 12 12:39:16 1998 Gavin Romig-Koch <gavin@cygnus.com>
* mips/mips.h (ENCODE_SECTION_INFO): Set SYMBOL_REF_FLAG for
VAR_DECL's in gp addressable sections.
Tue Aug 11 23:02:31 1998 John Carr <jfc@mit.edu>
* sparc.c: Change return <exp> to <exp>; return; in functions
returning void.
* sparc.md: Add empty semicolon statement after final label in
move expanders.
Tue Aug 11 22:42:01 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* config/sparc/sparc.md (define_insn addx_extend): Rename to
addx_extend_sp64, only allow when TARGET_ARCH64.
(define_insn addx_extend_sp32 and split): Version that works when
not TARGET_ARCH64.
(define_insn subx_extend): Likewise.
(define_split adddi3 and subdi3 with zero extension): Fixup and
correct bugs when not TARGET_ARCH64.
Tue Aug 11 16:04:34 1998 John Carr <jfc@mit.edu>
* except.c (set_exception_lang_code, set_exception_version_code):
Use prototype-style definition if __STDC__, to match declaration
in except.h.
* genemit.c: Change FAIL and DONE macros not to use loops.
Tue Aug 11 12:27:03 1998 Jim Wilson <wilson@cygnus.com>
* dwarf2out.c (ASM_OUTPUT_DWARF_ADDR_CONST): Use
ASM_OUTPUT_DWARF2_ADDR_CONST if defined.
* mips/mips.md (reload_outsi): Use M16_REG_P when TARGET_MIPS16.
Tue Aug 11 18:12:53 1998 Dave Love <d.love@dl.ac.uk>
* README.g77: Update from Craig.
Tue Aug 11 04:46:01 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* config/sparc/sparc.c (sparc_emit_set_const32): INTVAL is of
type HOST_WIDE_INT.
(safe_constDI sparc_emit_set_const64_quick1,
sparc_emit_set_const64_quick2, sparc_emit_set_const64_longway,
analyze_64bit_constant, const64_is_2insns,
create_simple_focus_bits): Fix some bugs when compiled on real
64-bit hosts.
(function_arg_record_value_3, function_arg_record_value_2,
function_arg_record_value): Add fully prototyped forward decls.
* config/sparc/sparc.md (define_insn cmpsi_insn_sp32): Rename back
to cmpsi_insn and use on both 64 and 32 bit targets.
(define_insn cmpsi_insn_sp64): Remove.
(define_expand zero_extendsidi2): Allow for 32-bit target too.
(define_insn zero_extendsidi2_insn): Rename to
zero_extendsidi2_insn_sp64.
(define_insn zero_extendsidi2_insn_sp32): New pattern and
assosciated forced split for it.
* config/sparc/sparc.c (const64_operand, const64_high_operand):
New predicates.
* config/sparc/sparc.h: Declare them.
(PREDICATE_CODES): Add them.
* config/sparc/sparc.md (movdi_lo_sum_sp64_dbl,
movdi_high_sp64_dbl, xordi3_sp64_dbl): Use them.
Mon Aug 10 22:57:24 1998 John Carr <jfc@mit.edu>
* config/sparc/sparc.md (define_insn jump): Output ba,pt not b,pt
in v9 case as the latter makes the Solaris assembler crash.
Mon Aug 10 22:39:09 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* config/sparc/sparc.c (input_operand): Do not accept a LO_SUM MEM
for TFmode when !v9. We require offsettable memory addresses.
* config/sparc/sparc.h (ALTER_HARD_SUBREG): Handle TFmode to
DFmode register number conversions.
* config/sparc/sparc.md (define_split DFmode moves): If register
is a SUBREG do alter_subreg on it before using.
(define_expand movtf): Fixup comment about alignment on v9.
(define_split TFmode moves): Don't use gen_{high,low}part, create
explicit SUBREGs instead.
Mon Aug 10 19:02:55 1998 John Carr <jfc@mit.edu>
* Makefile.in (mbchar.o): Depend on mbchar.c.
Mon Aug 10 04:28:13 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
Richard Henderson <rth@cygnus.com>
Rewrite Sparc backend for better code generation and
improved sparc64 support.
* config/sparc/sp64-elf.h: Set JUMP_TABLES_IN_TEXT_SECTION to
zero.
* config/sparc/sysv4.h: Likewise.
* config/sparc/sparc.c (v8plus_regcmp_p, sparc_operand,
move_operand, v8plus_regcmp_op, emit_move_sequence,
singlemove_string, doublemove_string, mem_aligned_8,
output_move_double, output_move_quad, output_fp_move_double,
move_quad_direction, output_fp_move_quad, output_scc_insn):
Remove.
(small_int_or_double): New predicate.
(gen_compare_reg): Remove TARGET_V8PLUS cmpdi_v8plus emission.
(legitimize_pic_address): Emit movsi_{high,lo_sum}_pic instead of
old pic_{sethi,lo_sum}_si patterns.
(mem_min_alignment): New generic function to replace
mem_aligned_8, which uses REGNO_POINTER_ALIGN information when
available and can test for arbitrary alignments. All callers
changed.
(save_regs, restore_regs, build_big_number,
output_function_prologue, output_cbranch, output_return,
sparc_flat_save_restore, sparc_flat_output_function_prologue,
sparc_flat_output_function_epilogue): Prettify
insn output.
(output_function_epilogue): Likewise and add code to output
deferred case vectors.
(output_v9branch): Likewise, add new arg INSN and use it to tack
on branch prediction settings. All callers changed.
(print_operand): Likewise and output %l44 for LO_SUMs when
TARGET_CM_MEDMID.
(sparc_splitdi_legitimate): New function to make sure DImode
splits can be run properly when !arch64.
(sparc_initialize_trampoline, sparc64_initialize_trampoline):
Reformat example code in comments.
(set_extends): Remove UNSPEC/v8plus_clear_high case.
(sparc_addr_diff_list, sparc_addr_list): New statics to keep track
of deferred case vectors we need to output.
(sparc_defer_case_vector): Record a case vector.
(sparc_output_addr_vec, sparc_output_addr_diff_vec,
sparc_output_deferred_case_vectors): New functions to output them.
(sparc_emit_set_const32): New function to form 32-bit constants in
registers when that requires more than one instruction.
(safe_constDI, sparc_emit_set_const64_quick1,
sparc_emit_set_const64_quick2, sparc_emit_set_const64_longway,
analyze_64bit_constant, const64_is_2insns,
create_simple_focus_bits, sparc_emit_set_const64): New functions
which do the same for 64-bit constants when arch64.
(sparc_emit_set_symbolic_const64): New function to emit address
loading for all code models on v9.
* config/sparc/sparc.h (CONDITIONAL_REGISTER_USAGE): Do not make
%g1 fixed when arch64, unfix %g0 when TARGET_LIVE_G0.
(ALTER_HARD_SUBREG): Fix thinko, return REGNO + 1 not 1.
(SECONDARY_INPUT_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS): Fix
inaccuracies in comments, add symbolic and text_segment operands
when TARGET_CM_MEDANY and TARGET_CM_EMBMEDANY respectively. Use
GENERAL_REGS in these cases as a temp REG is needed to load these
addresses into a register properly.
(EXTRA_CONSTRAINT): Document more accurately, remove Q case as it
is no longer used.
(GO_IF_LEGITIMATE_ADDRESS): Allow TFmode for LO_SUM on v9 since fp
quads are guarenteed to have 16-byte alignment.
(LEGITIMIZE_ADDRESS): For SYMBOL_REF, CONST, and LABEL_REF use
copy_to_suggested_reg instead of explicit LO_SUM and HIGH.
(ASM_OUTPUT_ADDR_VEC, ASM_OUTPUT_ADDR_DIFF_VEC): New macros for
deferred case vector implementation.
(ASM_OUTPUT_ADDR_VEC_ELT): Use fputc to output newline.
(ASM_OUTPUT_ADDR_DIFF_ELT): Parenthesize LABEL in macro calls.
Generate "internal label - label" instead of "label - 1b".
(PRINT_OPERAND_ADDRESS): For LO_SUM use %l44 on TARGET_CM_MEDMID.
(PREDICATE_CODES): Remove sparc_operand, move_operand,
v8plus_regcmp_op. Add small_int_or_double, input_operand, and
zero_operand.
(doublemove_string, output_block_move, output_fp_move_double,
output_fp_move_quad, output_move_double, output_move_quad,
output_scc_insn, singlemove_string, mem_aligned_8, move_operand,
sparc_operand, v8plus_regcmp_op, v8plus_regcmp_p): Remove externs.
(sparc_emit_set_const32, sparc_emit_set_const64,
sparc_emit_set_symbolic_const64, input_operand, zero_operand,
mem_min_alignment, small_int_or_double): Add externs.
* config/sparc/sparc.md: Document the many uses of UNSPEC and
UNSPEC_VOLATILE in this backend.
(define_function_unit ieu): Rename to ieu_unnamed. Add move and
unary to types which execute in it.
(define_function_unit ieu_shift): Rename to ieu0.
(define_function_unit ieu1): New, executes compare, call, and
uncond_branch type insns.
(define_function_units for type fdivs, fdivd, fsqrt): These
execute in the fpu multiply unit not the adder on UltraSparc.
(define_expand cmpdi): Disallow TARGET_V8PLUS.
(define_insn cmpsi_insn): Rename to cmpsi_insn_sp32.
(define_insn cmpsi_insn_sp64): New, same as sp32 variant except it
allows the arith_double_operand predicate and rHI constraint when
TARGET_ARCH64.
(define_insn cmpdi_sp64, cmpsf_fpe, cmpdf_fpe, cmptf_fpe,
cmpsf_fp, cmpdf_fp, cmptf_fp, sltu_insn, neg_sltu_insn,
neg_sltu_minux_x, neg_sltu_plus_x, sgeu_insn, neg_sgeu_insn,
sltu_plus_x, sltu_plus_x, sltu_plus_x_plus_y, x_minus_sltu,
sgeu_plus_x, x_minus_sgeu, movqi_cc_sp64, movhi_cc_sp64,
movsi_cc_sp64, movdi_cc_sp64, movsf_cc_sp64, movdf_cc_sp64,
movtf_cc_sp64, movqi_cc_reg_sp64, movhi_cc_reg_sp64,
movsi_cc_reg_sp64, movdi_cc_reg_sp64, movsf_cc_reg_sp64,
movdf_cc_reg_sp64, movtf_cc_reg_sp64, zero_extendhisi2_insn,
cmp_siqi_trunc, cmp_siqi_trunc_set, sign_extendhisi2_insn,
sign_extendqihi2_insn, sign_extendqisi2_insn,
sign_extendqidi2_insn, sign_extendhidi2_insn,
extendsfdf2, extendsftf2, extenddftf2, truncdfsf2, trunctfsf2,
trunctfdf2, floatsisf2, floatsidf2, floatsitf2, floatdisf2,
floatdidf2, floatditf2, fix_truncsfsi2, fix_truncdfsi2,
fix_trunctfsi2, fix_truncsfdi2, fix_truncdfdi2, fix_trunctfdi2,
adddi3_sp64, addsi3, cmp_ccx_plus, cmp_cc_plus_set, subdi_sp64,
subsi3, cmp_minus_ccx, cmp_minus_ccx_set, mulsi3, muldi3,
muldi3_v8plus, cmp_mul_set, mulsidi3, mulsidi3_v8plus,
const_mulsidi3_v8plus, mulsidi3_sp32, const_mulsidi3,
smulsi3_highpart_v8plus, unnamed subreg mult,
const_smulsi3_highpart_v8plus, smulsi3_highpart_sp32,
const_smulsi3_highpart, umulsidi3_v8plus, umulsidi3_sp32,
const_umulsidi3, const_umulsidi3_v8plus, umulsi3_highpart_v8plus,
const_umulsi3_highpart_v8plus, umulsi3_highpart_sp32,
const_umulsi3_highpart, divsi3, divdi3, cmp_sdiv_cc_set, udivsi3,
udivdi3, cmp_udiv_cc_set, smacsi, smacdi, umacdi, anddi3_sp64,
andsi3, and_not_di_sp64, and_not_si, iordi3_sp64, iorsi3,
or_not_di_sp64, or_not_si, xordi3_sp64, xorsi3, xor_not_di_sp64,
xor_not_si, cmp_cc_arith_op, cmp_ccx_arith_op,
cmp_cc_arith_op_set, cmp_ccx_arith_op_set, cmp_ccx_xor_not,
cmp_cc_xor_not_set, cmp_ccx_xor_not_set, cmp_cc_arith_op_not,
cmp_ccx_arith_op_not, cmp_cc_arith_op_not_set,
cmp_ccx_arith_op_not_set, negdi2_sp64, cmp_cc_neg, cmp_ccx_neg,
cmp_cc_set_neg, cmp_ccx_set_neg, one_cmpldi2_sp64, cmp_cc_not,
cmp_ccx_not, cmp_cc_set_not, cmp_ccx_set_not, addtf3, adddf3,
addsf3, subtf3, subdf3, subsf3, multf3, muldf3, mulsf3,
muldf3_extend, multf3_extend, divtf3, divdf3, divsf3, negtf2,
negdf2, negsf2, abstf2, absdf2, abssf2, sqrttf2, sqrtdf2, sqrtsf2,
ashlsi3, ashldi3, unnamed DI ashift, cmp_cc_ashift_1,
cmp_cc_set_ashift_1, ashrsi3, ashrdi3, unnamed DI ashiftrt,
ashrdi3_v8plus, lshrsi3, lshrdi3, unnamed DI lshiftrt,
lshrdi3_v8plus, tablejump_sp32, tablejump_sp64, call_address_sp32,
call_symbolic_sp32, call_address_sp64, call_symbolic_sp64,
call_address_struct_value_sp32, call_symbolic_struct_value_sp32,
call_address_untyped_struct_value_sp32,
call_symbolic_untyped_struct_value_sp32, call_value_address_sp32,
call_value_symbolic_sp32, call_value_address_sp64,
call_value_symbolic_sp64, branch_sp32, branch_sp64,
flush_register_windows, goto_handler_and_restore,
goto_handler_and_restore_v9, goto_handler_and_restore_v9_sp64,
flush, all ldd/std peepholes, return_qi, return_hi, return_si,
return_addsi, return_di, return_adddi, return_sf, all call+jump
peepholes, trap, unnamed trap insns): Prettify output strings.
(define_insn anddi3_sp32, and_not_di_sp32, iordi3_sp32,
or_not_di_sp32, xordi3_sp32, xor_not_di_sp32, one_cmpldi2):
Likewise and force + implement splits for integer cases.
(define_insn return_sf_no_fpu): Likewise and allow to match when
no-fpu because of our subreg SFmode splits.
(define_insn zero_extendqihi2, zero_extendqisi2_insn,
zero_extendqidi2_insn, zero_extendhidi2_insn,
zero_extendsidi2_insn, sign_extendsidi2_insn): Likewise and use
input_operand for second operand.
(cmp_minus_cc, cmp_minus_cc_set): Likewise and use
reg_or_0_operand for operand 2 so new splits can use it.
(cmp_zero_extendqisi2, cmp_zero_extendqisi2_set, cmp_cc_plus,
cmp_cc_xor_not): Likewise and don't forget to check TARGET_LIVE_G0
too.
(cmp_zero_extract, cmp_zero_extract_sp64): Likewise and allow
CONST_DOUBLEs for operand 2.
(define_insn move_label_di): Likewise and label distance
optimization because it no longer works with new deferred case
vector scheme. To be revisited.
(define_insn x_minus_y_minus_sltu, x_minus_sltu_plus_y): Likewise
and allow reg_or_0_operand and J constraint for second operand.
(define_insn jump): Set branch predict taken on V9.
(define_insn tablejump): Emit LABEL_REF + PLUS memory address for
new deferred case vector scheme.
(define_insn pic_tablejump_32, pic_tablejump_64): Remove.
(define_insn negdi2_sp32): Force + implement splits.
(define_insn negsi2, one_cmplsi2): Rename to negsi2_not_liveg0 and
one_cmplsi2_not_liveg0 respectively, and create expander of original
names which emit special rtl for TARGET_LIVE_G0.
(define_insn cmpdi_v8plus, scc_si, scc_di): Remove.
(define_insn seq, sne, slt, sge, sle, sltu, sgeu): Don't do
gen_compare_reg, FAIL instead.
(define_insn sgtu, sleu): Likewise and check gen_s*() return
values when trying to reverse condition codes, if they FAIL then
do likewise.
(define_insn snesi_zero, neg_snesi_zero, snesi_zero_extend,
snedi_zero, neg_snedi_zero, snedi_zero_trunc, seqsi_zero,
neg_seqsi_zero, seqsi_zero_extend, seqdi_zero, neg_seqdi_zero,
seqdi_zero_trunc, x_plus_i_ne_0, x_minus_i_ne_0, x_plus_i_eq_0,
x_minus_i_eq_0): Add new splits to perform these multi-insn cases,
set output string to # to indicate they are mandatory splits.
(define_insn pic_lo_sum_si, pic_sethi_si, pic_lo_sum_di,
pic_sethi_di, move_pic_label_si): Remove.
(define_insn movsi_low_sum, movsi_high, movsi_lo_sum_pic,
movsi_high_pic, movsi_pic_label_reg): New patterns to take their
place.
(define_expand movsi_pic_label_ref, define_insn
movsi_high_pic_label_ref, movsi_lo_sum_pic_label_ref): New
expander and insns to handle PIC label references and deferred
case vectors.
(define_insn get_pc_via_rdpc): Comment out as it is no longer
used.
(define_expand movqi, movhi, movsi, movdi, movsf, movdf, movtf):
Rewrite to not use emit_move_sequence, make use of new constant
formation code, and new splits for all multi-insn cases.
(define_insn movqi_insn): Remove sethi case, it can never happen.
Use reg_or_zero_operand instead of const0_rtx explicit test,
use input_operand instead of move_operand for source, and use
general_operand now for dest.
(define_insn movhi_insn): Similar but leave sethi case.
(define_insn lo_sum_qi, store_qi, store_hi): Remove.
(define_insn sethi_hi lo_sum_hi): Rename to movhi_high and
movhi_lo_sum respectively, prettify output string.
(define_insn movsi_zero_liveg0): New pattern to put zero into a
register when needed on TARGET_LIVE_G0.
(define_insn movsi_insn): Use general_operand and input_operand
for dest and src respectively. Simplify applicability test.
Prettify output strings, and add clr alternative for J
constraint.
(define_insn movdi_sp32_v9, movdi_sp32, define_splits for
deprecated std and reg-reg DI moves): Remove and...
(define_insn movdi_insn_sp32, movdi_insn_sp64): Replace with new
implementation which uses forced splits for all non-single insn
cases.
(define_split DI move cases on !arch64): New splits to handle all
situations of 64-bit double register DImode on 32bit, and
unaligned registers and memory addresses for all subtargets.
(define_insn movsf_const_insn, movdf_const_insn, store_sf):
Remove.
(define_insn movsf_insn, movsf_no_f_insn): Use general_operand and
input_operand for dest and src respectively, prettify output
strings.
(define_insn movdf_insn, movdf_no_e_insn, store_df,
movtf_const_insn, movtf_insn, movtf_no_e_insn, store_tf): Remove
and...
(define_insn movdf_insn_sp32, movdf_no_e_insn_sp32,
movdf_insn_sp64, movdf_no_e_insn_sp64, movtf_insn,
movtf_no_e_insn_sp32, movtf_insn_hq_sp64, movtf_insn_sp64,
movtf_no_e_insn_sp64) Replace with new
implementation which uses forced splits for all non-single insn
cases.
(define_split DF move cases): New splits in similar vein to DI
move counterparts.
(define_insn sethi_di_medlow, sethi_di_medium_pic,
sethi_di_embmedany_data, sethi_di_embmedany_text, sethi_di_sp64,
movdi_sp64_insn): Remove old v9 code model and constant loading
support insns and..
(define_insn pic_lo_sum_di, pic_sethi_di,
sethi_di_medlow_embmedany_pic, sethi_di_medlow, losum_di_medlow,
seth44, setm44, setl44, sethh, setlm, sethm, setlo,
embmedany_sethi, embmedany_losum, embmedany_brsum,
embmedany_textuhi, embmedany_texthi, embmedany_textulo,
embmedany_textlo, movdi_lo_sum_sp64_cint, movdi_lo_sum_sp64_dbl,
movdi_high_sp64_cint, movdi_high_sp64_dbl): Replace with new
scheme, using unspecs, secondary reloads, and one to one sparc
insn to rtl insn mapping for better scheduling and code gen.
(define_expand reload_indi, reload_outdi): Reload helpers for
MEDANY and EMBMEDANY symbol address loading cases which require a
temporary register.
(define_expand movsicc): Remove v8plus_regcmp cases.
(define_insn movdi_cc_sp64_trunc, movdi_cc_reg_sp64_trunc,
cmp_zero_extendqidi2, cmp_zero_extendqidi2_set, cmp_qidi_trunc,
cmp_diqi_trunc_set): New patterns used by some of the new scc
splits on arch64.
(define_insn xordi3_sp64_dbl): New pattern used for constant
formation when crossing from 32-bit targets.
(define_insn movsi_cc_reg_v8plus, v8plus_clear_high, and helper
split): Remove.
(define_insn addx, subx): Make visible and prettify.
(define_insn adddi3_insn_sp32): Likewise and force split.
(define_insn addx_extend, subx_extend, unnamed): New patterns for
64bit scc split usage.
(define_insn unnamed plusDI zero_extend, unnamed minusDI
zero_extend, subdi3): Force and implement splits.
* final.c (final_scan_insn): Don't output labels if target
specifies ASM_OUTPUT_ADDR_{DIFF}_VEC. Do these macro operations
instead.
* reorg.c (dbr_schedule): When taking on BR_PRED notes at the end,
don't forget to walk inside SEQUENCESs too as these are what the
delay slot scheduler will create.
Mon Aug 10 01:21:01 1998 Richard Henderson <rth@cygnus.com>
* alpha.md (extxl+1,+2): New patterns to work around
combine lossage.
Sat Aug 8 19:20:22 1998 Gary Thomas (gdt@linuxppc.org)
* rs6000.c (rs6000_allocate_stack_space) Fix typo which
caused bad assembly code to be generated.
1998-08-08 19:53:54 +02:00
Sat Aug 8 18:53:28 1998 Jeffrey A Law (law@cygnus.com)
* netbsd.h: Fix typo.
Mon Aug 3 00:06:42 1998 Robert Lipe <robertl@dgii.com>
* config.sub: Fix typo.
Sun Aug 2 22:39:08 1998 Hans-Peter Nilsson <hp@axis.se>
* invoke.texi (Environment Variables): Typo: Change "ascpects"
into "aspects".
(Running Protoize): Typo: Change "ther" into "other".
Sun Aug 2 00:42:50 1998 Jeffrey A Law (law@cygnus.com)
* i386/netbsd.h: Undo previous change to DWARF2_UNWIND_INFO.
* m68k/netbsd.h: Likewise.
* ns32k/netbsd.h: Likewise.
* sparc/netbsd.h: Likewise.
Sat Aug 1 17:59:30 1998 Richard Henderson <rth@cygnus.com>
* ginclude/va-alpha.h (va_list): Use a typedef, not a define.
* ginclude/va-clipper.h (va_list): Likewise.
Fri Jul 31 20:22:02 1998 Michael Meissner <meissner@cygnus.com>
* rs6000.c (rs6000_override_options): If big endian and -Os, use
load/store multiple instructions unless user overrides.
Fri Jul 31 17:08:59 1998 Jeffrey A Law (law@cygnus.com)
* ns32k/netbsd.h: Fix typo.
Fri Jul 31 10:23:55 1998 Doug Evans <devans@canuck.cygnus.com>
* m32r/m32r.h (ASM_OUTPUT_SOURCE_LINE): Always output line number
labels with .debugsym if no parallel insns.
Thu Jul 30 19:15:53 1998 Richard Henderson <rth@cygnus.com>
* alpha.md (fp cmp): Replicate patterns for ALPHA_TP_INSN.
(fcmov): Remove ALPHA_TP_INSN patterns -- fcmov doesn't trap.
Thu Jul 30 19:50:15 1998 David Edelsohn <edelsohn@mhpcc.edu>
* rs6000/x-aix43 (AR_FOR_TARGET_FLAGS): Delete.
(AR_FOR_TARGET): Define.
Thu Jul 30 12:29:12 1998 Mark Mitchell <mark@markmitchell.com>
* dyn-string.h: New file.
* dyn-string.c: Likewise.
* Makefile.in (OBJS): Add dyn-string.o.
(dwarf2out.o): Add dyn-string.h dependency.
(dyn-string.o): List dependencies.
* dwarf2out.c: Include dyn-string.h.
(ASM_NAME_TO_STRING): Use dyn_string_append, rather than strcpy.
(addr_const_to_string): Take a dyn_string_t, not a char* as a
prototype. Use dyn_string_append rather than strcat, throughout.
(addr_to_string): Use dyn_string_t.
Thu Jul 30 13:08:07 1998 Ken Raeburn <raeburn@cygnus.com>
Function entry/exit profiling instrumentation:
* expr.h (profile_function_entry_libfunc,
profile_function_exit_libfunc): Declare new variables.
* optabs.c: Define them here.
(init_optabs): Initialize them.
* tree.h (struct tree_decl): New flag
no_instrument_function_entry_exit.
(DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT): New accessor macro.
* c-decl.c (duplicate_decls): Merge it.
* c-common.c (enum attrs): New value A_NO_INSTRUMENT_FUNCTION.
(init_attributes): Use it for "no_instrument_function".
(decl_attributes): Handle it, for functions that have not yet been
compiled. Set decl flag.
* flags.h (flag_instrument_function_entry_exit): Declare new
variable.
* toplev.c (flag_instrument_function_entry_exit): Define it here.
(f_options): New option "instrument-functions".
* function.h (struct function): New field instrument_entry_exit.
* function.c (current_function_instrument_entry_exit): New
variable.
(push_function_context_to, pop_function_context_from): Save and
restore.
(expand_function_start): Set current_ variable, maybe emit return
label and entry profile call.
(expand_function_end): Maybe emit exit profile call.
Thu Jul 30 00:58:34 1998 Jeffrey A Law (law@cygnus.com)
* i386.md (movqi): When optimizing a load of (const_int 1) into a
NON_QI_REG_P, pretend the register is SImode.
Wed Jul 29 23:49:23 1998 Todd Vierling <tv@netbsd.org>
* configure.in: Use xm-netbsd.h as the NetBSD xm file (not xm-siglist).
Accept arm32 as arm, m68k4k as m68k, mipsle as mips-dec, and any
manufacturer id for ns32k.
* configure: Regenerated.
* config/netbsd.h: When using ASM_WEAKEN_LABEL, make it global too.
* config/t-netbsd: Don't compile libgcc1-test as the fns are in libc.
* config/i386/netbsd.h: Undefine DWARF2_UNWIND_INFO, not define as 0.
* config/m68k/netbsd.h: Same.
* config/ns32k/netbsd.h: Same.
* config/sparc/netbsd.h: Same.
Wed Jul 29 22:39:21 1998 Jeffrey A Law (law@cygnus.com)
* unroll.c (unroll_loop): Do not abort for an UNROLL_MODULO
or UNROLL_COMPLETELY loop that starts with a jump to its
exit code.
Wed Jul 29 22:18:14 1998 David Edelsohn <edelsohn@mhpcc.edu>
* rs6000/rs6000.md (absdi2 define_split): Swap operands of MINUS.
* rs6000/rs6000.c (mask64_operand): Use HOST_BITS_PER_WIDE_INT.
(print_operand, case 'B'): Don't fall through.
(print_operand, case 'S'): Correct mask begin/end computation.
Use HOST_BITS_PER_WIDE_INT.
* rs6000/rs6000.h (CPP_PREDEFINES): Define _LONG_LONG.
(CONDITIONAL_REGISTER_USAGE): GPR13 fixed if TARGET_64BIT.
* rs6000/aix41.h (CPP_PREDEFINES): Same.
* rs6000/aix43.h (CPP_PREDEFINES): Same.
Wed Jul 29 11:47:10 1998 Nick Clifton <nickc@cygnus.com>
* config/arm/thumb.md (extendqisi2_insn): Remove earlyclobber
constraint from second alternative.
Tue Jul 28 23:29:04 1998 Jason Merrill <jason@yorick.cygnus.com>
* configure.in: Fix --without/--disable cases for local-prefix,
gxx-include-dir and checking.
Tue Jul 28 22:01:23 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* configure.in (enable_haifa): Set by default for sparc64 too.
configure: Rebuilt.
Tue Jul 28 23:29:04 1998 Jason Merrill <jason@yorick.cygnus.com>
* i386/cygwin32.h (VALID_MACHINE_TYPE_ATTRIBUTE): New macro.
* i386/winnt.c (associated_type): New fn.
(i386_pe_valid_type_attribute_p): New fn.
(i386_pe_check_vtable_importexport): Remove.
(i386_pe_dllexport_p): Use associated_type.
(i386_pe_dllimport_p): Likewise.
From Antonio M. O. Neto <anmendes@cruzeironet.com.br>:
* i386.c (i386_valid_type_attribute_p): Also accept
attributes for METHOD_TYPEs.
Tue Jul 28 23:17:39 1998 Peter Gerwinski <peter@gerwinski.de>
* tree.c (build_range_type): Copy TYPE_SIZE_UNIT.
Tue Jul 28 22:31:12 1998 Craig Burley <burley@gnu.org>
* gcc.c: Fix commentary describing %g, %u, %U, and %O.
1998-07-29 00:06:42 +02:00
* gcc.c (do_spec_1): Fix handling of %g%O and %U%O to prevent
them from generating a new base name for each occurence of
a specific suffix.
1998-07-28 Vladimir N. Makarov <vmakarov@cygnus.com>
* cse.c (cse_insn): Enable subsitution inside libcall only for REG,
SUBREG, MEM.
* rtlanal.c (replace_rtx): Prohibit replaces in CONST_DOUBLE.
* cplus-dem.c (type_kind_t): New type.
(demangle_template_value_parm): Add type_kind_t parameter. Rely
on this paramter, rather than demangling the type again.
(demangle_integral_value): Pass tk_integral.
(demangle_template_: Pass the value returned from do_type.
(do_type): Return a type_kind_t. Pass tk_integral to
demangle_template_value_parm for array bounds.
(demangle_fund_type): Likewise.
Mon Jul 27 00:54:41 1998 Jason Merrill <jason@yorick.cygnus.com>
* tree.c (simple_cst_equal, case CONSTRUCTOR): OK if the elts are
identical.
Mon Jul 27 22:18:36 1998 Jeffrey A Law (law@cygnus.com)
* pa.c (move_operand): Accept CONSTANT_P_RTX.
Mon Jul 27 17:18:52 1998 Dave Brolley <brolley@cygnus.com>
* stor-layout.c (layout_type): Handle arrays of bits, for Chill.
* expr.c (get_inner_reference): Handle zero-based, unsigned, array
index conversion.
Mon Jul 27 14:51:33 1998 Jeffrey A Law (law@cygnus.com)
* mn10300.h (DEBUGGER_AUTO_OFFSET): Define.
(DEBUGGER_ARG_OFFSET): Likewise.
* mn10300.md (movsf): Remove last change. Not needed.
Mon Jul 27 14:22:36 1998 Dave Brolley <brolley@cygnus.com>
* c-lex.c (yylex): Fix boundary conditions in character literal and
string literal loops.
Mon Jul 27 11:43:54 1998 Stan Cox <scox@cygnus.com>
* longlong.h (count_leading_zeros): Sparclite scan instruction was
being invoked incorrectly.
* i386.c (ix86_prologue): Added SUBTARGET_PROLOGUE invocation.
* i386/cygwin32.h (STARTFILE_SPEC, LIB_SPEC, SUBTARGET_PROLOGUE):
Add -pg support.
* i386/win32.h: New file. Hybrid mingw32.h/cygwin32.h configuration.
* configure.in: Added i[34567]86-*-win32
* config.sub: Ditto.
* configure: Rebuilt.
Sun Jul 26 01:11:12 1998 H.J. Lu (hjl@gnu.org)
* i386.h (CONST_DOUBLE_OK_FOR_LETTER_P): Return 0 when eliminating
the frame pointer and compiling PIC code and reload has not completed.
* i386.c (output_to_reg): Add code to emulate non-popping DImode
case.
Sun Jul 26 01:01:32 1998 Jeffrey A Law (law@cygnus.com)
* regmove.c (regmove_optimize): Fix typo initializing regmove_bb_head.
Sat Jul 25 23:29:23 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* Makefile.in (install-info): Only try to update the info
directory file if it exists in the first place.
Fri Jul 24 18:58:37 1998 Klaus Espenlaub <kespenla@student.informatik.uni-ulm.de>
* rs6000.h (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR): Delete.
Fri Jul 24 14:20:26 1998 Jeffrey A Law (law@cygnus.com)
* mn10300.md (movqi, movhi, movsi, movsf): Correctly handle
CONST_DOUBLE source.
Fri Jul 24 11:17:04 1998 Nick Clifton <nickc@cygnus.com>
* config/arm/thumb.c (thumb_print_operand): Decode %_ in asm
strings as the insertion of USER_LABEL_PREFIX.
* config/arm/thumb.h (PRINT_OPERAND_PUNCT_VALID_P): Accept _ as a
valid code.
* config/arm/thumb.md: Use %_ as a prefix to gcc library function
calls.
Thu Jul 23 18:53:20 1998 Jim Wilson <wilson@cygnus.com>
* dbxout.c (dbxout_range_type): Only call dbxout_type_index for
already defined type.
Thu Jul 23 13:49:41 1998 Jeffrey A Law (law@cygnus.com)
* expr.c (check_max_integer_computation_mode): Allow conversions
of constant integers to MAX_INTEGER_COMPUTATION_MODE.
(expand_expr): Likewise.
Thu Jul 23 11:12:06 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
* expr.c (expand_expr): Expand RETURN_EXPR.
Thu Jul 23 11:00:29 1998 Jim Wilson <wilson@cygnus.com>
* dwarf2out.c (dwarf2out_finish): Call stripattributes on TEXT_SECTION.
Wed Jul 22 19:10:00 1998 Catherine Moore <clm@cygnus.com>
* dwarf2out.c (output_aranges): Call stripattributes
for TEXT_SECTION references.
(output_line_info): Likewise.
Wed Jul 22 14:08:54 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* profile.c (branch_prob): Call allocate_reg_info after outputting
profile rtl in instrument_arcs.
Wed Jul 22 12:47:49 1998 Jim Wilson <wilson@cygnus.com>
* fixinc.irix (math.h): Install wrapper instead of copying.
Wed Jul 22 12:37:14 1998 Alexandre Petit-Bianco <apbianco@cygnus.com>
* tree.def (EXPR_WITH_FILE_LOCATION): Defined as an 'e' expression
so WFL are expanded correctly when contained in a COMPOUND_EXPR.
* tree.h (EXPR_WFL_EMIT_LINE_NOTE): Change macro not to use
lang_flag_0. Added documentation in the flag table.
Tue Jul 21 23:28:35 1998 Klaus Kaempf <kkaempf@rmi.de>
* cccp.c (do_include): Fix vax c style include handling.
Tue Jul 21 13:28:19 1998 Jason Merrill <jason@yorick.cygnus.com>
* cplus-dem.c (do_type): Use demangle_template_value_parm for arrays.
Sun Jul 12 01:27:05 1998 Jason Merrill <jason@yorick.cygnus.com>
* fold-const.c (non_lvalue): Don't deal with null pointer
constants here.
(fold, case COMPOUND_EXPR): Wrap a constant 0 in a NOP_EXPR.
Tue Jul 21 15:49:31 1998 David Edelsohn <edelsohn@mhpcc.edu>
* rs6000.h (PREDICATE_CODES): Add CONSTANT_P_RTX.
* rs6000.md (movsi, movdi): Add CONSTANT_P_RTX.
* rs6000.c (short_cint_operand): Add CONSTANT_P_RTX.
(u_short_cint_operand): Same.
(reg_or_cint_operand): Same.
(logical_operand): Same.
(input_operand): Same.
(reg_or_short_operand): Use u_short_cint_operand.
Tue Jul 21 08:56:42 1998 Richard Henderson <rth@cygnus.com>
* alpha.md (fix_truncdfsi2, fix_truncsfsi2): Remove the define_expands,
but keep the insns and splits. Adjust so when the ultimate destination
is memory, use cvtql.
Tue Jul 21 08:55:09 1998 Richard Henderson <rth@cygnus.com>
* flow.c (regno_uninitialized): Fixed regs are never uninitialized.
Tue Jul 21 00:31:01 1998 Jeffrey A Law (law@cygnus.com)
* gcc.c (do_spec): Call "error" not "warning".
* configure.in: Fix minor problems with gas feature detection code.
* configure: Rebuilt.
* gcc.c (do_spec): Issue a warning for '%[]' usage.
* Undo this change.
* gcc.c: Delete %[spec] support.
(do_spec_1, case '('): Likewise.
(do_spec_1, case '['): Call error.
Mon Jul 20 22:34:17 1998 Richard Henderson <rth@cygnus.com>
* alpha.h (CPP_SPEC): Tidy. Hook to cpp_cpu and cpp_subtarget.
(CPP_SUBTARGET_SPEC): Default to empty string.
(CPP_AM_*, CPP_IM_*, CPP_CPU_*, CPP_CPU_SPEC): New.
(EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): New.
* alpha/elf.h (LD_SPEC): Use %(elf_dynamic_linker).
* alpha/linux-elf.h (SUBTARGET_EXTRA_SPECS): New.
(LIB_SPEC): Tidy.
* alpha/linux.h (CPP_PREDEFINES): Tidy.
* alpha/netbsd-elf.h (SUBTARGET_EXTRA_SPECS): New.
* alpha/netbsd.h (CPP_PREDEFINES): Tidy.
* alpha/osf.h (CPP_PREDEFINES): Remove bits subsumed by CPP_CPU_SPEC.
* alpha/win-nt.h (CPP_PREDEFINES): Likewise.
* alpha/vsf.h (CPP_PREDEFINES): Likewise.
(CPP_SUBTARGET_SPEC): New. Do this instead of overriding CPP_SPEC.
* alpha/vxworks.h: Likewise.
Mon Jul 20 22:51:57 1998 Ken Raeburn <raeburn@cygnus.com>
* mips.md (reload_outsi): Added missing REGNO call.
(smulsi3_highpart, umulsi3_highpart): Provide prototype for
function pointer.
(mul_acc_di, mul_acc_64bit_di): Don't use match_op_dup, use
another match_operator and compare the codes.
* mips.h (MASK_DEBUG_E, MASK_DEBUG_I): Set to zero.
* MIPS multiply pattern fixes:
* mips.h (enum reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS):
Add union classes for HI, LO, or HILO plus general registers.
(GENERATE_MADD): Deleted.
* mips.md (mulsi3_mult3): Don't disparage output-LO alternative.
Add TARGET_MAD to condition.
(mulsi3): Test HAVE_mulsi3_mult3, not specific flags.
(mul_acc_si): Expand GENERATE_MADD here; it's the only use. Use
"*d" for accumulator, to give preference to LO initially but not
during reload.
Mon Jul 20 16:16:38 1998 Dave Brolley <brolley@cygnus.com>
* configure.in (enable_c_mbchar): New configure option.
(extra_cpp_objs): Always available now.
* cexp.y (mbchar.h): #include it.
(yylex): Handle Multibyte characters in character literals.
* cccp.c (mbchar.h): #include it.
(main): Set character set based on LANG environment variable.
(rescan): Handle multibyte characters in comments.
(skip_if_group): See above.
(validate_else): See above.
(skip_to_end_of_comment): See above.
(macarg1): See above.
(discard_comments): See above.
(rescan): Handle multibyte characters in string and character literals.
(collect_expansion): See above.
(skip_quoted_string): See above.
(macroexpand): See above.
(macarg1): See above.
(discard_comments): See above.
(change_newlines): See above.
* c-lex.c (mbchar.h): #include it.
(GET_ENVIRONMENT): New macro.
(init_lex): Set character set based on LANG environment variable.
(yylex): Handle multibyte characters in character literals.
(yylex): Handle multibyte characters in string literals.
* Makefile.in (mbchar.o): New target.
(cccp$(exeext)): @extra_cpp_objs@ is always available.
(cppmain$(exeext)): @extra_cpp_objs@ is always available.
* mbchar.[ch]: New files for multibyte character handling.
Mon Jul 20 01:11:11 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* jump.c (jump_optimize): When simplifying noop moves and
PUSH_ROUNDING, fix thinko so we use same criterion for identifying
the PUSHes to rewrite in second loop as we did in the first.
Sun Jul 19 08:23:53 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* cplus-dem.c (demangle_nested_args): Make function definition
static to match the prototype.
Fri Jul 17 14:58:44 1998 Richard Henderson <rth@cygnus.com>
* alloca.c: Respect USE_C_ALLOCA.
* gencheck.c (xmalloc): Ignore __GNUC__ for definition.
* gengenrtl.c (xmalloc): Likewise.
Fri Jul 17 14:18:14 1998 Richard Henderson <rth@cygnus.com>
* loop.h (struct induction): Add no_const_addval.
* loop.c (the_movables, reg_address_cost): New variables.
(init_loop): Init reg_address_cost.
(loop_optimize): Call end_alias_analysis.
(scan_loop): Init the_movables.
(record_giv): Init induction->no_const_addval.
(basic_induction_var) [PLUS]: Use rtx_equal_p instead of ==.
[REG]: Rearrange loop search test to catch more cases.
(general_induction_var): Return success not benefit; take an extra
argument for that. Change all callers.
(simplify_giv_expr) [PLUS]: Always combine invariants. Use sge_plus.
[MULT]: Use rtx_equal_p instead of ==. Combine simple invariants.
[default]: Search the_movables for additional combinations.
(sge_plus_constant, sge_plus): New functions.
(express_from_1): New function.
(express_from): Always define. Rewrite using express_from_1.
(combine_givs_p): Handle more cases. Ignore address cost.
(cmp_combine_givs_stats): New function.
(combine_givs_used_once, combine_givs_benefit_from): New functions.
(combine_givs): Rewrite to do best-fit combination.
* fold-const.c (operand_equal_p): Handle RTL_EXPR.
(fold): Do a complete (A*C)+(B*C) association check.
Fri Jul 17 11:21:55 1998 Jim Wilson <wilson@cygnus.com>
* function.c (fixup_var_refs_insns): Handle CLOBBER of a CONCAT.
Fri Jul 17 11:48:55 1998 Jeffrey A Law (law@cygnus.com)
* mn10300.c (MODES_TIEABLE_P): Fix typo.
Fri Jul 17 03:26:12 1998 Rihcard Earnshaw (rearnsha@arm.com)
* tree.c (valid_machine_attribute): Only create a new type variant if
there is a decl to use it.
Thu Jul 16 14:48:04 1998 Nick Clifton <nickc@cygnus.com>
* gcc.c (do_spec_1): Cope with %g/%u/%U options which do not have
a suffix.
Fri Jul 17 03:24:40 1998 Hans-Peter Nilsson <hp@axis.se>
* extend.texi (Explicit Reg Vars): Typo: change "may deleted" into "may
be deleted"
Thu Jul 16 14:48:47 1998 Jeffrey A Law (law@cygnus.com)
* mn10300.c (count_tst_insns): New arg oreg_countp. Callers changed.
Simplify tests for clearing an address register.
(expand_prologue): Corresponding changes.
* mn10300.md (movXX patterns): Make sure the destination is an
ADDRESS_REG when substituting "zero_areg" for (const_int 0).
(logical patterns): Split into expanders + patterns
(zero and sign extension patterns): Similarly.
(shift patterns): Similarly.
Thu Jul 16 01:17:44 1998 Richard Henderson <rth@cygnus.com>
* loop.c (emit_iv_add_mult): Scan the entire insn list generated
for the sequence, recording base values.
Wed Jul 15 10:49:55 1998 Richard Henderson <rth@cygnus.com>
* i386.h (CPP_CPU_SPEC): Remove -Asystem(unix).
Tue Jul 14 14:15:30 1998 Nick Clifton <nickc@cygnus.com>
* gcc.c: Remove ANSI-C ism from --help code.
* toplev.c: Support --help with USE_CPPLIB.
Tue Jul 14 14:46:08 1998 Jeffrey A Law (law@cygnus.com)
* configure.in: Rework gas feature code to work with symlink based
source trees.
* extend.texi: Clarify some issues related to local variables
assigned to explicit registers.
* mn10300.md (mulsi): Turn into expander + pattern.
* mn10300.md (movsi, movsf, movdi, movdf): Remove "x" from I -> a
alternative.
Tue Jul 14 07:41:59 1998 Richard Earnshaw (rearnsha@arm.com)
* arm/tcoff.h (USER_LABEL_PREFIX): Make it empty to match coff.h.
Tue Jul 14 03:02:44 1998 Jeffrey A Law (law@cygnus.com)
* version.c: Bump again to distinguish mainline tree from the
egcs-1.1 branch.
See ChangeLog.0 for earlier changes.
Local Variables:
add-log-time-format: current-time-string
End: