diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dc22856e0dc..061145dbc1a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2007-02-26 Jan Hubicka + + * predict.def: Set outcomes according to more recent results. + (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER): + Remove dead predictors. + * predict.c (return_prediction): Fix pasto. + 2007-02-27 Bernd Schmidt * loop-iv.c (simplify_using_initial_values): Fix oversight in previous diff --git a/gcc/predict.c b/gcc/predict.c index 0e86c527238..f390ebedb4d 100644 --- a/gcc/predict.c +++ b/gcc/predict.c @@ -1152,7 +1152,7 @@ return_prediction (tree val, enum prediction *prediction) && (!integer_zerop (val) && !integer_onep (val))) { *prediction = TAKEN; - return PRED_NEGATIVE_RETURN; + return PRED_CONST_RETURN; } } return PRED_NO_PREDICTION; diff --git a/gcc/predict.def b/gcc/predict.def index 22474b3db40..da27031f7c8 100644 --- a/gcc/predict.def +++ b/gcc/predict.def @@ -74,41 +74,30 @@ DEF_PREDICTOR (PRED_NORETURN, "noreturn call", HITRATE (99), PRED_FLAG_FIRST_MATCH) /* Loopback edge is taken. */ -DEF_PREDICTOR (PRED_LOOP_BRANCH, "loop branch", HITRATE (89), +DEF_PREDICTOR (PRED_LOOP_BRANCH, "loop branch", HITRATE (86), PRED_FLAG_FIRST_MATCH) /* Edge causing loop to terminate is probably not taken. */ -DEF_PREDICTOR (PRED_LOOP_EXIT, "loop exit", HITRATE (90), +DEF_PREDICTOR (PRED_LOOP_EXIT, "loop exit", HITRATE (91), PRED_FLAG_FIRST_MATCH) -/* Condition emitted by preconditiong code to ensure that variable - setting number of iterations is greater than initial value of iterator. */ -DEF_PREDICTOR (PRED_LOOP_CONDITION, "loop condition", PROB_VERY_LIKELY, 0) - -/* Preconditioning makes linear list of branches. */ -DEF_PREDICTOR (PRED_LOOP_PRECONDITIONING, "loop preconditioning", PROB_VERY_LIKELY, 0) - -/* Copied condition for the first iteration of loop is probably true. */ -DEF_PREDICTOR (PRED_LOOP_HEADER, "loop header", HITRATE (64), 0) - /* Pointers are usually not NULL. */ -DEF_PREDICTOR (PRED_POINTER, "pointer", HITRATE (81), 0) -DEF_PREDICTOR (PRED_TREE_POINTER, "pointer (on trees)", HITRATE (81), 0) +DEF_PREDICTOR (PRED_POINTER, "pointer", HITRATE (85), 0) +DEF_PREDICTOR (PRED_TREE_POINTER, "pointer (on trees)", HITRATE (85), 0) /* NE is probable, EQ not etc... */ DEF_PREDICTOR (PRED_OPCODE_POSITIVE, "opcode values positive", HITRATE (79), 0) DEF_PREDICTOR (PRED_OPCODE_NONEQUAL, "opcode values nonequal", HITRATE (71), 0) DEF_PREDICTOR (PRED_FPOPCODE, "fp_opcode", HITRATE (90), 0) -DEF_PREDICTOR (PRED_TREE_OPCODE_POSITIVE, "opcode values positive (on trees)", HITRATE (79), 0) -DEF_PREDICTOR (PRED_TREE_OPCODE_NONEQUAL, "opcode values nonequal (on trees)", HITRATE (71), 0) +DEF_PREDICTOR (PRED_TREE_OPCODE_POSITIVE, "opcode values positive (on trees)", HITRATE (70), 0) +DEF_PREDICTOR (PRED_TREE_OPCODE_NONEQUAL, "opcode values nonequal (on trees)", HITRATE (69), 0) DEF_PREDICTOR (PRED_TREE_FPOPCODE, "fp_opcode (on trees)", HITRATE (90), 0) /* Branch guarding call is probably taken. */ -DEF_PREDICTOR (PRED_CALL, "call", HITRATE (70), 0) +DEF_PREDICTOR (PRED_CALL, "call", HITRATE (69), 0) /* Branch causing function to terminate is probably not taken. */ -DEF_PREDICTOR (PRED_EARLY_RETURN, "early return", HITRATE (67), 0) -DEF_PREDICTOR (PRED_TREE_EARLY_RETURN, "early return (on trees)", HITRATE (67), 0) +DEF_PREDICTOR (PRED_TREE_EARLY_RETURN, "early return (on trees)", HITRATE (45), 0) /* Branch containing goto is probably not taken. */ DEF_PREDICTOR (PRED_GOTO, "goto", HITRATE (70), 0) @@ -117,10 +106,10 @@ DEF_PREDICTOR (PRED_GOTO, "goto", HITRATE (70), 0) DEF_PREDICTOR (PRED_CONST_RETURN, "const return", HITRATE (95), 0) /* Branch ending with return negative constant is probably not taken. */ -DEF_PREDICTOR (PRED_NEGATIVE_RETURN, "negative return", HITRATE (96), 0) +DEF_PREDICTOR (PRED_NEGATIVE_RETURN, "negative return", HITRATE (77), 0) /* Branch ending with return; is probably not taken */ -DEF_PREDICTOR (PRED_NULL_RETURN, "null return", HITRATE (90), 0) +DEF_PREDICTOR (PRED_NULL_RETURN, "null return", HITRATE (96), 0) /* Branches to a mudflap bounds check are extremely unlikely. */ -DEF_PREDICTOR (PRED_MUDFLAP, "mudflap check", HITRATE (99), 0) +DEF_PREDICTOR (PRED_MUDFLAP, "mudflap check", PROB_VERY_LIKELY, 0)