On Mon, 18 May 2026 11:29:54 +0100
Pavel Begunkov <[email protected]> wrote:

> On 5/13/26 09:19, Christoph Hellwig wrote:
> >> +  if (!bio_flagged(bio_src, BIO_DMABUF_MAP)) {
> >> +          bio->bi_io_vec = bio_src->bi_io_vec;
> >> +  } else {
> >> +          bio->dmabuf_map = bio_src->dmabuf_map;
> >> +          bio_set_flag(bio, BIO_DMABUF_MAP);
> >> +  }  
> > 
> > This is backwards, please avoid pointless negations:  
> 
> I can flip it, but compilers tend to prefer the true branch. E.g. this
> 
> if (cond) A; else B;
> C;
> 
> can get compiled into:
> 
> jmpcc cond B
> A: ...
> C:
> return;
> B: ...
> jmp C;

I'm pretty sure gcc completely ignores the order.
Some very old compilers didn't - to the extreme of generating a short
conditional branch around a long unconditional branch to get past a
large 'true' code block.

likely() and unlikely() can change things, they are definitely useful
comments to a human (or Human) reader.

I'm not sure you can rely on the branch predictor to do anything sensible
outside of a loop.

-- David

Reply via email to