On Fri, Jul 27, 2012 at 11:15 AM, Richard Guenther <richard.guent...@gmail.com> wrote: >> Right. I don't like the use of this attribute on labels at all, for >> the reasons you list here. I think it would be much cleaner to add a >> branch hint on the label in the asm goto, to contain this extension >> and to also to make it clear that it's not the label that is cold but >> the jump that is unlikely to be executed (i.e. cause and effect: the >> jump is unlikely and therefore the basic block is cold). > > As in the case where you have both an unlikely and likely jump to a > basic-block. But what I understand is that rth adds a way to mark > a basic-block as hot or cold, not a way to mark an edge as hot or cold > (that would be what the asm goto annotation would do). Both cases > are of course useful.
I don't see why it is useful to be able to mark a basic block as hot or cold. This is something that the compiler can figure out for itself if you provide the branch hints (__builtin_expect is also a kind of branch hint). Marking basic blocks as likely or unlikely seems just redundant and confusing to me. A basic block being hot or cold is an effect of its incoming edges being unlikely-taken, not an inherent property of the basic block itself. Ciao! Steven