gcc/
* config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
(output_call, m68k_legitimize_call_address): Declare.
* config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
parenthesees. Add support for a 'W' constraint.
(LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
(PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
(m68k_symbolic_call, m68k_symbolic_jump): Declare.
* config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
variables.
(override_options): Initialize them. Do not set flag_no_function_cse
for TARGET_ID_SHARED_LIBRARY.
(m68k_output_pic_call): Delete.
(m68k_legitimize_call_address): New function.
(print_operand): Remove the %o prefix. Handle the %p prefix.
(output_call): New function.
(m68k_output_mi_thunk): Use m68k_symbolic_jump. Always load the
target address from the GOT if symbolic jumps are not allowed.
* config/m68k/m68k.md (call, general_operand): Do not set
SYMBOL_REF_FLAG. Use m68k_legitimize_call_address instead.
Merge separate flag_pic and !flag_pic define_insns into...
(*call, *call_value): ...these new patterns. Match the address
rather than the containing MEM and require it to be a call_operand.
Use output_call to generate the asm template.
* config/m68k/predicates.md (const_call_operand): New predicate.
(call_operand): Likewise.
Kazu Hirata [Thu, 18 Jan 2007 19:31:15 +0000 (19:31 +0000)]
200x-xx-xx Kazu Hirata <kazu@codesourcery.com> Richard Sandiford <richard@codesourcery.com>
gcc/
200x-xx-xx Kazu Hirata <kazu@codesourcery.com>
Richard Sandiford <richard@codesourcery.com>
* config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
(FP_REGNO_P): New macros.
(REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
(REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
(EH_RETURN_STACKADJ_RTX): Use A0_REG.
* config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
Co-Authored-By: Richard Sandiford <richard@codesourcery.com>
From-SVN: r120918
* config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
(m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
(m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
(m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
explicitly set MOTOROLA to 1.
* config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
gcc/
* config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
* config/flat.h: New file.
* crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
OBJECT_FORMAT_FLAT.
* config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
indirect references for -msep-data or -mid-shared-library.
Do not use PC-relative code addresses either.
* config/m68k/m68k.c (override_options): Restrict -fPIC error
to -mpcrel.
* config/m68k/uclinux.h (STARTFILE_SPEC): Define. Use Scrt1.o
for shared libraries and crt1.o for executables. Use crti.o and
crtbegin.o.
(ENDFILE_SPEC): Use crtend.o and crtn.o.
(LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
Do not add -elf2flt or -shared-lib-id options here.
(LINK_SPEC): Define. Pass -elf2flt if no -elf2flt option is given.
Pass -shared-lib-id if -mid-shared-library, taking the library
identifier from -mshared-library-id if given, otherwise
defaulting to 0.
(EH_FRAME_IN_DATA_SECTION): Do not undefine.
(INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
(TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
(DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
* config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
and crtend.o.
* config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
jump sequence for ISA A and ISA A+.
(PICJUMP): Likewise.
config.gcc (m68k-*-uclinux*): Base the port on the common and m68k GNU/Linux files rather than on the generic...
gcc/
* config.gcc (m68k-*-uclinux*): Base the port on the common
and m68k GNU/Linux files rather than on the generic ELF ones.
* config/m68k/uclinux.h (TARGET_VERSION): Override.
(TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
Kaz Kojima [Thu, 18 Jan 2007 17:04:21 +0000 (02:04 +0900)]
m32r-protos.h (m32r_expand_epilogue): Declare it.
* config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
* config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
(m32r_compute_frame_size): Use unsigned for regno.
(m32r_reload_lr): Use gen_frame_mem.
(pop): New.
(m32r_output_function_epilogue): Don't output the function epilogue textually here.
(m32r_expand_epilogue): New.
(direct_return): Return false if the function has the interrupt attribute.
(m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
* config/m32r/m32r.md (epilogue): New expander.
(return_lr, return_rte): New insns.
(return): Make it expander.
(return_normal): New expander.
Uros Bizjak [Thu, 18 Jan 2007 13:06:57 +0000 (14:06 +0100)]
reg-stack.c (subst_stack_regs_pat): Use generic code for instructions that operate on the top of stack.
* reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
operate on the top of stack.
[UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
register handling of instructions that output to the second
stack slot.
[UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
(move_for_stack_reg): Special-case check for dead destination
stack slot for constant load of 1.0 inside UNSPEC_TAN.
* config/i386/i386.md (UNSPEC_TAN): New constant.
(UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
(fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
to correctly model move of constant 1.0 to top stack slot.
(*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
(unnamed peephole2 pattern): Remove corresponding peephole2
pattern that optimizes tan insn and loading of constant 1.0.
(tanxf2): Use fptanxf4_i387.
(tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
patterns using X87MODEF12 mode macro. Use fptan_extend<mode>xf4_i387
and truncate result to requested mode. Use SSE_FLOAT_MODE_P to
disable patterns for SSE math.
(sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
(fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
testsuite/ChangeLog:
* gcc.target/i386/387-8.c: Update comment about optimizing
inherent load of 1.0 of fptan instruction.
Dirk Mueller [Thu, 18 Jan 2007 13:00:33 +0000 (13:00 +0000)]
· Richard Guenther <rguenther@suse.de>
2007-01-18 Dirk Mueller <dmueller@suse.de>
· Richard Guenther <rguenther@suse.de>
· PR diagnostic/8268
· * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
· * common.opt (Warray-bounds): Add new warning option.
· * c-opts.c (c_common_handle_option): Define -Warray-bounds
· if -Wall is given.
* Makefile.in: make tree-vrp.o depend on toplev.h
· * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
· is enabled.
· (check_array_refs, check_array_bounds, check_array_ref): New.
· * gcc.dg/Warray-bounds.c: New testcase.
* gcc.dg/Warray-bounds-2.c: New testcase.
* g++.dg/warn/Warray-bounds.C: New testcase.
* g++.dg/warn/Warray-bounds-2.C: New testcase.
PR libfortran/29649
* gfortran.h (gfc_option_t): Add flag_dump_core.
* lang.opt: Add -fdump-core option.
* invoke.texi: Document the new options.
* trans-decl.c (gfc_build_builtin_function_decls): Add new
options to the call to set_std.
* options.c (gfc_init_options, gfc_handle_option): Set the
new options.
Jack Howarth [Wed, 17 Jan 2007 19:48:52 +0000 (19:48 +0000)]
aclocal.m4: Regenerate to use multi.m4.
2007-01-17 Jack Howarth <howarth@bromo.med.uc.edu>
boehm-gc/
* aclocal.m4: Regenerate to use multi.m4.
* configure: Regenerate.
* Makefile.in: Regenerate.
zlib/
* Makefile.am: Add ACLOCAL_AMFLAGS to use multi.m4.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.
libffi/
* Makefile.am: Add ACLOCAL_AMFLAGS to use multi.m4.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.
libjava/
* configure.ac: Use multi.m4 from aclocal rather than custom
code. Use multi_basedir instead libgcj_basedir. Test for
/proc/self/exe when not cross-compiling.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.
libjava/classpath/
* configure.ac: Use multi.m4 from aclocal rather than
custom code. Use multi_basedir instead libgcj_basedir.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.
libjava/libltdl/
* Makefile.am: Add ACLOCAL_AMFLAGS to use multi.m4.
* configure.ac: Use multi.m4 from aclocal rather than
custom code.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.
Anatoly Sokolov [Wed, 17 Jan 2007 18:42:58 +0000 (21:42 +0300)]
avr.h (AVR_HAVE_LPMX): New macro.
* config/avr/avr.h (AVR_HAVE_LPMX): New macro.
(AVR_ENHANCED): Rename to ...
(AVR_HAVE_MUL): ... new.
(avr_enhanced_p): Rename to ...
(avr_have_mul_p): ... new.
(TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
* config/avr/avr.c (avr_enhanced_p): Rename to ...
(avr_have_mul_p): ... new.
(base_arch_s): Rename 'enhanced' to 'have_mul'.
(avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
'avr_enhanced_p' and 'enhanced'.
(ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
AVR_HAVE_MUL instead of AVR_ENHANCED.
* avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
(mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
*mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
instead of AVR_ENHANCED.
(*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
* libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
(__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
Paul Thomas [Wed, 17 Jan 2007 17:33:35 +0000 (17:33 +0000)]
re PR fortran/30476 ([Regression 4.2, 4.3] Via other module imported generic interface rejected)
2007-01-17 Paul Thomas <pault@gcc.gnu.org>
PR fortran/30476
* module.c (load_generic_interfaces): Make the marking of the
symbol as ambiguous conditional on the module names being
different.
(write_generic): Ensure that the generic interface has a
non-NULL module field.
2007-01-17 Paul Thomas <pault@gcc.gnu.org>
PR fortran/30476
* gfortran.dg/generic_12.f90: New test.
Jan Hubicka [Tue, 16 Jan 2007 23:42:06 +0000 (00:42 +0100)]
tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing the names...
* tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
the names, just unlink the chain so we don't crash on dangling pointers
to dead SSA names.
* cgraph.h (cgraph_decide_inlining_incrementally): Kill.
* tree-pass.h: Reorder to make IPA passes appear toegher.
(pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
* cgraphunit.c (cgraph_finalize_function): Do not compute inling
parameters, do not call early inliner.
* ipa-inline.c: Update comments. Include tree-flow.h
(cgraph_decide_inlining): Do not compute inlining parameters.
(cgraph_decide_inlining_incrementally): Return TODOs; assume to
be called with function context set up.
(pass_ipa_inline): Remove unreachable functions before pass.
(cgraph_early_inlining): Simplify assuming to be called from the
PM as local pass.
(pass_early_inline): New pass.
(cgraph_gate_ipa_early_inlining): New gate.
(pass_ipa_early_inline): Turn into simple wrapper.
(compute_inline_parameters): New function.
(gate_inline_passes): New gate.
(pass_inline_parameters): New pass.
(apply_inline): Move here from tree-optimize.c
(pass_apply_inline): New pass.
* ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
transforming.
* tree-inline.c (optimize_inline_calls): Return TODOs rather than
doing them by hand.
(tree_function_versioning): Do not allocate dummy struct function.
* tree-inline.h (optimize_inline_calls): Update prototype.
* tree-optimize.c (execute_fixup_cfg): Export.
(pass_fixup_cfg): Remove
(tree_rest_of_compilation): Do not apply inlines.
* tree-flow.h (execute_fixup_cfg): Declare.
* Makefile.in (gt-passes.c): New.
* passes.c: Include gt-passes.h
(init_optimization_passes): New passes.
(nnodes, order): New static vars.
(do_per_function_toporder): New function.
(execute_one_pass): Dump current pass here.
(execute_ipa_pass_list): Don't dump current pass here.
Keith Seitz [Tue, 16 Jan 2007 19:54:16 +0000 (19:54 +0000)]
natVMVirtualMachine.cc (DEFINE_CALLBACK): New macro.
* gnu/classpath/jdwp/natVMVirtualMachine.cc (DEFINE_CALLBACK):
New macro.
(ENABLE_EVENT): New macro.
(initialize): Define and enable JVMTI VM_INIT callback.
(jdwpVMInitCB): New function.
Janis Johnson [Tue, 16 Jan 2007 18:53:16 +0000 (18:53 +0000)]
dfp-bit.c (dfp_compare_op): Return separate value for NaN.
gcc/
* config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
(DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
gcc/testsuite/
* gcc.dg/dfp/compare-special.h: New file.
* gcc.dg/dfp/compare-special-32.c: New test.
* gcc.dg/dfp/compare-special-64.c: New test.
* gcc.dg/dfp/compare-special-128.c: New test.
Roger Sayle [Tue, 16 Jan 2007 18:15:19 +0000 (18:15 +0000)]
re PR fortran/30404 ([4.1 only] Wrong FORALL result)
2007-01-16 Roger Sayle <roger@eyesopen.com>
PR fortran/30404
* trans-stmt.c (forall_info): Remove pmask field.
(gfc_trans_forall_loop): Remove NVAR argument, instead assume that
NVAR covers all the interation variables in the current forall_info.
Add an extra OUTER parameter, which specified the loop header in
which to place mask index initializations.
(gfc_trans_nested_forall_loop): Remove NEST_FLAG argument.
Change the semantics of MASK_FLAG to only control the mask in the
innermost loop.
(compute_overall_iter_number): Optimize the trivial case of a
top-level loop having a constant number of iterations. Update
call to gfc_trans_nested_forall_loop. Calculate the number of
times the inner loop will be executed, not to size of the
iteration space.
(allocate_temp_for_forall_nest_1): Reuse SIZE as BYTESIZE when
sizeof(type) == 1. Tidy up.
(gfc_trans_assign_need_temp): Remove NEST_FLAG argument from calls
to gfc_trans_nested_forall_loop.
(gfc_trans_pointer_assign_need_temp): Likewise.
(gfc_trans_forall_1): Remove unused BYTESIZE, TMPVAR, SIZEVAR and
LENVAR local variables. Split mask allocation into a separate
hunk/pass from mask population. Use allocate_temp_for_forall_nest
to allocate the FORALL mask with the correct size. Update calls
to gfc_trans_nested_forall_loop.
(gfc_evaluate_where_mask): Update call to
gfc_trans_nested_forall_loop.
(gfc_trans_where_2): Likewise.
* gfortran.dg/forall_6.f90: New test case.
* gfortran.dg/dependency_8.f90: Update test to find "temp" array.
* gfortran.dg/dependency_13.f90: Likewise.
Co-Authored-By: Paul Thomas <pault@gcc.gnu.org> Co-Authored-By: Steven G. Kargl <kargl@gcc.gnu.org>
From-SVN: r120829
Eric Christopher [Tue, 16 Jan 2007 05:34:02 +0000 (05:34 +0000)]
ifcvt.c: Include vec.h, vecprim.h.
2007-01-15 Eric Christopher <echristo@apple.com>
* ifcvt.c: Include vec.h, vecprim.h.
(check_cond_move_block): New argument regs.
Reorganize. Add registers used to regs.
(cond_move_process_if_block): Use regs set above as
loop bounds.
Uros Bizjak [Mon, 15 Jan 2007 12:35:30 +0000 (13:35 +0100)]
i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
* config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
(fyl2x_extend<mode>xf3_i387): New insn pattern.
(log<mode>2): Rename from logsf2 and logdf2 and macroize insn
insn patterns using X87MODEF12 mode macro. Extend operand 1
to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
(log10<mode>2): Ditto.
(log2<mode>2): Ditto.
(log1p<mode>2): Ditto.
(logb<mode>2): Ditto.
(fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
(fyl2xp1_extend<mode>xf3_i387): New insn pattern.
(*fxtractxf3_i387): Rename from *fxtractxf3.
(fxtract_extend<mode>xf3_i387): New insn pattern.
(ilogbsi2): Use match_dup 3, not match_operand:XF 3.
* config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
and gen_fyl2xxf3_i387().
Zdenek Dvorak [Sun, 14 Jan 2007 20:07:42 +0000 (21:07 +0100)]
loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
* loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
* cfgloopmanip.c (fix_loop_placement): Made static. Use
get_loop_exit_edges. Changed return type to bool.
* cfgloop.h (fix_loop_placement): Declaration removed.
* configure.ac: Use ACX_PROG_LD_GNU_SYMBOLIC. Set
LIBGCJ_LD_SYMBOLIC_FUNCTIONS to $SYMBOLIC_LDFLAGS. Set
libgcj_ld_symbolic to $SYMBOLIC_LDFLAGS if it isn't set.
Substitute LIBGCJ_LD_SYMBOLIC_FUNCTIONS.
* configure: Regenerated.
* aclocal.m4: Likewise.
* gcj/Makefile.in: Likewise.
* include/Makefile.in: Likewise.
* testsuite/Makefile.in: Likewise.