* ifcvt.c (struct noce_if_info): Add comments to the fields.
Remove the b_unconditional field.
(noce_try_sign_mask): Do not look at b_unconditional.
(noce_process_if_block): Do not use merge_if_blocks. Update
the CFG here. Do not set b_unconditional.
(cond_move_process_if_block): Likewise.
(find_cond_trap): Likewise.
(check_cond_move_block): Require simple jump insns at the end
of the basic block.
From-SVN: r120686
* config/mcore/predicates.md (mcore_general_movesrc_operand): Accept CONSTs.
(mcore_general_movdst_operand): Do not accept CONST_INTs.
(mcore_arith_K_S_operand): Run the test for the S constraint not the test for the M constraint.
(mcore_addsub_operand): Do not accept integer values that are larger than 32 bits.
* config/mcore/mcore.md: Remove unused constraints from split.
(andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
(addsi3): Likewise.
(allocate_stack): Likewise.
* config/mcore/mcore.c (mcore_print_operand): Restrict output of P operands to 32 bits.
(mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an INTVAL.
(mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
mcore_const_ok_for_inline, mcore_const_trick_uses_not,
try_constant_tricks, mcore_num_ones, mcore_num_zeros,
mcore_output_bclri, mcore_output_andn, output_inline_const,
mcore_output_move, mcore_output_movedouble): Likewise.
(mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
(output_inline_const): Likewise.
(output_inline_const): Fix format strings used in sprintf statements.
* config/mcore/mcore-protos.h: Update prototypes for changed functions in mcore.c.
* config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to HOST_WIDE_INT and not int.
(CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
CONST_OK_FOR_N): Likewise.
(LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
(GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold an INTVAL.
From-SVN: r120669
* tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
(tree_transform_and_unroll_loop): New.
* tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
Declare.
From-SVN: r120650
./: * fold-const.c (fold_comparison): Fold comparisons like (x *
1000 < 0) to (x < 0).
testsuite/:
* gcc.dg/fold-compare-2.c: New test case for fold_comparison.
From-SVN: r120649
* spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
for SAVE_NONLOCAL and Pmode for any other save level.
* spu-protos.h (spu_restore_stack_block): Declare.
* spu.md (save_stack_block): Remove.
(restore_stack_block): Call spu_restore_stack_block.
* spu.c (spu_restore_stack_block): New function.
(spu_expand_epilogue): Remove old comment.
Co-Authored-By: Ben Elliston <bje@au.ibm.com>
From-SVN: r120633
PR tree-optimization/30322
* tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
(cand_value_at): Return the value as aff_tree.
(may_eliminate_iv): Convert the bound from aff_tree to tree.
* tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
aff_combination_mult): New functions.
(aff_combination_add): Use aff_combination_add_cst.
(aff_combination_convert): Allow conversions to a wider type.
(tree_to_aff_combination): Handle BIT_NOT_EXPR.
* tree-affine.h (aff_combination_mult): Declare.
* gcc.dg/tree-ssa/loop-21.c: New test.
From-SVN: r120630
gcc/
2007-01-09 Carlos O'Donell <carlos@codesourcery.com>
* doc/tm.texi: Update documentation to reflect reality of exec
and start file search behaviours. Update copyright year.
* doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
header file directories.
From-SVN: r120622
2007-01-08 Richard Guenther <rguenther@suse.de>
* tree.h (build_int_cst_wide_type): Export.
* tree.c (build_int_cst_wide_type): New function.
(build_int_cst_wide): Fix comment.
* builtins.c (fold_builtin_object_size): Use build_int_cst
to build -1 or 0 of the correct type. Use fit_double_type
to check for overflow.
* fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
to build the mask.
(decode_field_reference): Likewise.
(all_ones_mask_p): Likewise.
(native_interpret_int): Use build_int_cst_wide_type.
(fold_binary): Use build_int_cst_type to build an all-ones
value.
* stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
java/
* lex.c (do_java_lex): Use build_int_cst_wide_type.
* jcf-parse.c (get_constant): Likewise.
cp/
* cvt.c (cp_convert_to_pointer): Use build_int_cst_type.
ada/
* cuintp.c (build_cst_from_int): Use built_int_cst_type.
* trans.c (gnat_to_gnu): Likewise.
From-SVN: r120596
* genautomata.c (STATS_OPTION): New option.
(stats_flag): New flag.
(gen_automata_option): Handle it.
(initiate_automaton_gen): Ditto.
(write_automata): Output statistics only if stats_flag is
set. Likewise, output time statistics only if time_flag is set.
* doc/md.texi (Processor pipeline description): Document new flag.
From-SVN: r120594
2007-01-08 Richard Guenther <rguenther@suse.de>
* builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
* tree.c (build_int_cst_type): Likewise.
(size_in_bytes): Don't call force_fit_type on the result.
(int_fits_type_p): Use fit_double_type.
* fold-const.c (fit_double_type): New function.
(force_fit_type): Use it.
* tree.h (fit_double_type): Export.
From-SVN: r120593
2007-01-08 Richard Guenther <rguenther@suse.de>
* tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
of offset to build the index.
* tree-pretty-print.c (dump_generic_node): Don't build negated
const just for printing.
* c-pretty-print.c (pp_c_integer_constant): Likewise.
* builtins.c (fold_builtin_int_roundingfn): Check if result
fits the type by using force_fit_type and comparing the result.
* predict.c (predict_loops): Use compare_tree_int for comparison.
* tree.c (build_int_cst): Fall back to integer_type_node for
NULL_TREE type.
(build_int_cst_wide): Assert type is non-null.
fortran/
* trans-io.c (transfer_array_desc): Use build_int_cst instead
of build_int_cstu.
From-SVN: r120586
2007-01-08 Richard Guenther <rguenther@suse.de>
PR tree-optimization/23603
* tree-vrp.c (set_value_range_to_truthvalue): New function.
(extract_range_from_binary): Fall back to truthvalue instead of
varying for TRUTH_*_EXPR.
(extract_range_from_comparison): Fall back to truthvalue instead of
varying.
(vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
if all visited PHI values were constant.
* gcc.dg/tree-ssa/vrp31.c: New testcase.
* gcc.dg/tree-ssa/vrp32.c: Likewise.
From-SVN: r120578
* tree-pas.h (TODO_remove_function): New flag.
(TODO_update*): Renumber.
(pass_ipa_increase_alignment,
pass_ipa_function_and_variable_visibility): New passes.
* cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
(cgraph_function_and_variable_visibility): Move to ipa.c
(cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
cgraph_increase_alignment.
* ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
(cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
calling tree-inline.
(cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
(pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
* tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
(gate_increase_alignment): New function.
(pass_ipa_increase_alignment): New pass.
* ipa.c: Inline tree-pass.h and timevar.h
(function_and_variable_visibility): Move here from cgraphunit.c
* tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
* passes.c (init_optimization_passes): Add the two new passes.
(execute_todo): Handle cgraph_remove_functions.
From-SVN: r120576
gcc/
* c.opt: Add -flax-vector-conversions.
* c-typeck.c (convert_for_assignment): Pass flag to
vector_types_convertible_p to allow emission of note.
(digest_init): Likewise.
(comptypes_internal): Use vector_types_convertible_p.
* c-opts.c: Handle -flax-vector-conversions.
* c-common.c (flag_lax_vector_conversions): New.
(vector_types_convertible_p): Unless -flax-vector conversions
has been passed, disallow conversions between vectors with
differing numbers of subparts and/or element types. If such
a conversion is disallowed, possibly emit a note on the first
occasion only to inform the user of -flax-vector-conversions.
The new last argument specifies this.
* c-common.h (flag_lax_vector_conversions): New.
(vector_types_convertible_p): Add extra argument.
* config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
char_type_node for V*QI type vectors.
* config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
Update to satisfy new typechecking rules.
* config/rs6000/altivec.h (vec_cmple): Use vec_cmpge.
* doc/invoke.texi (C Dialect Options): Document
-flax-vector-conversions.
gcc/cp/
* call.c (standard_conversion): Pass flag to
vector_types_convertible_p to disallow emission of note.
* typeck.c (convert_for_assignment): Pass flag to
vector_types_convertible_p to allow emission of note.
(ptr_reasonably_similar): Pass flag to vector_types_convertible_p
to disallow emission of note.
gcc/testsuite/
* gcc.target/i386/20020531-1.c: Use "char" not "unsigned char"
in __v8qi typedef.
* gcc.target/powerpc/altivec-vec-merge.c (foo): Add casts.
* gcc.dg/simd-1.c: Update dg-error directives to reflect new
compiler behaviour.
* gcc.dg/simd-5.c: Likewise.
* gcc.dg/simd-6.c: Likewise.
* g++.dg/conversion/simd1.C: Likewise.
* g++.dg/conversion/simd3.C: Likewise.
* g++.dg/ext/attribute-test-2.C (data): Add "vs" member.
(main): Use it.
From-SVN: r120572
PR tree-optimization/29877
gcc/
* tree-ssa-ter.c (is_replaceable_p): Deem assignments with
a register variable on the RHS to not be replaceable.
gcc/testsuite/
* gcc.dg/pr16194.c: Skip test entirely if we don't know the
name of a hard register for the target concerned. Adjust dg-error
directives to cope with new behaviour of TER.
From-SVN: r120571
* tree-pass.h (pass_build_cgraph_edges): Declare.
* cgraphunit.c (record_refernece): Move to cgraphbuild.c
(visited_nodes): Remove.
(cgraph_create_edges): Move to cgraphbuild.c; rename to
build_cgrpah_edges; make visited_nodes local.
(cgraph_process_new_functions): DO not call initialize_inline_failed.
(record_references_in_initializer): Move to cgraphbuild.c
(initialize_inline_failed, rebuild_cgraph_edges,
pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
(verify_cgraph_node): Make visited_nodes local.
(cgraph_analyze_function): Do not call cgraph_create_edges and
initialize_inline_failed.
(cgraph_expand_function): Do not call cgraph_lower_function;
assert that function is already lowered.
* Makefile.in (cgraphbuild.o): New.
* passes.c (init_optimization_passes): Add pass_build_cgraph_edges
at the end of lowering passes.
From-SVN: r120527
* ifcvt.c (cond_move_convert_if_block): New function, code
factored out from...
(cond_move_process_if_block): ...here. Call the new function
on the THEN and ELSE blocks.
(merge_if_block): Do not copy global_live_at_end, merge_blocks
already takes care of this.
From-SVN: r120524