Posting the ChangeLog before pushing. --
gcc/ChangeLog: * rtl.h (struct rtx_comparison): New struct that holds an rtx comparison. * config/rs6000/rs6000.c (rs6000_emit_minmax): Use struct instead of single parameters. (rs6000_emit_swsqrt): Likewise. * expmed.c (expand_sdiv_pow2): Likewise. (emit_store_flag): Likewise. * expr.c (expand_cond_expr_using_cmove): Likewise. (expand_expr_real_2): Likewise. * ifcvt.c (noce_emit_cmove): Add compare and reversed compare parameters and allow to call directly without going through preparation steps. * optabs.c (emit_conditional_move_1): New function. (expand_doubleword_shift_condmove): Use struct. (emit_conditional_move): Use struct. * optabs.h (emit_conditional_move): Use struct.