Stephane Carrez [Sat, 16 Mar 2002 13:03:59 +0000 (14:03 +0100)]
m68hc11.c (m68hc11_override_options): Don't use soft registers by default for 68HC12.
* config/m68hc11/m68hc11.c (m68hc11_override_options): Don't use
soft registers by default for 68HC12.
(m68hc11_conditional_register_usage): Don't use Z register for 68HC12
when compiling with -fomit-frame-pointer.
(expand_prologue): Use push/pop to allocate 4-bytes of locals on 68HC12.
(expand_epilogue): Likewise.
(m68hc11_gen_rotate): Use exg when rotating by 8.
Stephane Carrez [Sat, 16 Mar 2002 12:52:20 +0000 (13:52 +0100)]
m68hc11-protos.h (ix_reg): Declare.
* config/m68hc11/m68hc11-protos.h (ix_reg): Declare.
* config/m68hc11/m68hc11.md ("addsi3"): Use general_operand for sources.
(splits): Remove unused add splits.
("*addhi3_68hc12"): Tune constraints.
("addhi_sp"): Try to use X instead of Y in all cases and if the
constant fits in 8-bits and D is dead use abx/aby instructions.
("*addhi3"): Remove extern declaration of ix_reg.
("*subsi3"): Optimize and provide new split.
("subhi3"): Cleanup.
("*subhi3_sp"): Avoid saving X if we know it is dead.
(arith splits): For 68hc12 save the address register on the stack
and do the arithmetic operation with a pop.
Chris Demetriou [Sat, 16 Mar 2002 04:16:15 +0000 (04:16 +0000)]
mips.h (SUBTARGET_CPP_SIZE_SPEC): Provide an MEABI case for each definition of SUBTARGET_CPP_SIZE_SPEC...
2002-03-15 Chris Demetriou <cgd@broadcom.com>
* config/mips/mips.h (SUBTARGET_CPP_SIZE_SPEC): Provide an
MEABI case for each definition of SUBTARGET_CPP_SIZE_SPEC,
and define it so that regardless of target CPU size,
__SIZE_TYPE__ and __PTRDIFF_TYPE__ are defined in terms
of "int" rather than "long."
Alexandre Oliva [Fri, 15 Mar 2002 22:46:58 +0000 (22:46 +0000)]
Makefile.am (jv_convert_LDADD): Don't list libraries that are already implicitly brought in from libgcj.la.
* Makefile.am (jv_convert_LDADD): Don't list libraries that are
already implicitly brought in from libgcj.la.
(gij_LDADD, rmic_LDADD, rmiregistry_LDADD): Likewise.
* Makefile.in: Rebuilt.
Stephane Carrez [Fri, 15 Mar 2002 22:33:30 +0000 (23:33 +0100)]
m68hc11.md ("tstqi_1"): Try to use ldab instead of tst.
* config/m68hc11/m68hc11.md ("tstqi_1"): Try to use ldab instead of tst.
("tstqi" split): Avoid using memory for tstqi on address register.
(splits): Remove constraints.
("cmphi_1_hc12"): New from "cmphi_1" and tuned for 68HC12.
("cmpdf", "cmpsf"): Remove since not used.
("*tbeq", "*tbne", "*tbeq8", "*tbne8"): Also look in cc_status.value2.
(peephole2): New peepholes to optimize tstqi and pre inc/dec addressing.
Stephane Carrez [Fri, 15 Mar 2002 22:04:49 +0000 (23:04 +0100)]
m68hc11.c (m68hc11_symbolic_p): New function.
* config/m68hc11/m68hc11.c (m68hc11_symbolic_p): New function.
(m68hc11_indirect_p): New function.
(m68hc11_override_options): Must set MASK_NO_DIRECT_MODE for 68HC12.
(m68hc11_gen_highpart): Use TARGET_NO_DIRECT_MODE instead of
TARGET_M6812.
(asm_print_register): Likewise.
* config/m68hc11/m68hc11-protos.h (m68hc11_symbolic_p): Declare.
(m68hc11_indirect_p): Declare.
* config/m68hc11/m68hc11.h (EXTRA_CONSTRAINT): New constraint 'R', 'Q'.
(TARGET_NO_DIRECT_MODE, TARGET_RELAX): New.
(TARGET_SWITCHES): New option -mrelax.
* config/m68hc11/m68hc11.md ("andsi3"): Allow soft register for
destination.
("iorsi3", "xorsi3"): Likewise.
("andhi3", "andqi3", "iorhi3", "iorqi3"): Use a define_expand.
("*andhi3_mem"): New to handle destination in memory with bclr
and a scratch register.
("*andqi3_mem", "*iorhi3_mem", "*iorqi3_mem"): Likewise.
("*andhi3_const"): New when operand2 is constant.
("*andqi3_const", "*iorhi3_const", "*iorqi3_const"): Likewise.
("*andhi3_gen"): Cleanup of the old "andhi3".
("*andqi3_gen", "*iorhi3_gen", "*iorqi3_gen"): Likewise.
("xorqi3"): Update constraints.
Stephane Carrez [Fri, 15 Mar 2002 21:54:58 +0000 (22:54 +0100)]
m68hc11.c (m68hc11_small_indexed_indirect_p): Look for reg_equiv_memory_loc when the operand is a register that does not get...
* config/m68hc11/m68hc11.c (m68hc11_small_indexed_indirect_p): Look
for reg_equiv_memory_loc when the operand is a register that does
not get a hard register (stack location).
(tst_operand): After reload, accept all memory operand.
(symbolic_memory_operand): Fix detection of symbolic references.
* config/m68hc11/m68hc11.h (VALID_CONSTANT_OFFSET_P): For 68HC12
accept symbols and any constant.
Stephane Carrez [Fri, 15 Mar 2002 21:44:49 +0000 (22:44 +0100)]
m68hc11.c (emit_move_after_reload): Add a REG_INC note on the insn that sets the soft frame register.
* config/m68hc11/m68hc11.c (emit_move_after_reload): Add a REG_INC
note on the insn that sets the soft frame register.
(must_parenthesize): ix and iy are also reserved names.
(print_operand_address): One more place where parenthesis are required
to avoid confusion with register names.
(m68hc11_gen_movhi): Allow push of stack pointer.
(m68hc11_check_z_replacement): Fix handling of parallel with a
clobber.
(m68hc11_z_replacement): Must update the REG_INC notes to tell what
the replacement register is.
* config/m68hc11/m68hc11.h (REG_CLASS_CONTENTS): Switch Z_REGS
and D8_REGS classes.
(MODES_TIEABLE_P): All modes are tieable except QImode.
Stephane Carrez [Fri, 15 Mar 2002 21:27:01 +0000 (22:27 +0100)]
m68hc11.c (m6812_cost): Make cost of add higher than a shift to avoid adding a register with itself.
* config/m68hc11/m68hc11.c (m6812_cost): Make cost of add higher
than a shift to avoid adding a register with itself.
(m68hc11_memory_move_cost): Take into account NO_REGS.
(m68hc11_register_move_cost): Update and use memory move cost
for soft registers.
(m68hc11_address_cost): Make cost of valid offset not 0 so that
it gives more opportunities to cse to optimize.
* config/m68hc11/m68hc11.h (REGISTER_MOVE_COST): Pass the mode.
* config/m68hc11/m68hc11-protos.h (m68hc11_register_move_cost): Update.
Jakub Jelinek [Fri, 15 Mar 2002 18:51:36 +0000 (19:51 +0100)]
re PR bootstrap/4128 (Bootstrap on solaris2.7 fails compiling libf2c/libF77/l_gt.c)
PR bootstrap/4128
* config/sparc/sparc.c (gen_v9_scc): Move early clobber test
before movrXX only, use reg_overlap_mentioned_p.
Only special case NE if just one insn can be generated.
Jason Merrill [Fri, 15 Mar 2002 18:44:14 +0000 (13:44 -0500)]
varasm.c (assemble_variable): Call resolve_unique_section before checking DECL_SECTION_NAME.
* varasm.c (assemble_variable): Call resolve_unique_section before
checking DECL_SECTION_NAME. Use zeros for a decl with DECL_INITIAL
of error_mark_node.
Jason Merrill [Fri, 15 Mar 2002 18:31:55 +0000 (13:31 -0500)]
re PR c++/5857 (C++ duplicate_decls shouldn't use common_type)
PR c++/5857
* decl.c (duplicate_decls): Use merge_types instead of common_type.
* typeck.c (common_type): Just hand off to
type_after_usual_arithmetic_conversions and
composite_pointer_type.
(merge_types): New fn.
(commonparms): Use it instead of common_type.
(type_after_usual_arithmetic_conversions): Also handle COMPLEX_TYPE.
(composite_pointer_type): Also handle attributes.
* cp-tree.h: Declare merge_types.
Paolo Carlini [Fri, 15 Mar 2002 16:05:56 +0000 (17:05 +0100)]
2002-03-15 Paolo Carlini <pcarlini@unitus.it>
* testsuite/22_locale/collate_members_char.cc
(test01): compare the result of collate::compare with
that of collate::transform + string::compare, not with
that of collate::transform + collate::compare.
(test01): values returned by collate::compare are
normalized, therefore test against +-1.
* testsuite/22_locale/collate_members_wchar_t.cc: Ditto.
re PR target/5312 ([IA64] ICE in itanium_reorder at config/ia64/ia64.c:5917)
PR target/5312
* config/ia64/ia64.c: Include tm_p.h last.
(gen_nop_type): Remove duplicate definition.
(cycle_end_fill_slots): Set sched_data for second L slot.
(maybe_rotate): Call cycle_end_fill_slots to fill in nop slots.
(nop_cycles_until): Fix typos.
* cpphash.h (struct lexer_state): Remove line_extension member.
* cpplib.c (dequote_string, do_linemarker): New functions.
(linemarker_dir): New data object.
(DIRECTIVE_TABLE): No longer need to interpret #line in
preprocessed source. Delete obsolete comment about return
values of handlers.
(end_directive, directive_diagnostics, _cpp_handle_directive):
Don't muck with line_extension.
(directive_diagnostics): No need to issue warnings for
linemarkers here.
(_cpp_handle_directive): Issue warnings for linemarkers here,
when appropriate. Dispatch linemarkers to do_linemarker, not
do_line.
(do_line): Code to handle linemarkers split out to do_linemarker.
Convert escape sequences in filename argument, both places.
* cppmacro.c (quote_string): Rename cpp_quote_string and
export. All callers changed.
* cpplib.h (cpp_quote_string): Prototype.
* cppmain.c (print_line): Call cpp_quote_string on to_file
before printing it.
* doc/cpp.texi: Document that escapes are now interpreted in
#line and in linemarkers, and that non-printing characters are
converted to octal escapes when linemarkers are generated.
* cpphash.h (struct lexer_state): Remove line_extension member.
* cpplib.c (dequote_string, do_linemarker): New functions.
(linemarker_dir): New data object.
(DIRECTIVE_TABLE): No longer need to interpret #line in
preprocessed source. Delete obsolete comment about return
values of handlers.
(end_directive, directive_diagnostics, _cpp_handle_directive):
Don't muck with line_extension.
(directive_diagnostics): No need to issue warnings for
linemarkers here.
(_cpp_handle_directive): Issue warnings for linemarkers here,
when appropriate. Dispatch linemarkers to do_linemarker, not
do_line.
(do_line): Code to handle linemarkers split out to do_linemarker.
Convert escape sequences in filename argument, both places.
* cppmacro.c (quote_string): Rename cpp_quote_string and
export. All callers changed.
* cpplib.h (cpp_quote_string): Prototype.
* cppmain.c (print_line): Call cpp_quote_string on to_file
before printing it.
* doc/cpp.texi: Document that escapes are now interpreted in
#line and in linemarkers, and that non-printing characters are
converted to octal escapes when linemarkers are generated.
* config/mips/mips.h (FP_INC, UNITS_PER_FPVALUE): New macros.
* config/mips/mips.c (compute_frame_size): Retrofit them here.
(save_restore_insns, mips_expand_epilogue): And here.
(build_mips16_call_stub): And here.
(mips_function_value): Use the new macros to decide whether a single
or complex float can be returned in floating-point registers. Return
a parallel rtx in the complex case.
Jan Hubicka [Thu, 14 Mar 2002 10:10:13 +0000 (11:10 +0100)]
toplev.c (rest_of_compilation): Add CLEANUP_UPDATE_LIFE to cfg_cleanup call after liveness analysis.
* toplev.c (rest_of_compilation): Add CLEANUP_UPDATE_LIFE to cfg_cleanup
call after liveness analysis.
* recog.c (split_insn): Use delete_insn_and_edges.
* cfgrtl.c (verify_flow_info): Be permisive about non-any_condjump
instructions to have branch prediction notes.
* ia64reorg.c (ia64_reorg): Do not rebuild CFG.
Jason Merrill [Wed, 13 Mar 2002 16:03:25 +0000 (11:03 -0500)]
varasm.c (globalize_decl): New fn.
* varasm.c (globalize_decl): New fn.
(assemble_start_function): Use it.
(asm_emit_uninitialized): Use it.
(assemble_alias): Use it.
(assemble_variable): Use it.
Jason Merrill [Wed, 13 Mar 2002 14:20:17 +0000 (09:20 -0500)]
varasm.c (globalize_decl): New fn.
* varasm.c (globalize_decl): New fn.
(assemble_start_function): Use it.
(asm_emit_uninitialized): Use it.
(assemble_alias): Use it.
(assemble_variable): Use it.
* config/arm/arm.h config/i386/i386.h, config/m68k/m68k.h,
config/sparc/sparc.h (CONDITIONAL_REGISTER_USAGE): Set
PIC_OFFSET_TABLE_REGNUM based on INVALID_REGNUM not flag_pic.
* config/arc/arc.h (CONDITIONAL_REGISTER_USAGE): New.
* config/arm/arm.c (arm_pic_register): Init to INVALID_REGNUM.
(arm_override_options): Set arm_pic_register if TARGET_APCS_STACK
also. Don't set it if not flag_pic.
* config/i386/i386.c (ix86_save_reg): Trust PIC_OFFSET_TABLE_REGNUM
to be INVALID_REGNUM when not used.