Commit Graph

31923 Commits

Author SHA1 Message Date
Volker Reichelt 1916c916ca re PR c++/30852 (Trouble with __builtin_offsetof and volatile)
PR c++/30852
	* c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.

	* semantics.c (finish_offsetof): Handle COMPOUND_EXPR.

	* g++.dg/ext/offsetof1.C: Add cases with volatile.

From-SVN: r122686
2007-03-08 07:31:47 +00:00
Alexandre Oliva ab53bae286 c-decl.c (grokdeclarator): Disable warnings for anonymous bitfields.
gcc/ChangeLog:
* c-decl.c (grokdeclarator): Disable warnings for anonymous
bitfields.
* tree-sra.c (instantiate_element): Propagate disabled warnings
from the element itself to the created variable.
gcc/cp/ChangeLog:
* decl.c (grokdeclarator): Disable warnings for anonymous
bitfields.

From-SVN: r122684
2007-03-08 06:48:21 +00:00
Eric Botcazou 581f006c4a Fix date format.
From-SVN: r122670
2007-03-07 18:40:09 +00:00
Richard Henderson 7476f0866c re PR target/30848 (ICE with invalid constraint in asm statement)
PR target/30848
        * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
        silently fix up the stack in the case of a missing register.

From-SVN: r122669
2007-03-07 10:13:29 -08:00
Joseph Myers a566d05002 libunwind.S: Add .arch/.object_arch for armv4 builds.
gcc:
2007-03-07  Paul Brook  <paul@codesourcery.com>

	* config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.

