Commit Graph

32355 Commits

Author SHA1 Message Date
Sandra Loosemore 64e7e23811 mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
	    Nigel Stephens  <nigel@mips.com>

	gcc/
	* config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.

Co-Authored-By: Nigel Stephens <nigel@mips.com>

From-SVN: r124261
2007-04-28 13:47:28 -04:00
Jan Hubicka 55e092c4d0 alpha.c (alpha_output_mi_thunk_osf): Use insn_locators_alloc instead of insn_locators_initialize...
* config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
	insn_locators_alloc instead of insn_locators_initialize;
	call reset_block_changes.
	* config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
	* config/sh/sh.c (sparc_output_mi_thunk): Likewise.
	* config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
	* config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
	* config/score/score.c (th_output_mi_thunk): Likewise.
	* config/mips/mips.c (mips_output_mi_thunk): Likewise.
	* cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
	tolerate uninitialized locator info.

	Re-apply:
	* function.c (init_function_start): Don't init line number info.
	(expand_function_end): Update.
	(reset_block_changes, record_block_change, finalize_block_changes,
	check_block_change, free_block_changes): Kill.
	* function.h (reset_block_changes, record_block_change,
	finalize_block_changes, check_block_change, free_block_changes): Remove
	prototypes.
	(struct function): Remove ib_boundaries_block.
	* emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
	Use curr_insn_locator to initialize locator.
	(emit_line_note): Remove.
	* cfgexpand.c (expand_gimple_cond_expr): Update.
	(construct_exit_block): Likewise.
	(tree_expand_cfg): Initialize/finalize locators.
	* expr.c (expand_expr_real): Update.
	* cfglayout.c (line_locators_locs, line_locators_lines,
	file_locators_locs, file_locators_files): Remove.
	(set_block_levels): Move to cfgexpand.c.
	(insn_locators_initialize): Remove.
	(pass_insn_locators_initialize): Remove.
	(locations_locators_locs, locations_locators_vals): New static vars.
	(curr_location, last_location, curr_block, last_block, curr_rtl_loc):
	Likewise.
	(insn_locators_alloc, insn_locators_finalize,
	set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
	New functions.
	(locator_location): New.
	(locator_line, locator_file): Rewrite.
	* rtl.h (emit_line_note): Kill.
	(insn_locators_alloc, insn_locators_finalize,
	set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
	Declare.
	* tree-inline.c (initialize_cfun): Do not initialize
	ib_boundaries_block.
	* passes.c (pass_insn_locators_initialize): Remove.

From-SVN: r124258
2007-04-28 08:20:08 +00:00
Zdenek Dvorak 3722506a9e tree-cfg.c (move_block_to_fn): Release bb from dominance info.
* tree-cfg.c (move_block_to_fn): Release bb from dominance
	info.  Update last_basic_block correctly.

From-SVN: r124257
2007-04-28 08:00:44 +00:00
Kaz Kojima eb996a4ac9 re PR target/31701 (SH: wrong epilogue for sibling calls)
PR target/31701
	* config/sh/sh.c (output_stack_adjust): Avoid using the frame
	register itself to hold the offset constant.  Tell flow the use
	of r4 and r5 when they are used.

From-SVN: r124248
2007-04-28 00:07:40 +00:00
Richard Guenther 113ab41c05 tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track if we simplified anything.
2007-04-27  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
	if we simplified anything.
	(tree_ssa_forward_propagate_single_use_vars): Defer overflow
	warnings until we did a simplification and the stmt was not
	marked as TREE_NO_WARNING.

From-SVN: r124242
2007-04-27 21:50:04 +00:00
Mike Stump bfa455647c * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
From-SVN: r124240
2007-04-27 21:36:34 +00:00
Ian Lance Taylor 093b203ba9 re PR middle-end/31710 (ICE in in set_value_range, at tree-vrp.c:278)
./:	PR middle-end/31710
	* tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
	TYPE_MAX_VALUE exist, convert them to the new type.
testsuite/:
	PR middle-end/31710
	* gcc.c-torture/compile/pr31710.c: New test.

From-SVN: r124237
2007-04-27 20:47:24 +00:00
Zdenek Dvorak 30251f7a3a tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info if it claims to be available.
* tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
	if it claims to be available.
	* tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
	edge is redirected.
	(perform_tree_ssa_dce): Always free postdominators.

From-SVN: r124236
2007-04-27 20:40:26 +00:00
Richard Henderson 48f46219bd predicates.md (aligned_memory_operand): Mark as define_special_predicate.
* config/alpha/predicates.md (aligned_memory_operand): Mark
        as define_special_predicate.
        (unaligned_memory_operand, normal_memory_operand): Likewise.
        (reg_or_unaligned_mem_operand): Remove.
        (any_memory_operand): Match the documentation and check for
        non-renumbered pseudos during reload.
        * config/alpha/alpha.c (alpha_secondary_reload): Rename from
        alpha_secondary_reload_class, update to new interface, make static.
        Handle CQImode like HImode.  Remove FP subreg check.
        (alpha_expand_mov): Use replace_equiv_address.
        (alpha_expand_mov_nobwx): Use any_memory_operand.
        (TARGET_SECONDARY_RELOAD): New.
        * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
        (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
        * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
        * config/alpha/alpha.md: ... here.
        (RELOAD12, reloadmode): New.
        (movcqi): New.
        (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
        Don't handle the aligned case here.
        (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
        (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
        reload_inhi_help.  Don't expect a scratch register.
        (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
        reload_outhi_help.
        * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.

From-SVN: r124220
2007-04-27 07:47:57 -07:00
Richard Guenther 64e8a9f04e tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
2007-04-27  Richard Guenther  <rguenther@suse.de>
  
        * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.

From-SVN: r124218
2007-04-27 13:45:54 +00:00
Richard Guenther 3aef2dbd2e re PR tree-optimization/30965 (Fails to tree-combine conditions in COND_EXPRs)
2007-04-27  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/30965
	PR tree-optimization/30978
	* Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
        * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
        (find_equivalent_equality_comparison): Likewise.
        (simplify_cond): Likewise.
        (get_prop_source_stmt): New helper.
        (get_prop_dest_stmt): Likewise.
	(can_propagate_from): Likewise.
	(remove_prop_source_from_use): Likewise.
        (combine_cond_expr_cond): Likewise.
        (forward_propagate_comparison): New function.
        (forward_propagate_into_cond): Rewrite to use fold for
        tree combining.
	(tree_ssa_forward_propagate_single_use_vars): Call
	forward_propagate_comparison to propagate comparisons.

	* gcc.dg/tree-ssa/pr30978.c: New testcase.
	* gcc.dg/tree-ssa/bool-3.c: Remove XFAIL, explain why.
	* gcc.dg/tree-ssa/ssa-fre-4.c: Use char instead of bool
	* gcc.dg/strict-overflow-5.c: Adjust tree dump scanning.

From-SVN: r124217
2007-04-27 13:43:42 +00:00
Richard Guenther 891fc5e9f1 re PR tree-optimization/31715 (Array calculation done incorrectly)
2007-04-27  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/31715
	* tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
	sure to do computation on the offset in an appropriate
	signed type.

	* gcc.dg/Warray-bounds-4.c: New testcase.

From-SVN: r124216
2007-04-27 11:42:43 +00:00
Richard Sandiford 8c74fb06c6 reload.h (elimination_target_reg_p): Declare.
gcc/
	* reload.h (elimination_target_reg_p): Declare.
	* reload.c (find_reloads): Don't apply the reg_rtx move
	optimization if the SET_DEST satisfies elimination_target_reg_p.
	* reload1.c (elimination_target_reg_p): New function.
	(gen_reload): In the move/add2 fallback, make sure that op0
	does not overlap the destination register.

From-SVN: r124215
2007-04-27 11:39:47 +00:00
Zdenek Dvorak a9b77cd1f7 tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to transform only GIMPLE_MODIFY_STMTs.
* tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
	transform only GIMPLE_MODIFY_STMTs.
	* tree-complex.c (expand_complex_operations_1): Ditto.
	(expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
	* tree-ssa-loop-manip.c (build_if_stmt): Removed.
	(tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
	branches.
	* value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
	tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
	* omp-low.c (expand_parallel_call, expand_omp_for_generic,
	expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
	* tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
	slpeel_add_loop_guard): Ditto.
	* tree-mudflap.c (mf_build_check_statement_for): Ditto.
	* lambda-code.c (perfect_nestify): Ditto.
	* tree-iterator.c (tsi_split_statement_list_before): Fix splitting
	before the first statement.
	* tree-optimize.c (execute_free_datastructures): Fix comments.
	(execute_free_cfg_annotations): Do not call disband_implicit_edges.
	* tree-flow.h (disband_implicit_edges): Declaration removed.
	* tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
	branches.
	(cleanup_dead_labels, tree_redirect_edge_and_branch): Handle COND_EXPRs
	without gotos.
	(disband_implicit_edges, has_label_p): Removed.
	(tree_verify_flow_info): Verify that COND_EXPR branches are empty.
	(tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
	branches.
	* tree.c (build3_stat): Mark COND_EXPRs used as statements as having
	side effects.
	* tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
	also for COND_EXPRs.
	* cfgexpand.c (label_rtx_for_bb): New function.
	(expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
	Use label_rtx_for_bb to find the labels.
	(expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
	last block.  Detect fallthru edges.

From-SVN: r124214
2007-04-27 08:20:39 +00:00
Ian Lance Taylor f5c3dc96c3 re PR target/28675 (ICE in extract_insn, at recog.c:2084 (unrecognizable insn) [arm])
gcc/:
	PR target/28675
	* reload.c (find_reloads_subreg_address): If the address was valid
	in the original mode but not in the new mode, reload the whole
	address.
testsuite/:
	PR target/28675
	* gcc.c-torture/compile/pr28675.c: New test.

From-SVN: r124211
2007-04-27 04:11:47 +00:00
Zdenek Dvorak 672987e82f tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
* tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
	(remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
	(cleanup_control_expr_graph): Do not invalidate dominance info.
	Record altered blocks.
	(cleanup_control_flow, cleanup_forwarder_blocks): Removed.
	(cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
	cleanup_tree_cfg_bb): New functions.
	(remove_forwarder_block): Do not maintain the worklist of blocks.
	Record altered blocks.
	(cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
	not over whole cfg.
	(cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
	delete_unreachable_blocks if dominators are not available.
	* tree-inline.c (optimize_inline_calls): Free dominance information
	earlier.
	* tree-flow.h (remove_edge_and_dominated_blocks,
	cfgcleanup_altered_bbs): Altered.
	* tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
	blocks.
	(get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
	functions.
	(tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
	do not invalidate dominators.

From-SVN: r124203
2007-04-26 23:13:41 +00:00
Anatoly Sokolov dd3b6c09ea avr.c (avr_mcu_types): Add support for ATmega8HVA and ATmega16HVA devices.
* config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and 
	ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
	* config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
	* config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).

From-SVN: r124198
2007-04-27 01:02:43 +04:00
Steve Ellcey 6107a6aef1 * config/ia64/ia64.md (ip_value): Fix itanium_class attribute.
From-SVN: r124194
2007-04-26 19:37:06 +00:00
Richard Guenther 5c7ec4f0d5 re PR tree-optimization/31703 (Gcc 4.3 revision 124101 failed to compile gcc 3.2)
2007-04-26  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/31703
	* tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
	the right type for the target of the bittest.

	* gcc.c-torture/compile/pr31703.c: New testcase.
	* gcc.dg/tree-ssa/ssa-lim-1.c: Adjust pattern.
	* gcc.dg/tree-ssa/ssa-lim-2.c: Likewise.

From-SVN: r124190
2007-04-26 15:28:14 +00:00
Richard Sandiford 02cba8dfe4 vx-common.h (RETURN_IN_MEMORY): Use ix86_sol10_return_in_memory.
gcc/
	* config/i386/vx-common.h (RETURN_IN_MEMORY): Use
	ix86_sol10_return_in_memory.

From-SVN: r124185
2007-04-26 12:25:42 +00:00
Richard Sandiford e797f7e150 i386.c (ix86_sol10_return_in_memory): Remove unused variables.
gcc/
	* config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
	variables.

From-SVN: r124183
2007-04-26 10:43:39 +00:00
Jakub Jelinek 6f7195603e re PR c++/31598 (g++ does not accept some OpenMP code)
PR c++/31598
	* tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.

	* semantics.c (finish_omp_clauses): Don't create CP_OMP_CLAUSE_INFO
	for type dependent OMP_CLAUSE_DECLs.

	* g++.dg/gomp/pr31598.C: New test.

From-SVN: r124178
2007-04-26 09:32:27 +02:00
Jakub Jelinek e0eb05eaa1 re PR tree-optimization/30558 (ICE with OpenMP and exceptions)
PR tree-optimization/30558
	* tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
	clear this_state.prev_try.

	* g++.dg/gomp/pr30558.C: New test.

From-SVN: r124177
2007-04-26 09:29:46 +02:00
Richard Sandiford 29173496a0 200x-xx-xx Richard Sandiford <richard@codesourcery.com> Mark Mitchell <mark@codesourcery.com>
gcc/
200x-xx-xx  Richard Sandiford  <richard@codesourcery.com>
	    Mark Mitchell  <mark@codesourcery.com>

	* config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
	* config/i386/i386.c (ix86_sol10_return_in_memory): New function.
	* config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.

Co-Authored-By: Mark Mitchell <mark@codesourcery.com>

From-SVN: r124176
2007-04-26 07:22:14 +00:00
Richard Sandiford a0f8745469 re PR driver/31107 (--target-help doesn't say which options are compiler, assembler or linker options)
gcc/
	PR driver/31107
	* doc/invoke.texi (%:print-asm-header): Document.
	* gcc.c (asm_options): Use %:print-asm-header() for --target-help
	and -ftarget-help.
	(static_spec_functions): Add print-asm-header.
	(main): Print a banner before the --target-help linker options.
	(print_asm_header_spec_function): New function.

From-SVN: r124175
2007-04-26 07:15:41 +00:00
Kaz Kojima 6b2eeb54e0 re PR target/31403 (wrong branch instructions generated with -m2a on sh-elf)
PR target/31403
	* config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
	(movsf_ie): Likewise.

From-SVN: r124171
2007-04-26 00:29:54 +00:00
Paolo Carlini b29441ec79 semantics.c (classtype_has_nothrow_copy_or_assign_p): Adjust per N2255; rename as classtype_has_nothrow_assign_or_copy_p.
gcc/cp
2007-04-25  Paolo Carlini  <pcarlini@suse.de>

	* semantics.c (classtype_has_nothrow_copy_or_assign_p): Adjust
	per N2255; rename as classtype_has_nothrow_assign_or_copy_p.
	(trait_expr_value): Adjust.

gcc/testsuite/
2007-04-25  Paolo Carlini  <pcarlini@suse.de>

	* g++.dg/ext/has_nothrow_assign.C: Adjust per N2255.

gcc/
2007-04-25  Paolo Carlini  <pcarlini@suse.de>

	* doc/extend.texi ([Type Traits]): Adjust per N2255.

From-SVN: r124170
2007-04-25 23:55:11 +00:00
Bob Wilson a2c2290b62 lib1funcs.asm (__udivsi3, __divsi3): Throw an exception for divide-by-zero.
* config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an exception
        for divide-by-zero.
        (__umodsi3, __modsi3): Likewise.

From-SVN: r124165
2007-04-25 21:40:42 +00:00
Dirk Mueller aa86a51b89 c-common.c (handle_sentinel_attribute): Annotate warning call with OPT_Wattributes.
* c-common.c (handle_sentinel_attribute): Annotate warning
       call with OPT_Wattributes.

From-SVN: r124163
2007-04-25 18:59:17 +00:00
Dirk Mueller d1c2effe9a tree-ssa.c ((warn_uninit): Annotate warning with -Wuninitialized.
* tree-ssa.c ((warn_uninit): Annotate warning with
       -Wuninitialized.

From-SVN: r124161
2007-04-25 18:45:39 +00:00
Dirk Mueller 253a697e66 c-typeck.c (build_compound_expr): Annotate warning() call with OPT_Wunused_value.
2007-04-25  Dirk Mueller  <dmueller@suse.de>

       * c-typeck.c (build_compound_expr): Annotate warning()
       call with OPT_Wunused_value.

From-SVN: r124160
2007-04-25 18:44:07 +00:00
Thiemo Seufer 500fc42586 mips.opt (mdmx, [...]): New options.
* config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
	(mips16): Fix typo.
	* config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
	on to the assembler.  Improve handling of -mno-mips16.  Add handling
	of -mno-mips3d, -mno-dsp, -mno-dspr2.
	* doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
	of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
	-mno-mdmx, -mno-mips3d, -mmt and -mno-mt.

From-SVN: r124153
2007-04-25 12:05:48 +00:00
Danny Smith 4b07e9f774 winnt.c (i386_pe_file_end): Strip only USER_LABEL_PREFIX when writing export name.
* config/i386/winnt.c (i386_pe_file_end): Strip only
	USER_LABEL_PREFIX when writing export name.

From-SVN: r124149
2007-04-25 10:06:28 +00:00
Richard Sandiford f5c7290e1e config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.
gcc/
	* config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
	sh/elf.h, vx-common.h and vxworks.h.
	* config/sh/sh.h: Include config/vxworks-dummy.h.
	(SUBTARGET_OVERRIDE_OPTIONS): Define.
	(OVERRIDE_OPTIONS): Use it.
	* config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
	(vxworks_picreg): New pattern.
	* config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
	VXWORKS_OS_CPP_BUILTINS.
	(LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
	to their VXWORKS_* equivalents.
	(SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
	(SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
	* config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
	(set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
	* config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
	-mrtp/-fPIC multilibs.
	(MULTILIB_EXCEPTIONS): Generalize globs accordingly.
	(MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
	(MULTILIB_OSDIRNAMES): Delete.

From-SVN: r124145
2007-04-25 08:03:55 +00:00
Anatoly Sokolov 5178d50ab6 re PR target/18989 (A few potentially ominous, and several likely harmless warnings during 4.0 build)
PR target/18989
 	* config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.

From-SVN: r124141
2007-04-25 10:18:33 +04:00
Brooks Moses 205a4d09ca real.c (mpfr_from_real): Handle Inf and NaN, and allow the rounding mode to be specified by the caller.
* real.c (mpfr_from_real): Handle Inf and NaN, and allow the
rounding mode to be specified by the caller.
(real_to_mpfr) Likewise.
* real.h: Update mpfr_from_real, mpfr_to_real prototypes to
include new arguments.
* builtins.c: Update mpfr_from_real, mpfr_to_real calls.

From-SVN: r124139
2007-04-24 19:12:47 -07:00
Ian Lance Taylor 8cf781f088 re PR tree-optimization/31605 (VRP eliminates a useful test due with conversion from unsigned int to int)
./:	PR tree-optimization/31605
	* tree-vrp.c (set_value_range): Check that min and max are not
	both overflow infinities.
	(set_value_range_to_value): New static function.
	(extract_range_from_binary_expr): Call set_value_range_to_value.
	(extract_range_from_cond_expr): Likewise.
	(extract_range_from_expr): Likewise.
	(extract_range_from_unary_expr): Likewise.  Don't create a range
	which overflows on both sides.
	(vrp_meet): Check for a useless range.
	(vrp_visit_phi_node): If we see a constant which looks like an
	overflow infinity, turn off the TREE_OVERFLOW flag.
testsuite/:
	PR tree-optimizatoin/31605
	* gcc.c-torture/execute/pr31605.c: New test.

From-SVN: r124128
2007-04-24 22:24:01 +00:00
Ian Lance Taylor 1965dd3a1f * flow.c (elim_reg_cond): Handle a comparison of a subreg.
From-SVN: r124122
2007-04-24 21:02:21 +00:00
Simon Martin 438d798f12 re PR middle-end/25923 ([gfortran] garbled diagnostics with -O -Wuninitialized)
2007-04-24  Simon Martin  <simartin@users.sourceforge.net>

	PR diagnostic/25923
	* tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
	diagnostic message is being built.
	* tree-pretty-print.c (dump_generic_node): Only write the formatted text
	into BUFFER's stream if we are not building a diagnostic message.
	* toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
	dump_generic_node.
	* Makefile.in (toplev.o): Depend on tree-pass.h.

From-SVN: r124121
2007-04-24 20:52:16 +00:00
Ian Lance Taylor 4df28528f6 re PR tree-optimization/31602 (Overflow warning causes GDB -Werror build failure)
./:	PR tree-optimization/31602
	* tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
	conditionals in the copied loop header.
	* tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
	warnings if TREE_NO_WARNING is set.
	* doc/invoke.texi (Warning Options): Clarify that
	-Wstrict-overflow does not warn about loops.
testsuite/:
	PR tree-optimization/31602
	* gcc.dg/Wstrict-overflow-11.c: We no longer issue a warning.

From-SVN: r124120
2007-04-24 20:44:45 +00:00
Janis Johnson 2d83f07035 rs6000.c (function_arg_advance): For 32-bit ELF ABI...
* config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
	expand on the comment about _Decimal128 arguments and check the
	integer result of the modulus operation; for 64-bit ELF ABI, ensure
	that _Decimal128 argument uses even/odd register pair.
	(function_arg): For 32-bit ELF ABI, expand on the comment about
	_Decimal128 arguments and check the integer result of the modulus
	operation; for 64-bit ELF ABI, ensure that _Decimal128 argument
	uses even/odd register pair.
testsuite/
	* gcc.target/powerpc/ppc32-abi-dfp-1.c: New test.
	* gcc.target/powerpc/ppc64-abi-dfp-1.c: New test.

From-SVN: r124116
2007-04-24 19:29:34 +00:00
Hui-May Chang b883ab57fa reload1.c (merge_assigned_reloads): Do not merge a RELOAD_OTHER instruction with a RELOAD_FOR_OPERAND_ADDRESS...
2007-04-24  Hui-May Chang <hm.chang@apple.com>

	* reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
	instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.

	* gcc.target/i386/reload-1.c. New.

From-SVN: r124115
2007-04-24 19:17:22 +00:00
Olga Golovanevsky 8173746830 fix for PR31617
From-SVN: r124109
2007-04-24 15:54:18 +00:00
Richard Henderson 5fb54b9198 libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from IS_IBM_EXTENDED.
* libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from 
        IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
        * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
        looking for non-zero bits shifted out.  Avoid a recursive call
        when constructing the scalar.
        (__floatundisf): Likewise.

From-SVN: r124106
2007-04-24 08:28:21 -07:00
Nathan Froyd cd0a10dd99 dwarf2out.c (field_byte_offset): Move the existing logic under the control of PCC_BITFIELD_TYPE_MATTERS and just...
* dwarf2out.c (field_byte_offset): Move the existing logic
	under the control of PCC_BITFIELD_TYPE_MATTERS and just use
	the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.

From-SVN: r124104
2007-04-24 14:45:08 +00:00
Andreas Krebbel c9f599914f re PR target/31641 (ICE in s390_expand_setmem, at config/s390/s390.c:3618)
2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>

	PR target/31641
	* config/s390/s390.c (s390_expand_setmem): Don't ICE for constant length
	argument of 0 for memset.
	(s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
	unsigned shift instead of the signed variant.

2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>

	PR target/31641
	* gcc.c-torture/compile/pr31641.c: New testcase.

From-SVN: r124099
2007-04-24 12:08:05 +00:00
Andreas Krebbel 142cd70f50 s390.md ("*cmp<mode>_ccs_0_ibm", [...]): Insn definitions removed.
2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
	"fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
	"floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
	"*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
	"*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
	"*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
	"*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
	"*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
	"*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
	("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
	"truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
	"mul<mode>3", "div<mode>3"): Insn definitions added.
	("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
	"fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
	to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
	("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
	"trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
	"sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
	("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
	* config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
	TARGET_FLOAT_FORMAT): Macro definitions removed.
	(FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
	* config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
	z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
	(s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
	(s390_gen_rtx_const_DI): Function removed.
	* config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.

From-SVN: r124097
2007-04-24 08:25:28 +00:00
Richard Sandiford aeed4133ae optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions over an external ffs function.
gcc/
	* optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
	over an external ffs function.

From-SVN: r124096
2007-04-24 06:46:37 +00:00
Richard Sandiford 7f9844caf1 2007-xx-xx Chao-ying Fu <fu@mips.com> Richard Sandiford <richard@nildram.co.uk>
gcc/
2007-xx-xx  Chao-ying Fu  <fu@mips.com>
	    Richard Sandiford  <richard@nildram.co.uk>

	* doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
	* optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
	(smadd_widen_optab, umadd_widen_optab): Define.
	* optabs.c (init_optabs): Initialize smadd_widen_optab and
	umadd_widen_optab.
	* genopinit.c (optabs): Fill in smadd_widen_optab and
	umadd_widen_optab.
	* expr.c (expand_expr_real_1): Try to use smadd_widen_optab
	and umadd_widen_optab to implement multiply-add sequences.
	* config/mips/mips.md (*<su>mul_acc_di): Rename to...
	(<u>maddsidi4): ...this.  Extend condition to include
	GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
	of operand 0 to "ka" and use the three-operand form of madd<u>
	for TARGET_DSPR2.
	* config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
	to define_expands.
	* config/mips/constraints.md (ka): New register constraint.

gcc/testsuite/
2007-xx-xx  Richard Sandiford  <richard@nildram.co.uk>

	* gcc.target/mips/madd-1.c, gcc.target/mips/madd-2.c,
	* gcc.target/mips/madd-3.c, gcc.target/mips/madd-4.c,
	* gcc.target/mips/maddu-1.c, gcc.target/mips/maddu-2.c,
	* gcc.target/mips/maddu-3.c, gcc.target/mips/maddu-4.c: New tests.

From-SVN: r124095
2007-04-24 05:51:57 +00:00
Jan Hubicka ec9ac2bc42 Revert:
2007-04-23  Jan Hubicka  <jh@suse.cz>
	* function.c (init_function_start): Don't init line number info.
	(expand_function_end): Update.
	(reset_block_changes, record_block_change, finalize_block_changes,
	check_block_change, free_block_changes): Kill.
	* function.h (reset_block_changes, record_block_change,
	finalize_block_changes, check_block_change, free_block_changes): Remove
	prototypes.
	(struct function): Remove ib_boundaries_block.
	* emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
	Use curr_insn_locator to initialize locator.
	(emit_line_note): Remove.
	* cfgexpand.c (expand_gimple_cond_expr): Update.
	(construct_exit_block): Likewise.
	(tree_expand_cfg): Initialize/finalize locators.
	* expr.c (expand_expr_real): Update.
	* cfglayout.c (line_locators_locs, line_locators_lines,
	file_locators_locs, file_locators_files): Remove.
	(set_block_levels): Move to cfgexpand.c.
	(insn_locators_initialize): Remove.
	(pass_insn_locators_initialize): Remove.
	(locations_locators_locs, locations_locators_vals): New static vars.
	(curr_location, last_location, curr_block, last_block, curr_rtl_loc):
	Likewise.
	(insn_locators_alloc, insn_locators_finalize,
	set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
	New functions.
	(locator_location): New.
	(locator_line, locator_file): Rewrite.
	* rtl.h (emit_line_note): Kill.
	(insn_locators_alloc, insn_locators_finalize,
	set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
	Declare.
	* tree-inline.c (initialize_cfun): Do not initialize
	ib_boundaries_block.
	* passes.c (pass_insn_locators_initialize): Remove.

From-SVN: r124094
2007-04-24 00:05:57 +00:00