dmd 1.048 and 2.033 releases
Nick Sabalausky
a at a.a
Mon Oct 5 15:45:06 PDT 2009
"Walter Bright" <newshound1 at digitalmars.com> wrote in message
news:hadqcs$30n8$2 at digitalmars.com...
> BCS wrote:
>> Hello Walter,
>>
>>> #ponce wrote:
>>>
>>>> I think it's disabled in debug mode to keep the compilation time low.
>>>>
>>> That, and the optimizer tends to scramble the relationship between
>>> source and assembler, making source debugging next to impossible.
>>>
>>
>> How hard would it be to have the code generate run on the unoptimized
>> code and then do the optimizer backed test and only if no bugs jump out,
>> move the results into the object file?
>>
>
> It seems even easier to just compile with -0.
It isn't. *Very* typical workflow:
1. Set up a preconfigured single-command "debug" configuration that includes
all diagnostics (which involves a lack of -O because it would interfere with
debugging) and a preconfigured single-command "release" configuration (which
includes -O).
2. Write code, compile "debug" build, test, rinse, repeat until current
task/feature is done.
3. Compile "release" build.
4. Goto 2.
Marrying diagnostics to -O breaks this workflow no matter how it's handled:
Possibility 1: Throw away the system of pre-configured builds and just use
the compiler or rebuild directly. Sure, some people do this way normally,
but others have very good reasons not to, and it's unreasonable to expect
those people switch back to this.
Possibility 2: Continue as normal. The errors detected by -O are detected
way later than than could be (at best), or are already fixed by the coder
(at extra effort) before the compiler has a chance to inform them of it,
rendering the feature nearly useless.
Possibility 3: Change the debug config to use -O. Say good-bye to useful
debuggers.
Possibility 4: Split the debug configuration into two separate "debug"
modes, one with and one without -O. I can personally vouch from my
experience with DMD's "warnings can *only* be treated as errors" that this
type of approach is a big mess and PITA.
None of those are particularly good options, and I don't see any other
possibilities.
More information about the Digitalmars-d-announce
mailing list