* predict.c (struct block_info_def): Remove nvisited.
(propagate_freq): Use EDGE_DFS_BACK to detect irreducible regions.
(estimate_bb_frequencies): Call mark_dfs_back_edges.
* i386.c (ix86_agi_depdendant): Lea causes AGI only on the Pentium
(ix86_adjust_cost): Teach scheduler that latency to load operand can
be masked.
From-SVN: r44921
* predict.c (dump_prediction): New argument "USED".
(combine_predictions_for_insn): Determine the used heuristics,
output the case no heuristic applied.
* predict.def (PRED_DS_THEORY, PRED_NO_HEURISTIC): New.
From-SVN: r44853
* basic-block.h (EDGE_FREQUENCY): New macro.
* bb-reorder (fixup_reorder_chain): Set counts and frequencies
for new BB/edges.
* flow.c (find_sub_basic_blocks): Likewise.
(try_crossjump_to_edge): Likewise; use EDGE_FREQUENCY
(redirect_edge_and_branch): Use EDGE_FREQUENCY.
* predict.c (DEF_PREDICTOR): New argument FLAGS.
(HITRATE): New macro.
(PRED_FLAG_FIRST_MATCH): New constant.
(predictor_info): New field flgags.
(combine_predictions_for_insn): Use DS theory to combine
probabilities; set the edge probabilities when finished.
(estimate_probability): Avoid duplicated matches
of LOOP_BRANCH heuristics for nested loops; update comment.
* predict.def: Add flags for each prediction, set probabilities
according to B&L paper.
* predict.h (DEF_PREDICTOR): New argument FLAGS.
* profile.c (compute_branch_probabilities): Cleanup way the edge
probabilities are computed and REG_BR_PROB notes are dropped; if
values does not match, emit error.
(init_branch_prob): Do error instead of warning when profile driven
feedback is missing or corrupt.
From-SVN: r44439
* unroll.c: Include predict.h.
(unroll_loop): Drop prediction notes on preconditioning.
* predict.def (PRED_LOOP_PRECONDITIONG, PRED_LOOP_CONDITION):
New; add comments on the others.
* Makefile.in: (unroll.o): Add dependancy on predict.h.
* loop.c (strength_reduce): Fix branch prediction.
* stmt.c (emit_case_nodes): Optimize test whether index is in given
interval.
* predict.c (estimate_probability): Do not bail out early
when note is present.
(combine_predictions_for_insn): Fix note removal code.
From-SVN: r43441
* loop.c: Include predict.h
(strength_reduce): Drop branch prediction note in case
number of iterations is known.
* predict.def (PRED_LOOP_ITERATIONS): new.
* Makefile.in (loop.o): Add dependancy on predict.h
From-SVN: r43251
* predict.def: New file.
* predict.h: New file.
* predict.c: Include predict.h.
(predictor_info): New structure and array.
(predict_edge, predict_insn): Rewrite; make global.
(predict_edge_def, predict_insn_def): New global functions.
(dump_prediction, combine_predictions_for_insns): New
static functions.
(estimate_probability): Change calls to predict_edge
to predict_edge_def and calls to predict_insn to predict_insn_def;
combine probabilities.
(expected_value_to_br_prob): Behave as predictor.
* rtl.h (REG_BR_PRED): Update coment.
(invert_br_probabilities): New.
* jump.c: Include predict.h
(duplicate_loop_exit_test): Drop branch prediction notes.
(invert_jump): Use invert_br_probabilities.
* Makefile.in: Add dependancy on predict.h for jump and predict pass.
* ifcvt.c (dead_or_predicable): Use invert_br_probabilities.
* combine.c (distribute_notes): Handle BR_PRED.
From-SVN: r43115