On 1/14/20 1:23 AM, Richard Biener wrote: > On Mon, Jan 13, 2020 at 3:15 AM bin.cheng <bin.ch...@linux.alibaba.com> wrote: >> ------------------------------------------------------------------ >> 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. > OK.
I've (finally) re-tested and installed this patch on the trunk. Jeff