On Thursday, 31 July 2014 at 16:37:40 UTC, H. S. Teoh via Digitalmars-d wrote:
On Thu, Jul 31, 2014 at 03:44:35PM +0200, Daniel Gibson via Digitalmars-d wrote:
[...]
And don't forget this (rather old) case:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=8537
(I really don't get why anyone would want such an optimization: I want an optimizer to use clever inlining, use SSE etc where it makes sense
and stuff like that - but not to remove code I wrote.)
[...]

Modern compilers often have to deal with generated code (that isn't directly written by the programmer, e.g., expanded from a C++ template -- or, for that matter, generated by a code generator like lex / yacc). In this case, you *do* want dead code removal because the code generator may be written in a way that takes care of the general case, but in your specific case some of the generated code is redundant. You don't want to penalize specific instances of the generic code pattern, after all.

Both points of view make sense. The problem is that it's hard for the compiler to know when the code it elides was generated code or explicitly written. (Maybe this is solvable in dmd, I don't know. But it's not a feature I've seen before.)


Reply via email to