------------------------------------------------------------------
Sender:Richard Biener <richard.guent...@gmail.com>
Sent At:2020 Jan. 9 (Thu.) 20:01
Recipient:Bin.Cheng <amker.ch...@gmail.com>
Cc:bin.cheng <bin.ch...@linux.alibaba.com>; GCC Patches 
<gcc-patches@gcc.gnu.org>
Subject:Re: [PATCH GCC11]Improve uninitialized warning with value range info


On Thu, Jan 9, 2020 at 11:17 AM Bin.Cheng <amker.ch...@gmail.com> wrote:
> > I am not quite follow here. Do you mean we collect three cases "i <
> > j", "i < min(j)", "max(i) < j" then
> > call prune_uninit_phi_opnds for all three conditions?
> 
> No, I've meant to somehow arrange that the 'preds' passed to
> use_pred_not_overlap_with_undef_path_pred contain all three predicates
> rather than just i < j, thus "expand" fully symbolic predicates.

Seems this would require non-trivial refactoring of the original code.

> > This is another question? because now we simply break out of for loop
> > for finding such condition:
> > 
> > -      if ((gimple_code (flag_def) == GIMPLE_PHI)
> > -         && (gimple_bb (flag_def) == gimple_bb (phi))
> > -         && find_matching_predicate_in_rest_chains (the_pred, preds,
> > -                                                    num_preds))
> > -       break;
> > 
> > It's always possible that this flag_def can't prune use predicates
> > against undefined path predicates, while a later one can prune but is
> > skipped?
> 
> I don't follow but I also don't want to understand the code too much ;)
> 
> I'm fine with the idea and if the patch cannot introudce extra bogus warnings
> let's go with it.  Can you amed the comment before the two find_var_cmp_const
> calls?  I wonder whether eliding the second sweep when the first didn't find
> any predicate it skipped is worth the trouble.

Thanks for the comments, I updated the patch as attached.

Thanks,
bin

2020-01-08  Bin Cheng  <bin.li...@linux.alibaba.com>

        * tree-ssa-uninit.c (find_var_cmp_const): New function.
        (use_pred_not_overlap_with_undef_path_pred): Call above.
        (find_matching_predicate_in_rest_chains): Remove param.

Attachment: 0001-Fix-false-uninitialized-warning-message.patch
Description: Binary data

Reply via email to