On Sunday, 18 June 2023 at 02:55:32 UTC, Cecil Ward wrote:
On Friday, 16 June 2023 at 13:12:06 UTC, Iain Buclaw wrote:

Redundant jump? Yes, arguably. Leads to wrong runtime? Doesn't look that way.

Completely agree with Iain, it’s not incorrect code, I wasn’t intending to suggest that. I’d just say suboptimal, and not the very best code generation possible.

By the way, I suspect it's related to this problem report.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96435

Taken from upstream DMD comment (I suspect is still not fixed in either DMD, possibly LDC too but haven't checked).

https://issues.dlang.org/show_bug.cgi?id=20148#c3

Essentially, every read of a boolean gets turned into `(*(ubyte*)&b) & 1`.

This *could* be limited to `@safe` code, or just accessing field members of a union I suppose.

Reply via email to