gcc:
2007-03-07  Joseph Myers  <joseph@codesourcery.com>

	* config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
	New.
	(phase1_vrs): Use them.
	(DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
	(__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
	__gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
	(restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
	__gnu_Unwind_Restore_WMMXC if required.
	(_Unwind_VRS_Pop): Implement iWMMXt support.
	* config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
	gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
	gnu_Unwind_Save_WMMXC): Define.

gcc/testsuite:
2007-03-07  Joseph Myers  <joseph@codesourcery.com>

	* g++.dg/eh/arm-iwmmxt-unwind.C: New test.

From-SVN: r122658
2007-03-07 13:04:15 +00:00
Richard Sandiford ef67275542 vxworks.h (vxworks_override_options): Declare.
gcc/
	* config/vxworks.h (vxworks_override_options): Declare.
	(VXWORKS_OVERRIDE_OPTIONS): Use it.
	* config/vxworks.c: Include target.h and toplev.h.
	(vxworks_override_options): New function.
	* config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.

From-SVN: r122657
2007-03-07 11:52:52 +00:00
Andreas Krebbel 690e7b63cf s390.c (override_options): Don't emit an error when -mstack-size is used without providing -mstack-guard.
2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.c (override_options): Don't emit an error when
	-mstack-size is used without providing -mstack-guard.
	(s390_emit_prologue): Choose stack_guard value automatically if not
	provided via command line.
	* doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.

From-SVN: r122655
2007-03-07 09:11:12 +00:00
Richard Sandiford 170bdabaa2 i386.c (output_set_got): Add a GOT initialization sequence for VxWorks PIC.
gcc/
	* config/i386/i386.c (output_set_got): Add a GOT initialization
	sequence for VxWorks PIC.
	(legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
	around labels as well as symbols.  Use gotoff_operand instead
	of local_symbolic_operand.
	(legitimize_pic_address): Use gotoff_operand instead of
	local_symbolic_operand.  Use @GOT accesses for labels as
	well as symbols.
	(ix86_output_addr_diff_elt): Use PC-relative rather than
	GP-relative offsets for VxWorks PIC.
	(ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
	no_new_pseudos.  Check whether the returned register is op0.
	* config/i386/i386.md (tablejump): Use PC-relative rather than
	GP-relative offsets for VxWorks PIC.
	* config/i386/predicates.md (gotoff_operand): New predicate.

From-SVN: r122654
2007-03-07 09:02:14 +00:00
Richard Sandiford 26b5109ffe vxworks.h (VXWORKS_GOTT_BASE, [...]): Undefine before defining.
gcc/
	* config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
	before defining.
	* config/vxworks-dummy.h: New file.
	* config/i386/i386.h: Include it.

From-SVN: r122653
2007-03-07 07:37:16 +00:00
Alexandre Oliva dfad806e1e dwarf2out.c (is_inlined_entry_point): New
* dwarf2out.c (is_inlined_entry_point): New
(add_high_low_attributes): Emit DW_AT_entry_pc along with
DW_AT_ranges if the first subblock is the entry point.

From-SVN: r122650
2007-03-07 07:18:41 +00:00
David Daney 3eb3cf05c0 install.texi (mips-*-*): Change recommended binutils version.
* doc/install.texi (mips-*-*): Change recommended binutils
	version.

From-SVN: r122648
2007-03-07 04:40:28 +00:00
Anatoly Sokolov 205dcd71cd avr.c (avr_mcu_types): Add support for ATmega325P...
2006-02-24  Anatoly Sokolov <aesok@post.ru>

	* config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
	ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162 
	devices.
	* config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
	* config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).

From-SVN: r122635
2007-03-06 23:06:58 +03:00
Jan Hubicka 52bf96d2f2 errors.h (warning, [...]): Mark as cold.
* errors.h (warning, error, fatal, internal_error): Mark as cold.
	* predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
	are hot.
	(probably_cold_bb_p): Cold functions are cold.
	(probably_never_executed_bb_p): Cold functions are cold.
	(tree_bb_level_predictions): Predict calls to cold functions as not
	taken.
	(compute_function_frequency): Check hot/cold attributes.
	* function.h (function_frequency): Update comments.
	* predict.def (PRED_COLD_FUNCTION): Predict cold function.
	* c-common.c (handle_hot_attribute, handle_cold_attribute): New.
	(c_common_att): Add cold and hot.

	* doc/extend.texi (hot,cold attributes): Document.
	
	* ansidecl.h (ATTRIBUTE_COLD, ATTRIBUTE_HOT): New.

From-SVN: r122632
2007-03-06 18:57:27 +00:00
Andrew Haley 251086461e function.c (expand_function_end): Move blockage to just after we emit the label for the naked return from the...
2007-03-06  Andrew Haley  <aph@redhat.com>

        * function.c (expand_function_end): Move blockage to just after we
        emit the label for the naked return from the function.

From-SVN: r122626
2007-03-06 17:21:37 +00:00
Richard Sandiford af17c030e8 att.h (ASM_OUTPUT_ASCII, [...]): Undefine before redefining.
gcc/
	* config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
	before redefining.

From-SVN: r122625
2007-03-06 17:17:30 +00:00
Jan Hubicka dc4d7240dc reg-stack.c (reg_to_stack): Large models don't allow NAN to be loaded for constant large models.
* reg-stack.c (reg_to_stack): Large models don't allow NAN to be
	loaded for constant large models.  Non-large 64bit PIC can do.
	* i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
	* cmodel.h: Add LARGE PIC.
	* i386.md (UNSPEC_PLTOFF): New.
	(UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
	needed.
	(*call_1_rex64): Disable for large models.
	(*call_1_rex64_large): New.
	(*call_value_1_rex64): Disable for large models.
	(*call_value_1_rex64_large): New.
	(set_rip_rex4): New.
	(set_got_offset_rex64): New.
	* predicates.md (constant_call_address_operand): For large model
	constant calls are not possible.
	* i386-protos.h (construct_plt_address): Declare.
	* i386.c (override_options): Accept large models.
	(ix86_expand_prologue): Expand large PIC GOT pointer load.
	(legitimate_constant_p): Add new UNSPECs.
	(legitimate_pic_operand_p): Likewise.
	(legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
	(legitimize_pic_address): Do easy RIP relative way for TLS only for
	non-large model.
	(output_pic_addr_const): Add PLTOFF.
	(ix86_output_addr_diff_elt): Output 64bit tables when needed.
	(ix86_expand_move): Legitimize pic address when in PIC mode.
	(construct_plt_address): New function.
	(ix86_expand_call): Offload the address to register and use GOT pointer
	for large model.
	* invoke.texi (mcmodel=large): Update documentation.

From-SVN: r122623
2007-03-06 16:38:43 +00:00
Richard Henderson 80fd744fda i386.c (x86_use_leave, [...]): Merge into ...
* config/i386/i386.c (x86_use_leave, x86_push_memory,
	x86_zero_extend_with_and, x86_movx, x86_double_with_add,
	x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
	x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
	x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
	x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
	x86_split_long_moves, x86_promote_QImode, x86_fast_prefix, 
	x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
	x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
	x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves, 
	x86_partial_reg_dependency, x86_memory_mismatch_stall, 
	x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
	x86_sse_partial_reg_dependency, x86_sse_split_regs, 
	x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
	x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
	x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
	x86_schedule, x86_use_bt, x86_pad_returns): Merge into ...
	(ix86_tune_features): ... here.  New array.
	(x86_cmove, x86_use_xchgb, x86_cmpxchg, x86_cmpxchg8b,	
	x86_xadd, x86_bswap): Merge into ...
	(ix86_arch_features): ... here.  New array.
	(x86_3dnow_a): Remove.
	(x86_accumulate_outgoing_args): Make static.
	(x86_arch_always_fancy_math_387): Make static.
	(ix86_tune_mask, ix86_arch_mask): Move ...
	(override_options): ... to local variables here.  Apply the
	appropriate mask to each element of ix86_arch_features and
	ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
	as were done in the old macros.
	(standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
	* config/i386/i386.h (x86_use_leave, x86_push_memory,
	x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
	x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
	x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
	x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
	x86_read_modify_write, x86_read_modify, x86_split_long_moves,
	x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
	x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
	x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
	x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
	x86_partial_reg_dependency, x86_memory_mismatch_stall,
	x86_accumulate_outgoing_args, x86_prologue_using_move,
	x86_epilogue_using_move, x86_decompose_lea,
	x86_arch_always_fancy_math_387, x86_shift1,
	x86_sse_partial_reg_dependency, x86_sse_split_regs,
	x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,	
	x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
	x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
	x86_use_incdec, x86_pad_returns, x86_bswap,
	x86_partial_flag_reg_stall): Remove.
	(enum ix86_tune_indices): New.
	(ix86_tune_features): New.
	(TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
	TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
	TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
	TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
	TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
	TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
	TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
	TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
	TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
	TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
	TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
	TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
	TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
	TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
	TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
	TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
	TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
	TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
	TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
	TARGET_EXT_80387_CONSTANTS): Use it.
	(enum ix86_arch_indices): New.
	(ix86_arch_features): New.
	(TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
	TARGET_BSWAP): Use it.
	(ix86_tune_mask, ix86_arch_mask): Remove.

From-SVN: r122621
2007-03-06 07:59:38 -08:00
Joseph Myers 14da607343 re PR bootstrap/31020 (cannot write in </test/gnu/gcc/objdir/prev-gcc/../gcc/./include>)
fixincludes:
	* mkheaders.in: Fix headers for each multilib required.

gcc:
	PR bootstrap/31020
	* configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
	Define using $${sysroot_headers_suffix}.
	* configure: Regenerate.
	* cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
	multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
	defined.
	* doc/invoke.texi (-print-sysroot-headers-suffix): Document.
	* gcc.c (print_sysroot_headers_suffix): New.
	(option_map): Include --print-sysroot-headers-suffix.
	(display_help): Mention -print-sysroot-headers-suffix.
	(process_command): Handle -print-sysroot-headers-suffix.
	(do_spec_1): Append multilib directory to include-fixed path if
	sysroot suffixes in use.
	(main): Handle -print-sysroot-headers-suffix.
	* Makefile.in (start.encap): Don't depend on xlimits.h
	(xlimits.h): Remove.
	(stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
	limits.h for each multilib in fixinc_list.
	(fixinc_list, s-fixinc_list): New.
	(stmp-fixinc): Depend on fixinc_list.  If not copying headers,
	generate them for each multilib in fixinc_list.
	(stmp-fixproto): Use include-fixed.  Run fixproto for each
	multilib in fixinc_list.
	(mostlyclean): Don't remove xlimits.h.
	(clean): Remove include-fixed.
	(real-install-headers-tar, real-install-headers-cpio,
	real-install-headers-cp): Don't copy include, only include-fixed.
	(install-mkheaders): Depend on fixinc_list.  Don't depend on
	xlimits.h.  Save limits.h files for each multilib in fixinc_list.
	Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
	SYSTEM_HEADER_DIR setting in mkheaders.conf.

From-SVN: r122620
2007-03-06 15:50:28 +00:00
Jan Hubicka 4e669430fe regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load NANs easilly.
* regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
	NANs easilly.

From-SVN: r122619
2007-03-06 14:02:00 +00:00
Richard Sandiford 3ca43df7e2 configure.ac: Allow tm_file to contain build-directory files.
gcc/
	* configure.ac: Allow tm_file to contain build-directory files.
	* configure: Regenerate.
	* config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
	* config/m68k/t-uclinux (sysroot-suffix.h): New target.
	* config/m68k/print-sysroot-suffix.sh: New file.

From-SVN: r122613
2007-03-06 09:06:35 +00:00
Richard Sandiford 4ab870f5c3 m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO of pic_offset_table_rtx if reload_completed.
gcc/
	* config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
	of pic_offset_table_rtx if reload_completed.
	(CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
	PIC_OFFSET_TABLE_REGNUM.
	* config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
	return true.
	(m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
	(m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.

From-SVN: r122612
2007-03-06 09:04:47 +00:00
Richard Sandiford afcb440c3f m68k.c (m68k_save_reg): Save the PIC register in functions that call eh_return.
gcc/
	* config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
	functions that call eh_return.

From-SVN: r122611
2007-03-06 09:04:27 +00:00
Richard Sandiford 6357eb0da4 m68k.c (m68k_save_reg): Save the PIC register in functions that need a constant pool.
gcc/
	* config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
	functions that need a constant pool.

From-SVN: r122610
2007-03-06 09:04:09 +00:00
Richard Sandiford ffa2596e3a re PR target/28181 (ICE in reload_cse_simplify_operands, at postreload.c:393 on m68k)
gcc/
	PR target/28181
	* config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
	(m68k_preferred_reload_class): Likewise.
	* config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
	(SECONDARY_RELOAD_CLASS): Define.
	(PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
	(LIMIT_RELOAD_CLASS): Delete.
	* config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
	registers from storing bytes.
	(m68k_secondary_reload_class): New function.
	(m68k_preferred_reload_class): Likewise.

gcc/testsuite/
	* gcc.c-torture/compile/m68k-byte-addr.c: New test.

From-SVN: r122609
2007-03-06 09:01:07 +00:00
Richard Sandiford 4f44ecc07f m68k.c (m68k_save_reg): Remove special case for leaf functions.
gcc/
	* config/m68k/m68k.c (m68k_save_reg): Remove special case for
	leaf functions.
	(m68k_expand_prologue): Likewise.

From-SVN: r122608
2007-03-06 09:00:21 +00:00
Richard Sandiford f7e7089441 m68k-protos.h (output_sibcall): Declare.
gcc/
	* config/m68k/m68k-protos.h (output_sibcall): Declare.
	(mips_expand_epilogue): Add a bool parameter.
	(m68k_legitimize_sibcall_address): Declare.
	* config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
	(m68k_expand_epilogue): Add a parameter to select between sibling
	and normal epilogues.  Only generate a return for the latter.
	(m68k_ok_for_sibcall_p): New function.
	(m68k_legitimize_sibcall_address, output_sibcall): New functions.
	* config/m68k/m68k.md (sibcall, *sibcall): New patterns.
	(sibcall_value, *sibcall_value): Likewise.
	(*call, *call_value): Require !SIBLING_CALL_P.
	(epilogue): Update call to m68k_expand_epilogue.
	(sibcall_epilogue): New pattern.
	* config/m68k/predicates.md (const_call_operand): Say that this
	predicate applies to sibling calls too.
	(sibcall_operand): New predicate.

From-SVN: r122607
2007-03-06 09:00:00 +00:00
Richard Sandiford 31c5b44477 m68k.md (movsf_cf_soft): Provide the same non-mov3q alternatives as movsi_cf.
gcc/
	* config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
	alternatives as movsi_cf.
	(movsf_cf_hard): Add commentary.

From-SVN: r122606
2007-03-06 08:59:20 +00:00
Kazu Hirata a40ed0f310 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-protos.h (m68k_interrupt_function_p): Declare.
	(m68k_movem_pattern_p, m68k_output_movem): Likewise.
	(m68k_expand_prologue, m68k_expand_epilogue): Likewise.
	* config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
	as being live on exit from an interrupt function.
	(PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
	* config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
	(m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
	(TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
	(m68k_interrupt_function_p): Globalize.
	(m68k_compute_frame_layout): Remove reverse mask code.
	(m68k_emit_movem, m68k_set_frame_related): New functions.
	(m68k_output_function_prologue): Delete in favor of...
	(m68k_expand_prologue): ...this new function.
	(m68k_output_function_epilogue): Delete in favor of...
	(m68k_expand_epilogue): ...this new function.
	(m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
	functions.
	(print_operand): Handle %?.
	* config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
	(UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
	(prologue, epilogue): New patterns.
	(return): Turn into a define_expand.
	(*return): New pattern, derived from old "return" pattern.  Use rte
	rather than rts for interrupt functions.  Only use rtd if the pop
	count is nonzero.
	(*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
	(*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
	(link, *link, unlink, *unlink, load_got): Likewise.

Co-Authored-By: Richard Sandiford <richard@codesourcery.com>

From-SVN: r122605
2007-03-06 08:58:40 +00:00
Richard Sandiford fc2241eb94 re PR target/23482 ([ColdFire] ICE in in final_scan_insn)
gcc/
	PR target/23482
	PR target/17114
	* config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
	(m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
	(m68k_matches_q_p, m68k_matches_u_p): Likewise.
	* config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
	and m68k_matches_u_p.
	(PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
	(INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
	(GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
	(LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
	(GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
	(REG_STRICT_P): New macro.
	(LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
	PCREL_GENERAL_OPERAND_OK.
	(REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
	m68k_legitimate_base_reg_p.
	(REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
	(GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
	(PIC_CASE_VECTOR_ADDRESS): Update comment.
	* config/m68k/m68k.c (m68k_address): New structure.
	(m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
	(m68k_decompose_index, m68k_legitimate_constant_address_p)
	(m68k_jump_table_ref_p, m68k_decompose_address)
	(m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
	(m68k_matches_u_p): New functions.
	(print_operand_address): Rewrite to use m68k_decompose_index.

From-SVN: r122604
2007-03-06 08:54:31 +00:00
David Taylor 9e8f695979 2007/03/05 David Taylor <dtaylor@emc.com>
2007/03/05  David Taylor  <dtaylor@emc.com>
* gcc.c: Correct copyright date in --version output.

From-SVN: r122596
2007-03-05 23:32:25 -08:00
John David Anglin 50f9c211a6 pa.md: In unamed move patterns...
* pa.md: In unamed move patterns, disparge copies between general
	and floating point registers using '?' modifier.  Don't include 'f'
	constraint for register preferences in DImode, SImode, HImode and
	QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
	Remove constraints for copies between general and floating registers
	in soft-float DFmode pattern.
	(movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
	floating register.
	(movsf): Likewise.

From-SVN: r122593
2007-03-06 02:47:37 +00:00
Mike Stump 1f1d513061 c-common.c (targetcm): Add.
* c-common.c (targetcm): Add.   
	* c-opts.c (c_common_handle_option): Handle language specific
	target options.
	* opts.c (handle_option): Verify language for target options, if
	any are given.
	* opth-gen.awk: Add CL_LANG_ALL.
	* target-def.h (TARGET_HANDLE_C_OPTION): Add.
	(TARGETCM_INITIALIZER): Add.
	* target.h (struct gcc_targetcm): Add.
	(targetcm): Add.
	* targhooks.c (default_handle_c_option): Add.
	* targhooks.h (default_handle_c_option): Add.
	* doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.

	* config/darwin.opt (iframework): Add.
	* config/darwin.h (TARGET_HAS_TARGETCM): Add.
	* config/darwin-c.c (handle_c_option): Add.
	(TARGET_HANDLE_C_OPTION): Add.
	(targetcm): Add.
	* doc/invoke.texi (Darwin Options): Add -iframework.

From-SVN: r122590
2007-03-06 00:48:47 +00:00
Kaveh R. Ghazi 65bda21f7f convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint conversion.
* convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
	conversion.

testsuite:
	* gcc.dg/torture/builtin-convert-4.c: New test.

From-SVN: r122581
2007-03-05 23:30:04 +00:00
Ian Lance Taylor da1c7394b3 c.opt (fgnu89-inline): New option.
* c.opt (fgnu89-inline): New option.
	* c-opts.c (c_common_post_options): Set default value for
	flag_gnu89_inline.
	* c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
	(pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
	inline functions.
	(diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
	(grokdeclarator, start_function): Likewise.
	* c-cppbuiltin.c (c_cpp_builtins): Define either
	__GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
	* doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
	(C Dialect Options): Document -fgnu89-inline.
	* doc/extend.texi (Function Attributes): Explain what the
	gnu_inline attribute does.
	* doc/cpp.texi (Common Predefined Macros): Document
	__GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.

From-SVN: r122565
2007-03-05 19:45:20 +00:00
Ian Lance Taylor 7343ff45ca re PR tree-optimization/31034 (ICE in set_value_range, at tree-vrp.c:267)
PR tree-optimization/31034
	* tree-vrp.c (extract_range_from_assert): Don't try to handle a
	half-range if the other side is an overflow infinity.

From-SVN: r122562
2007-03-05 18:01:00 +00:00
Bernd Schmidt 344189f9ec config.host (bfin*-linux-uclibc*): Set extra_parts.
libgcc/:
	* config.host (bfin*-linux-uclibc*): Set extra_parts.
gcc/:
	* config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
	(bfin*-linux-uclibc*): New configuration.
	* config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
	defining.
	* config/bfin/linux.h: New file.
	* config/bfin/libgcc-bfin.ver: New file.
	* config/bfin/t-bfin-uclinux: New file.
	* config/bfin/t-bfin-linux: New file.
	* config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
	(TARGET_OS_CPP_BUILTINS): New macro.

From-SVN: r122552
2007-03-05 14:55:37 +00:00
Richard Guenther 9dc167ec4a fold-const.c (fold_binary): Remove duplicate folding of comparison of non-null ADDR_EXPR against null.
2007-03-05  Richard Guenther  <rguenther@suse.de>

	* fold-const.c (fold_binary): Remove duplicate folding
	of comparison of non-null ADDR_EXPR against null.

From-SVN: r122551
2007-03-05 14:49:02 +00:00
Richard Guenther f9be04cd95 re PR tree-optimization/26420 (-ftree-vectorizer-verbose=1 prints unvectorized loops information)
2007-03-05  Richard Guenther  <rguenther@suse.de>
	Dorit Nuzman  <dorit@il.ibm.com>

	PR tree-optimization/26420
	* tree-vectorizer.c (vectorize_loops): Bail out early if there
	are no loops in the function.  Only print the number of
	vectorized loops if it is greater than zero or we are supposed
	to print information about unvectorized loops.

Co-Authored-By: Dorit Nuzman <dorit@il.ibm.com>

From-SVN: r122544
2007-03-05 10:57:09 +00:00
Revital Eres c1c5a431b5 var-expand1.c: New test.
2007-03-05  Revital Eres  <eres@il.ibm.com>

      * gcc.dg/var-expand1.c: New test.
      * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
      when an accumulator is expanded.

From-SVN: r122543
2007-03-05 09:28:23 +00:00
Manuel López-Ibáñez f73fe417bc re PR other/30465 (Duplicated overflow warning)
2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR other/30465
	* c-common.c (convert_and_check): Don't give warnings for
	conversion if 'expr' already overflowed.

testsuite/
	* gcc.dg/multiple-overflow-warn-3.c: New.
	* g++.dg/warn/multiple-overflow-warn-3.C: New.

From-SVN: r122534
2007-03-04 23:29:41 +00:00
Roger Sayle 270d43bf1e re PR middle-end/30744 (ICE in compare_values, at tree-vrp.c:466)
PR middle-end/30744
	* fold-const.c (fold_comparison): Enforce type consistency when
	transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.

	* gcc.dg/pr30744-1.c: New test case.

From-SVN: r122531
2007-03-04 19:03:13 +00:00
Zdenek Dvorak 5ca09e7393 Add missing changelog entry:
* config/i386/driver-i386.c (describe_cache, detect_caches_amd,
	decode_caches_intel, detect_caches_intel): New functions.
	(host_detect_local_cpu): Use detect_caches_amd and
	detect_caches_intel.

From-SVN: r122529
2007-03-04 16:34:31 +00:00
Zdenek Dvorak 69bd3423f6 tree-ssa-address.c (create_mem_ref): Do not put an expression containing a cast to the base of TARGET_MEM_REF.
* tree-ssa-address.c (create_mem_ref): Do not put an expression
	containing a cast to the base of TARGET_MEM_REF.

From-SVN: r122528
2007-03-04 16:23:31 +00:00
Martin Michlmayr 232044287b Remove spurious whitespace from error message.
From-SVN: r122525
2007-03-04 12:57:13 +00:00
François-Xavier Coudert 7348aa7faf re PR target/30406 ([4.1 only] ICE in LOGICAL(8) functions)
PR target/30406

	* config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
	instead of precision.

	* gfortran.dg/logical_3.f90: New test.

From-SVN: r122523
2007-03-04 08:10:25 +00:00
Roman Zippel 594f877973 emit-rtl.c (find_auto_inc): New.
* emit-rtl.c (find_auto_inc): New.
	(try_split): recreate REG_INC notes,
	Use regular for loops rather than whiles.

	* gcc.target/m68k/m68k.exp: New.
	* gcc.target/m68k/crash1.c: New.

From-SVN: r122520
2007-03-04 00:56:51 +00:00
Andreas Schwab 695d883001 configure.ac (HAVE_AS_REL16): Move test back to correct place.
* configure.ac (HAVE_AS_REL16): Move test back to correct place.
	* configure: Regenerate.

From-SVN: r122511
2007-03-03 19:23:06 +00:00
Kaveh R. Ghazi a50639323b builtins.def (ATTR_MATHFN_FPROUNDING): Rely on flag_rounding_math, not flag_unsafe_math_optimizations.
* builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
	flag_rounding_math, not flag_unsafe_math_optimizations.

From-SVN: r122509
2007-03-03 17:18:17 +00:00
Kaveh R. Ghazi 31ff73b5ab c-pretty-print.c (pp_c_direct_abstract_declarator): Use fold_build2.
* c-pretty-print.c (pp_c_direct_abstract_declarator): Use
	fold_build2.
	* config/alpha/alpha.c (alpha_fold_builtin_zapnot,
	alpha_fold_vector_minmax): Likewise.
	* config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
	* config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.

From-SVN: r122508
2007-03-03 17:12:28 +00:00
Eric Botcazou 9700224802 tree-sra.c (sra_walk_fns): Document new restriction.
* tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
	(sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
	if the lhs has side-effects.
	<lhs_elt>: Treat the reference as a use if the rhs has side-effects.

From-SVN: r122492
2007-03-02 22:30:32 +00:00