Regarding compiler switches

Michal Minich michal.minich at gmail.com
Thu Nov 5 02:46:51 PST 2009


Hello Lars,

> DMD has just a few switches that control how code is compiled, such as
> -safe, -release, -O and so on. In comparison, GCC has (and this is
> just a rough estimate) a gazillion switches. For the most part, DMD's
> simpler approach is a good thing, because it makes the compiler easy
> to use.
> 
> However, from time to time, discussions appear on this NG that
> indicate not everyone is happy with the situation. For instance,
> people have complained that it's not possible to separately turn
> on/off bounds checking and compilation of contracts.
> 
> Recently there was a discussion of whether the -safe switch should
> affect array bounds checking too. I don't think any agreement was
> reached.
> 
> Is there any good reason for NOT letting people choose these things
> for themselves? I suspect it would be very easy to add more detailed
> options to DMD:
> 
> --bounds-checking=on|off
> --mem-safe=on|off
> --Oxxx=on|off|auto  (There are many possible optimisations, and the
> compiler doesn't always know best.)
> --contracts=on|off
> Note that I think it's important that -release & co. are kept, but
> they should be defined as common combinations of the more detailed
> options.
> 
> -Lars
> 

Separate switches for bounds checking and contracts would be good (which 
would turn of bounds checking for mem-safe code too). But there is no reason 
to have mem-safe=on switch - you cannot force safety on unsafe code by compiler 
switch, this just would not compile. I think the proper way to specify memory 
safety is per function, as I wrote in other post around here.  Also, I think 
there is only one -O in dmd.





More information about the Digitalmars-d mailing list