Bad codegen for comparison with postfix increment

Iain Buclaw ibuclaw at gdcproject.org
Thu May 9 18:24:12 UTC 2024


On Wednesday, 8 May 2024 at 14:26:25 UTC, Paul Backus wrote:
> When the following program is compiled with GDC 14.1, the 
> assertion fails:
>
>     void main() {
>         int d = 42;
>         bool o = d > d++;
>         assert(o == false);
>     }
>
> (Godbolt: https://d.godbolt.org/z/e63xbb9Td)
>
> The assertion passes when the program is compiled with DMD 
> 2.108.0.
>
> The same bug was recently reported for LDC: 
> https://github.com/ldc-developers/ldc/issues/4651

I want to say that rewriting `d > d++` to `d++ < d` is a valid 
optimization.

See also `opCmp` rewriting `a < b` into `b.opCmp(a)`

https://dlang.org/spec/operatoroverloading.html#compare


More information about the D.gnu mailing list