Hi, > I recently found a confusion in a commit of src/x86_64/Ginit.c. > URL:http://git.savannah.gnu.org/cgit/libunwind.git/commit/?h=v1.0-stable&id=ae5c1f2adf4da04235d87d024d4d942c01b2b447 > > There is a revision as following: > - if (c && c->validate && validate_mem(addr)) > + if (likely (c != 0) && unlikely (c->validate) > + && unlikely (validate_mem (addr))) > > The if logic will have a different result while the c->validate is zero. > Is there a bug fixed here or I have a misunderstanding. > > I am looking forward to your reply. Thank you!
Could you clarify what you mean by 'different result', or how the meaning changed to be a bug? likely/unlikely(x) translate into __builtin_expect((x), 0/1), which is documented to evaluate to 'x'. I'm a little weary eyed for tonight, but stripping likely/unlikely seems to translate to the same 'if' condition to me. At any rate, that particular patch was not supposed to change meaning, so if there's a bug, could you please submit a patch? If you have an easy way of replicating that problem that would be nice too. Regards, Lassi _______________________________________________ Libunwind-devel mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/libunwind-devel
