PR tree-optimization/32243
* tree-vect-transform.c (vectorizable_type_promotion): Move check
for ncopies after ratio check between nunits_out and nunits_in.
(vectorizable_type_demotion): Remove single-use variable "scalar_type".
testsuite/ChangeLog:
PR tree-optimization/32243
* gcc.dg/vect/vect.exp: Add support for -O3 tests. Reset default
flags for -Os tests.
* gcc.dg/vect/03-vect-pr32243.c: New test.
From-SVN: r125567
PR tree-optimization/32224
* tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
vectorization upon a non GIMPLE_MODIFY_STMT.
From-SVN: r125566
gcc/
2007-06-07 Simon Martin <simartin@users.sourceforge.net>
PR c++/30759
* c-common.h (flag_cpp0x): Replaced by...
(cxx_dialect): ... this new variable specifying the C++ dialect that
is used.
* c-common.c (flag_cpp0x): Removed.
(cxx_dialect): Defined.
* c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
cxx_dialect.
* c-opts.c (c_common_post_options): Likewise.
(set_std_cxx98): Set cxx_dialect to cxx98.
(set_std_cxx0x): Set cxx_dialect to cxx0x.
gcc/cp/
2007-06-07 Simon Martin <simartin@users.sourceforge.net>
PR c++/30759
* decl.c (check_initializer): Report an error when a brace enclosed
initializer is used for a non-aggregate type in C++98.
(redeclaration_error_message): Rewrote flag_cpp0x in terms of
cxx_dialect.
(grokdeclarator): Likewise.
(move_fn_p): Likewise.
* typeck.c (check_return_expr): Likewise.
* call.c (reference_binding): Likewise.
* error.c (cp_cpp_error): Likewise.
* pt.c (check_default_tmpl_args): Likewise.
(tsubst): Likewise.
* lex.c (init_reswords): Likewise.
* parser.c (p_parser_primary_expression): Likewise.
(TOKEN_PRECEDENCE): Likewise.
(cp_parser_init_declarator): Likewise.
(cp_parser_ptr_operator): Likewise.
(cp_parser_parameter_declaration): Likewise.
(cp_parser_enclosed_template_argument_list): Likewise.
(cp_parser_skip_to_end_of_template_parameter_list): Likewise.
(cp_parser_next_token_ends_template_argument_p): Likewise.
gcc/testsuite/
2007-06-07 Simon Martin <simartin@users.sourceforge.net>
PR c++/30759
* g++.dg/init/brace6.C: New test.
From-SVN: r125539
PR tree-optimization/32220
* tree-predcom.c (eliminate_temp_copies): Handle the case that loop
phi node is reached before defining statement.
* gfortran.dg/predcom-2.f: New testcase.
From-SVN: r125531
2007-06-06 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR tree-opt/32231
* tree-vect-transform.c (vectorizable_call): Call update_stmt
after changing the right hand side of the assignment.
2007-06-06 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR tree-opt/32231
* gcc.target/i386/vectorize4.c: New test.
From-SVN: r125521
* tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
coding conventions.
(add_key): Likewise.
* tree-ssa.c (init_tree_ssa): Use type safe memory macros.
* tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
variable names.
* tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory macros.
(add_cost_one_coalesce): Likewise.
* tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
variable names. Rename orig to orig_name for consistency.
* tree-ssa-dom.c (dom_thread_across_edge): Cast according to the coding
conventions.
(cprop_into_successor_phis): Avoid using C++ keywords as variable names.
(record_equivalences_from_stmt): Likewise.
* tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
the coding conventions.
(memory_ssa_name_same): Likewise.
(dse_optimize_stmt): Likewise.
(dse_record_phis): Likewise.
(dse_finalize_block): Likewise.
* tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
keywords as variable names.
(may_move_till): Cast according to the coding conventions.
(force_move_till_expr): Avoid using C++ keywords as variable names.
(force_move_till): Cast according to the coding conventions.
(memref_hash): Likewise.
(memref_eq): Likewise.
(gather_mem_refs_stmt): Likewise.
* tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid using C++
keywords as variable names.
(idx_find_step): Cast according to the coding conventions.
(idx_record_use): Likewise.
(find_depends): Likewise.
(prepare_decl_rtl): Likewise.
(mbc_entry_hash): Likewise.
(mbc_entry_eq): Likewise.
* tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
(simplify_replace_tree): Avoid using C++ keywords as variable names.
(idx_infer_loop_bounds): Cast according to the coding conventions.
* tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
* tree-ssa-math-opts.c (occ_new ): Likwise.
* tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
macros.
* tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as variable
names.
(add_use_op): Likewise.
(add_vop): Likewise.
(add_vuse_op): Likewise.
(add_vdef_op): Likewise.
(get_expr_operands): Likewise.
(push_stmt_changes): Use type safe memory macros.
* tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
keywords as variable names.
(conditional_replacement): Likewise.
(minmax_replacement): Likewise.
(abs_replacement): Likewise.
* tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
coding conventions.
(insert_fake_stores): Avoid using C++ keywords as variable names.
* tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
conventions.
* tree-ssa-structalias.c (heapvar_lookup): Likewise.
(heapvar_insert): Use type safe memory macros.
(new_var_info): Cast according to the coding conventions.
(new_constraint): Likewise.
(remove_preds_and_fake_succs): Use type safe memory macros.
* tree-ssa-threadupdate.c (thread_block): Cast according to the coding
conventions.
(thread_single_edge): Likewise.
From-SVN: r125504
2007-06-06 Eric Christopher <echristo@apple.com>
* config/i386/i386.c (override_options): Move handling
of TARGET_SUBTARGET* earlier.
From-SVN: r125497
* haifa-sched.c (restore_bb_notes): Clear bb field of the notes
emited outside of basic block.
* cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
the created blocks.
* rtl.h (delete_insn_chain): Declaration changed.
* cfgrtl.c (delete_insn_chain): Add option to clear bb field for
non-removed insns.
(rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
(delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
to delete_insn_chain.
(rtl_verify_flow_info_1): Verify that the insns in header and footer
do not have bb field set.
(rtl_verify_flow_info): Verify that insns between basic blocks do not
have bb field set.
* recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
* cfgcleanup.c (try_optimize_cfg): Ditto.
From-SVN: r125492
* lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
(lambda_body_vector_new): Use type safe memory macros.
(lambda_linear_expression_new): Likewise.
(lambda_loopnest_new): Likewise.
(lambda_lattice_new): Likewise.
(replace_uses_equiv_to_x_with_y): Cast according to the coding
conventions. Use type safe memory macros.
* lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
(lambda_body_vector_s): Likewise.
* lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
* lambda-trans.c (lambda_trans_matrix_new): Likewise.
From-SVN: r125491
2007-06-06 Richard Guenther <rguenther@suse.de>
* tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
if we need to schedule cfg_cleanup.
(tree_ssa_forward_propagate_single_use_vars): Do so.
From-SVN: r125490
./: * fold-const.c (merge_ranges): If range_successor or
range_predecessor fail, just return 0.
testsuite/:
* g++.dg/conversion/enum1.C: New test.
From-SVN: r125486
* config/i386/i386.c (enum pta_flags): Move out of struct scope...
(struct pta): ...from here. Change flags to unsigned to avoid excessive
casting (as it is used as a bit mask).
(override_options): Add casts according to the coding convenventions.
(x86_64_elf_unique_section): Likewise.
(examine_argument): Avoid using C++ keywords as variable names.
(construct_container): Likewise.
(legitimize_pic_address): Likewise.
(get_dllimport_decl): Cast according to the coding conventions. Use
type safe memory macros.
(legitimize_address): Cast according to the coding conventions.
(emit_i387_cw_initialization): Corrected the type of slot to enum
ix86_stack_slot.
(ix86_init_machine_status): Use type safe memory macros.
(bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
(bdesc_pcmpistr): Likewise.
(bdesc_crc32): Likewise.
(bdesc_sse_3arg): Likewise.
(bdesc_2arg): Likewise.
(bdesc_1arg): Likewise.
(ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
(ix86_expand_sse_pcmpistr): Likewise.
(ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
(ix86_builtin_vectorized_function): Change the type of fn to unsigned
int to match the langhook definition.
(ix86_builtin_conversion): Change the type of code to unsigned init to
match the langhook definition.
(ix86_preferred_reload_class): Avoid using C++ keywords as variable
names.
(ix86_preferred_output_reload_class): Likewise.
(ix86_cannot_change_mode_class): Likewise.
(ix86_memory_move_cost): Likewise.
(ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
avoid excessive casting later on.
(x86_output_mi_thunk): Avoid using C++ keywords as variable names.
From-SVN: r125357
* config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
as flags setting insn.
(sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
* config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
(UNSPEC_ROUND): New.
("sse4_1_round<mode>2"): New insn pattern.
("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
SSE4.1 targets.
("floor<mode>2"): Rename from floordf2 and floorsf2. Macroize
expander using SSEMODEF mode macro. Expand using
"sse4_1_round<mode>2" pattern for SSE4.1 targets.
("ceil<mode>2"): Rename from ceildf2 and ceilsf2. Macroize
expander using SSEMODEF mode macro. Expand using
"sse4_1_round<mode>2" pattern for SSE4.1 targets.
("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2. Macroize
expander using SSEMODEF mode macro. Expand using
"sse4_1_round<mode>2" pattern for SSE4.1 targets.
* config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
UNSPEC_ROUND instead of UNSPEC_ROUNDP.
("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
UNSPEC_ROUNDS.
From-SVN: r125356
* lambda.h (build_linear_expr): New.
* lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
Use build_linear_expr, call fold and force_gimple_operand.
(lambda_loopnest_to_gcc_loopnest): Check that there is
something to insert.
* testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
Co-Authored-By: Sebastian Pop <sebpop@gmail.com>
From-SVN: r125355
PR tree-optimization/32215
* tree-vectorizer.c (supportable_widening_operation): Return false
for unsupported FIX_TRUNC_EXPR tree code.
(supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
From-SVN: r125343
* config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
register on SPE targets. Change documentation to reflect
reality.
* config/rs6000/rs6000.c (rs6000_conditional_register_usage):
Change FIXED_SCRATCH to 14 and document why we're keeping r14
out of the register allocation pool.
(rs6000_reg_live_or_pic_offset_p): New function.
(rs6000_emit_prologue): Move the actual saving of LR up to free
r0 for holding r11. Split saving of SPE 64-bit registers into
its own case. Ensure that offsets will always be in-range for
'evstdd' by using r11 as a scratch register to point at the start
of the SPE save area. Save r11 if necessary, as it is the static
chain register.
(rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
into its own case. Ensure that offsets will always be in-range
for 'evldd' by using r11 as a scratch register to point at the
start of the SPE save area. Also adjust r11 when restoring
the stack pointer to compensate for pre-loading r11.
From-SVN: r125340
./: * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
(extract_range_from_assert): Set TREE_NO_WARNING when creating an
expression.
(test_for_singularity): Likewise.
testsuite/:
* gcc.dg/Wstrict-overflow-19.c: New test.
From-SVN: r125334
* config/i386/predicates/md (reg_not_xmm0_operand): New predicate.
(nonimm_not_xmm0_operand): Ditto.
* config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
as operand[0] and operand[1] predicate. Use "nonimm_not_xmm0_operand"
as operand[2] predicate. Require "z" class XMM register for
operand[3]. Adjust asm template.
("sse4_1_blendvpd"): Ditto.
("sse4_1_pblendvb"): Ditto.
* config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
force op2 into xmm0 register for variable blend instructions.
From-SVN: r125327
./: * tree-vrp.c (adjust_range_with_scev): When loop is not expected
to overflow, reduce overflow infinity to regular infinity.
(vrp_var_may_overflow): New static function.
(vrp_visit_phi_node): Check vrp_var_may_overflow.
testsuite/:
* gcc.dg/Wstrict-overflow-18.c: New test.
From-SVN: r125319
* config/m68k/m68k.c (override_options): Don't override
REAL_MODE_FORMAT.
* config/m68k/m68k-modes.def (SF, DF): Define to use
motorola_single_format and motorola_double_format, resp.
* real.c (motorola_single_format): Renamed from
coldfire_single_format.
(motorola_double_format): Renamed from coldfire_double_format.
(encode_ieee_extended): Generate a proper canonical NaN image
respecting canonical_nan_lsbs_set.
(ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
true.
* real.h: Adjust declarations.
From-SVN: r125295