On Tue, 27 Aug 2024 at 15:27, Manu <turkeyman@gmail.com> wrote:
On Mon, 26 Aug 2024 at 17:16, Walter Bright via Digitalmars-d <digitalmars-d@puremagic.com> wrote:
On 8/24/2024 9:47 AM, Manu wrote:
> C++ is way ahead on this... they added attributes to the language years back,
> and they defined [[likely]] and [[unlikely]] post-fix on control statements.
> It's really convenient, it reads well, and it's easy to retrofit without
> disturbing the code.
> That's the de-facto now, and we should follow it.

It's unattractive.

I provided two alternate means to accomplish the same thing elsewhere in this
thread.

https://www.digitalmars.com/d/archives/digitalmars/D/Standard_way_to_supply_hints_to_branches_375697.html#N375717

"Unattractive"? ... seriously?
Your suggestions were to quite seriously molest the code, reordering, adding extra scopes, inverting logic, nonsense statements like `do {} while(0)`, using labels and goto's which doesn't marry well with general control flow and RAII type things... sorry; but "unattractive"? That might be the most bizarre thing I've ever heard you say! ;)

Just so it's clear what's going on here; certain microcontrollers don't have branch predictors at all; so hinting is essential on these exotic platforms. Your suggestions could appear in almost every single at-least-warm function, and it's not clear how they marry with eachother. We discussed 2 principle cases; likely early return because of short-path or cached value, and unlikely early return due to argument validation failure. Plenty of functions contain both cases, and plenty of functions contain numerous such items.
Try and imagine how your suggestion scales when there are 4-5 conditions that need to be tested on function entry, and they don't all receive the same hint. I value readable and maintainable code...