On Tuesday, 14 July 2020 at 23:10:28 UTC, Max Haughton wrote:
On Tuesday, 14 July 2020 at 21:58:49 UTC, Cecil Ward wrote:
I have written something which may or may not be novel and I’m wondering about how to distribute it to as many users as possible, hoping others will find it useful. What’s the best way to publish a D routine ?

[...]

GitHub is the best place to publish code. Does GDC actually use the optimization? I tried something like that before but I couldn't seem to get it to work properly.

On Tuesday, 14
]

I just tried an experiment. It seems that in release mode assert()s are realised as absolutely nothing at all, and so the _conditions_ in the asserts are not declared. So later generated code does not have the benefit of knowledge of asserted truth conditions in release mode. So in release mode, without these truth conditions being established, the code generated (apart from the asserts’ code) can be _worse than in debug mode_, which seems bizarre, but it’s true.

for example
    assert( x < 100 );
    …
    if ( x==200 )  // <— evaluates to false _at compile time_
         {
         // no code generated for this block in debug mode,
         // but is generated in release mode
         }
    …
if ( x < 100 ) // <— no code generated for if-test as cond == true at compile-time

Reply via email to