Which D compiler is the most maintained and future-proof? [DMD GDC and LDC]
    Dennis 
    dkorpel at gmail.com
       
    Mon Jul 24 13:58:57 UTC 2023
    
    
  
On Monday, 24 July 2023 at 13:30:27 UTC, cc wrote:
> Is there any list of known significant "gotchas" with moving to 
> LDC from DMD?  Any unexpected surprises to watch out for or be 
> careful for?
- DMD has weak linking for all functions by default (mostly as a 
workaround to several bugs). In LDC, you might get 'duplicate 
definition' errors when linking D objects that succeeds when 
compiled with dmd.
- DMD supports C opaque struct definitions in headers (though 
arguably a bug as well) while LDC will complain, see 
https://github.com/ldc-developers/ldc/issues/3817
> Known edge cases of compiler optimization causing different 
> behavior between vendors?
LDC can optimize much more aggressively, so if your code has 
undefined behavior, it's more likely to manifest as a bug with 
LDC. I had a unittest that succeeded with dmd but failed with 
`ldc2 -O3` because there was a bitshift larger than 63. DMD 
didn't care much (it would just do modulo 64), but LDC optimized 
the function based on the assumption that a parameter could never 
be 0, which I didn't intend.
    
    
More information about the Digitalmars-d-learn
mailing list