On Fri, Sep 17, 2021 at 11:43 AM Kewen.Lin <li...@linux.ibm.com> wrote: > > Hi, > > When changing target_info with bitfield, I happened to find this > inconsistent streaming in and out. We have the streaming in: > > bp_pack_value (&bp, info->inlinable, 1); > bp_pack_value (&bp, false, 1); > bp_pack_value (&bp, info->fp_expressions, 1); > > while the streaming out: > > info->inlinable = bp_unpack_value (&bp, 1); > info->fp_expressions = bp_unpack_value (&bp, 1) > > The cleanup of Cilk Plus support seemed to miss to remove the bit > streaming out but change with streaming false. > > By hacking fp_expression_p to return true always, I can see it > reads the wrong fp_expressions value (false) out in wpa dumping. > > Bootstrapped and regress-tested on powerpc64le-linux-gnu Power9. > > Is it ok for trunk?
OK for trunk and all affected branches (note we need to bump the LTO minor version there). The issue comes from the removal of cilk+ in r8-4956 which removed the bp_unpack but replaced the bp_pack ... It's a correctness issue as we'll read fp_expressions as always 'false' Thanks, Richard. > > BR, > Kewen > ----- > gcc/ChangeLog: > > * ipa-fnsummary.c (ipa_fn_summary_write): Remove inconsistent > bitfield streaming out. > > diff --git a/gcc/ipa-fnsummary.c b/gcc/ipa-fnsummary.c > index 2470937460f..31199919405 100644 > --- a/gcc/ipa-fnsummary.c > +++ b/gcc/ipa-fnsummary.c > @@ -4652,7 +4652,6 @@ ipa_fn_summary_write (void) > info->time.stream_out (ob); > bp = bitpack_create (ob->main_stream); > bp_pack_value (&bp, info->inlinable, 1); > - bp_pack_value (&bp, false, 1); > bp_pack_value (&bp, info->fp_expressions, 1); > streamer_write_bitpack (&bp); > streamer_write_uhwi (ob, vec_safe_length (info->conds));