cfg merge part 11 - high level branch predictors

Richard Henderson rth@redhat.com
Mon May 6 15:15:00 GMT 2002


On Wed, Mar 06, 2002 at 09:09:17PM +0100, Jan Hubicka wrote:
> 	* basic-block.h (note_prediction_to_br_prob): declare.
> 	* c-semantics.c: Inlucde predit.h
> 	(expand_stmt): predict GOTO_STMT as not taken.
> 	* cfgcleanup.c: (delete_unreachable_blocks): Make global.
> 	(cleanup_cfg): Do not free tail_recursion_list.
> 	* cfgrtl.c (can_delete_note_p): Delete NOTE_INSN_PREDICTION.
> 	(flow_delete_block): Kill predictions past end of basic block.
> 	* output.h (delete_unreachable_blocks): Declare.
> 	* predict.c (predicted_by_p, process_note_predictions,
> 	process_note_prediction, last_block_p): New function.
> 	(estimate_probability): Bypass loop on PRED_CONTINUE;
> 	do not handle noreturn heuristics; kill PRED_RETURN; add
> 	PRED_EARLY_RETURN.
> 	* predict.def (PRED_CONTINUE, PRED_EARLY_RETURN, PRED_GOTO,
> 	PRED_CONST_RETURN, PRED_NEGATIVE_RETURN, PRED_NULL_RETURN): New.
> 	* predict.h (IS_TAKEN): New constant.
> 	* print-rtl.c (print_rtx): Pretty print NOTE_INSN_PREDICTION.
> 	* rtl.c (NOTE_INSN_PREDICTION): New.
> 	* rtl.h (NOTE_PREDICTION, NOTE_PREDICTION_ALG, NOTE_PREDICTION_FLAGS):
> 	New macro.
> 	(insn_note): add NOTE_INSN_PREDICTION.
> 	* sibcall.c (optimize_sibling_and_tail_recursive_call): Do not build
> 	CFG; free tail_recursion_label_list.
> 	* stmt.c: Include predict.h;
> 	(return_prediction): New.
> 	(expand_value_return): Use it.
> 	* toplev.c: Lower NOTE_INSN_PREDICTION before sibcall.

Mostly ok.

> +   delete_unreachable_blocks ();
> + 
> +   /* Turn NOTE_INSN_PREDICTIONs into branch predictions.  */
> +   note_prediction_to_br_prob ();

Why bother deleting unreachable blocks before tagging jump insns?


r~



More information about the Gcc-patches mailing list