PR tree-optimization/21846
* tree-cfg.c (replace_uses_by): Update information stored at loops.
* tree-flow.h (substitute_in_loop_info): Declare.
* tree-scalar-evolution.c (initialize_scalar_evolutions_analyzer):
Ensure that chrec_dont_know and chrec_known have a type.
* tree-ssa-loop-niter.c (substitute_in_loop_info): New function.
From-SVN: r100631
* tree-flow.h (stmt_ann_d): Move aux to ...
(tree_ann_common_d): ... here.
* tree-ssa-loop-im.c (LIM_DATA, determine_invariantness_stmt,
move_computations_stmt, schedule_sm): Update references to
aux.
* tree-vectorizer.h (set_stmt_info, vinfo_for_stmt): Likewise.
* tree-vect-transform.c (vect_create_index_for_vector_ref): Update
call to set_stmt_info.
(vect_transform_loop): Likewise.
* tree-vectorizer.c (new_loop_vec_info, destroy_loop_vec_info):
Likewise.
* tree-vect-analyze.c (vect_analyze_scalar_cycles): Made void instead of
bool.
(vect_mark_relevant): Takes two additional arguments - live_p and
relevant_p. Set RELEVANT_P and LIVE_P according to these arguments.
(vect_stmt_relevant_p): Differentiate between a live stmt and a
relevant stmt. Return two values = live_p and relevant_p.
(vect_mark_stmts_to_be_vectorized): Call vect_mark_relevant and
vect_stmt_relevant_p with additional arguments. Phis are no longer
put into the worklist (analyzed seperately in analyze_scalar_cycles).
(vect_determine_vectorization_factor): Also check for LIVE_P, because a
stmt that is marked as irrelevant and live, cause it's only used out
side the loop, may need to be vectorized (e.g. reduction).
(vect_analyze_operations): Examine phis. Call
vectorizable_live_operation for for LIVE_P stmts. Check if
need_to_vectorize.
(vect_analyze_scalar_cycles): Update documentation. Don't fail
vectorization - just classify the scalar cycles created by the loop
phis. Call vect_is_simple_reduction.
(vect_analyze_loop): Call to analyze_scalar_cycles moved earlier.
* tree-vect-transform.c (vect_create_index_for_vector_ref): Update
call to set_stmt_info.
(vect_get_vec_def_for_operand): Code reorganized - the code that
classifies the type of use was factored out to vect_is_simple_use.
(vectorizable_store, vect_is_simple_cond): Call vect_is_simple_use with
additional arguments.
(vectorizable_assignment): Likewise. Also make sure the stmt is relevant
and computes a loop_vec_def.
(vectorizable_operation, vectorizable_load, vectorizable_condition):
Likewise.
(vectorizable_live_operation): New.
(vect_transform_stmt): Handle LIVE_P stmts.
* tree-vectorizer.c (new_stmt_vec_info): Initialize the new fields
STMT_VINFO_LIVE_P and STMT_VINFO_DEF_TYPE.
(new_loop_vec_info, destroy_loop_vec_info): Also handle phis.
(vect_is_simple_use): Determine the type of the def and return it
in a new function argument. Consider vect_reduction_def and
vect_induction_def, but for now these are not supported.
(vect_is_simple_reduction): New. Empty for now.
* tree-vectorizer.h (vect_def_type): New enum type.
(_stmt_vec_info): Added new fields - live and _stmt_vec_info.
(STMT_VINFO_LIVE_P, STMT_VINFO_DEF_TYPE): New accessor macros.
(vect_is_simple_use): New arguments added to function declaration.
(vect_is_simple_reduction): New function declaration.
(vectorizable_live_operation): New function declaration.
* tree-vect-analyze.c (vect_can_advance_ivs_p): Add debug printout.
(vect_can_advance_ivs_p): Likewise.
* tree-vect-transform.c (vect_update_ivs_after_vectorizer): Likewise.
From-SVN: r100617
* reg-stack.c (struct block_info_def): Correct grammar typo.
(compensate_edge): Clean-up. Perform as little work as possible
when src and dest stacks match. Avoid modifying block_info.
Reorder and simplify assertion checks. Avoid unnecessary copying
of regstack structure.
(convert_regs_1): Set the done flag here...
(convert_regs_2): ... instead of here.
From-SVN: r100602
2005-06-04 Dale Johannesen <dalej@apple.com>
* config/rs6000/rs6000.c (no_global_regs_above): New.
(rs6000_emit_prologue): Use it; cosmetic formatting fixes.
(rs6000_emit_epilogue): Use it; cosmetic formatting fixes.
(rs6000_conditional_register_usage): Don't put Darwin PIC
register in global_regs.
(rs6000_stack_info): Don't set lr_save_p just because Darwin
PIC reg used.
(rs6000_emit_prologue): Save LR in R0 around Darwin PIC setup,
if not done by lr_save_p.
* config/rs6000/rs6000.md (insnv1_internal1): Back out 05-18 patch.
Use rotate instead of ashift.
(call_indirect_nonlocal_sysv): Prefer CTR to LR.
(call_value_indirect_nonlocal_sysv): Ditto.
From-SVN: r100601
* cgraphunit.c (cgraph_reset_node): Break out from ...
(cgraph_finalize_function): ... here.
(cgraph_finalize_compilation_unit): Reset nodes where backend
removed the body.
From-SVN: r100599
2005-06-04 Anthony Green <green@redhat.com>
* java/net/URLClassLoader.java: import gnu.gcj.Core,
and gnu.java.net.protocol.core.CoreInputStream.
(CureURLLoader): New class.
(CoreResource): New class.
(addURLImpl): Add special treatment for the "core" protocol.
* gnu/gcj/natCore.cc (find): New method.
* gnu/gcj/Core.java (find): New method.
From-SVN: r100582
fortran/
* match.c (match_forall_iterator): Don't immediately give error if '='
is not followed by an expression.
testsuite/
* gfortran.dg/forall_1.f90: New test.
Co-Authored-By: Erik Edelmann <erik.edelmann@iki.fi>
From-SVN: r100580
2005-06-03 Sebastian Pop <pop@cri.ensmp.fr>
* tree-data-ref.c (compute_self_dependence): New function.
(compute_all_dependences): Use it.
From-SVN: r100565
PR c++/21853
* typeck.c (casts_away_constness_r): Do not drop cv-qualifiers on
the pointed-to type for a pointer-to-member.
PR c++/21853
* g++.dg/expr/static_cast6.C: New test.
From-SVN: r100560
* tree-ssa-dom.c (record_edge_info): Use last_basic_block to
allocate info array.
* tree-vrp.c (extract_range_from_unary_expr): Set resulting
range to varying in cast expressions that change
TYPE_PRECISION.
testsuite/ChangeLog
* gcc.dg/tree-ssa/vrp14.c: New test.
From-SVN: r100554