On Thu, May 1, 2025 at 9:45 PM Andrew Pinski <quic_apin...@quicinc.com> wrote: > > While helping Eikansh with a patch to ccmp, it was noticed that the > result stored in the up pointer that gets passed to get_compare_parts > was unused on all call sites. > It was always unused since get_compare_parts was added in > r8-1717-gf580a969d7fbab. It looks it was not noticed it became unused > when rcode was set via get_compare_parts and in RTL, the signedness is > part of the comparison.
OK. > PR middle-end/118090 > gcc/ChangeLog: > > * ccmp.cc (get_compare_parts): Remove the up argument. > (expand_ccmp_next): Update call to get_compare_parts. > (expand_ccmp_expr_1): Likewise. > > Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com> > --- > gcc/ccmp.cc | 15 ++++++--------- > 1 file changed, 6 insertions(+), 9 deletions(-) > > diff --git a/gcc/ccmp.cc b/gcc/ccmp.cc > index 67efe7d4f5a..e49bafa85c5 100644 > --- a/gcc/ccmp.cc > +++ b/gcc/ccmp.cc > @@ -133,23 +133,22 @@ ccmp_candidate_p (gimple *g, bool outer = false) > > /* Extract the comparison we want to do from the tree. */ > void > -get_compare_parts (tree t, int *up, rtx_code *rcode, > +get_compare_parts (tree t, rtx_code *rcode, > tree *rhs1, tree *rhs2) > { > tree_code code; > gimple *g = get_gimple_for_ssa_name (t); > if (g && is_gimple_assign (g)) > { > - *up = TYPE_UNSIGNED (TREE_TYPE (gimple_assign_rhs1 (g))); > + int up = TYPE_UNSIGNED (TREE_TYPE (gimple_assign_rhs1 (g))); > code = gimple_assign_rhs_code (g); > - *rcode = get_rtx_code (code, *up); > + *rcode = get_rtx_code (code, up); > *rhs1 = gimple_assign_rhs1 (g); > *rhs2 = gimple_assign_rhs2 (g); > } > else > { > /* If g is not a comparison operator create a compare to zero. */ > - *up = 1; > *rcode = NE; > *rhs1 = t; > *rhs2 = build_zero_cst (TREE_TYPE (t)); > @@ -167,10 +166,9 @@ expand_ccmp_next (tree op, tree_code code, rtx prev, > rtx_insn **prep_seq, rtx_insn **gen_seq) > { > rtx_code rcode; > - int unsignedp; > tree rhs1, rhs2; > > - get_compare_parts(op, &unsignedp, &rcode, &rhs1, &rhs2); > + get_compare_parts (op, &rcode, &rhs1, &rhs2); > return targetm.gen_ccmp_next (prep_seq, gen_seq, prev, rcode, > rhs1, rhs2, get_rtx_code (code, 0)); > } > @@ -204,7 +202,6 @@ expand_ccmp_expr_1 (gimple *g, rtx_insn **prep_seq, > rtx_insn **gen_seq) > { > if (ccmp_tree_comparison_p (op1, bb)) > { > - int unsignedp0, unsignedp1; > rtx_code rcode0, rcode1; > tree logical_op0_rhs1, logical_op0_rhs2; > tree logical_op1_rhs1, logical_op1_rhs2; > @@ -214,10 +211,10 @@ expand_ccmp_expr_1 (gimple *g, rtx_insn **prep_seq, > rtx_insn **gen_seq) > unsigned cost1 = MAX_COST; > unsigned cost2 = MAX_COST; > > - get_compare_parts (op0, &unsignedp0, &rcode0, > + get_compare_parts (op0, &rcode0, > &logical_op0_rhs1, &logical_op0_rhs2); > > - get_compare_parts (op1, &unsignedp1, &rcode1, > + get_compare_parts (op1, &rcode1, > &logical_op1_rhs1, &logical_op1_rhs2); > > rtx_insn *prep_seq_1, *gen_seq_1; > -- > 2.43.0 >