On Thu, Mar 7, 2024 at 12:11 PM Richard Biener <rguent...@suse.de> wrote: > > On Thu, 7 Mar 2024, Jakub Jelinek wrote: > > > On Thu, Mar 07, 2024 at 11:11:35AM +0100, Uros Bizjak wrote: > > > > Since you CCed me - looking at the code I wonder why we fatally fail. > > > > The following might also fix the issue and preserve more of the > > > > rest of the flow of the function. > > > > > > > > If that works I'd prefer it. But I'll defer approval to the combine > > > > maintainer which is Segher. > > > > > > Your patch is basically what v1 did [1], but it was suggested (in a > > > reply by you ;) ) that we should stop the attempt to combine if we > > > can't handle the use. So, the v2 patch undoes the combine and records > > > a nice message in this case. > > > > My understanding of Richi's patch is that it it treats the non-COMPARISON_P > > the same as if find_single_use fails, which is a common case that certainly > > has to be handled right and it doesn't seem that we are giving up completely > > for that case. So, I think it is reasonable to treat the non-COMPARISON_P > > *cc_use_loc as NULL cc_use_loc. > > The question is, whether a NULL cc_use_loc (find_single_use returning > NULL) means "there is no use" or it can mean "huh, don't know, maybe > more than one, maybe I was too stupid to indentify the single use". > The implementation suggests it's all broken ;)
As I understood find_single_use, it is returning RTX iff DEST is used only a single time in an insn sequence following INSN. find_single_use_1 returns RTX iff argument is used exactly once in DEST. So, find_single_use returns RTX only when DEST is used exactly once in a sequence following INSN. We can reject the combination without worries of multiple uses. Uros,