Do you think if statement as expression would be nice to have in D?

deadalnix deadalnix at gmail.com
Mon Jun 6 20:31:06 UTC 2022


On Monday, 6 June 2022 at 17:43:47 UTC, H. S. Teoh wrote:
> On Mon, Jun 06, 2022 at 05:07:30PM +0000, deadalnix via 
> Digitalmars-d wrote:
>> [...]
>>
>> LDC is able to inline the lambda and then optimize away the 
>> allocation. DMD is not.
>> 
>> https://godbolt.org/z/5vMcz4s14
>
> Yeah, when in doubt, trust LDC to do the "right thing". :-P  
> Well, that, and take a look at the generated assembly to see 
> what it actually does. For questions of performance or codegen 
> quality, I usually don't even bother looking at DMD output.
>
>
> T

I mean:

```
int example.foo(immutable(char)[]):
         cmp     rdi, 5
         jne     .LBB0_3
         mov     eax, 1764586337
         xor     eax, dword ptr [rsi]
         movzx   ecx, byte ptr [rsi + 4]
         xor     ecx, 115
         or      ecx, eax
         je      .LBB0_2
.LBB0_3:
         mov     eax, 100
         ret
.LBB0_2:
         mov     eax, 200
         ret
```

It's amazing.


More information about the Digitalmars-d mailing list