On Tue, Sep 02, 2014 at 10:02:38AM +0800, Bin.Cheng wrote: > >> >Archaeology suggests this check is because the clobber might be an > >> >earlyclobber. Which seems silly: how can it be a valid insn at all > >> >in that case? It seems to me the check can just be removed. That > >> >will hide your issue, maybe even solve it (but I doubt it). > >> Silly for other reasons, namely that earlyclobber doesn't come into play > >> until after combine (register allocation and later). > > > > The last change to this code was by Ulrich (cc:ed); in that thread (June > > 2004, mostly not threaded in the mail archive, broken MUAs :-( ) it was > > said that any clobber should be considered an earlyclobber (an RTL insn > > can expand to multiple machine instructions, for example). But I don't > > see how that can matter for "dest" here (the dest of "insn", that's 76 > > in the example), only for "src". > > > > The version of "flags" set in 76 obviously dies in 77 (it clobbers the > > reg after all), but there is no way it could clobber it before it uses > > it, that just makes no sense. And in the combined insn that version of > > flags does not exist at all. > Agreed, otherwise it would be another uninitialized use problem. > Maybe the check is too strict here? Do you have some archived page > address for that, just saving us some time for digging.
http://gcc.gnu.org/ml/gcc-patches/2004-06/msg00994.html (and look in that month's archives for the rest of the messages). > My only concern is, logic in dictribute_notes should also be revisited > under this BZ. I think the issue will be hidden by changes we are > talking about in can_combine_p. Yes. Unless we disallow all combinations that *would* cause problems :-) Segher