Fixes a performance bug where 'static foreach' would take an exponentially long time to expand during CTFE. In the following example: static foreach (i; 0..30000) {} Compilation time had been reduced from around 40 to 0.08 seconds. Memory consumption is also reduced from 3.5GB to 55MB. Reviewed-on: https://github.com/dlang/dmd/pull/11335 gcc/d/ChangeLog: * dmd/cond.c (lowerArrayAggregate): Directly use the elements of the array for TupleExp creation. (lowerNonArrayAggregate): Inline creation of foreach range indexes. (cherry picked from commit ce56fd949f359a62b86a45aaf975ac2ecc48fa64)
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
root | Loading commit data... | |
MERGE | Loading commit data... | |
access.c | Loading commit data... | |
aggregate.h | Loading commit data... | |
aliasthis.c | Loading commit data... | |
aliasthis.h | Loading commit data... | |
apply.c | Loading commit data... | |
arrayop.c | Loading commit data... | |
arraytypes.h | Loading commit data... | |
attrib.c | Loading commit data... | |
attrib.h | Loading commit data... | |
blockexit.c | Loading commit data... | |
boostlicense.txt | Loading commit data... | |
canthrow.c | Loading commit data... | |
clone.c | Loading commit data... | |
compiler.h | Loading commit data... | |
complex_t.h | Loading commit data... | |
cond.c | Loading commit data... | |
cond.h | Loading commit data... | |
constfold.c | Loading commit data... | |
cppmangle.c | Loading commit data... | |
ctfe.h | Loading commit data... | |
ctfeexpr.c | Loading commit data... | |
dcast.c | Loading commit data... | |
dclass.c | Loading commit data... | |
declaration.c | Loading commit data... | |
declaration.h | Loading commit data... | |
delegatize.c | Loading commit data... | |
denum.c | Loading commit data... | |
dimport.c | Loading commit data... | |
dinterpret.c | Loading commit data... | |
dmacro.c | Loading commit data... | |
dmangle.c | Loading commit data... | |
dmodule.c | Loading commit data... | |
doc.c | Loading commit data... | |
doc.h | Loading commit data... | |
dscope.c | Loading commit data... | |
dstruct.c | Loading commit data... | |
dsymbol.c | Loading commit data... | |
dsymbol.h | Loading commit data... | |
dtemplate.c | Loading commit data... | |
dversion.c | Loading commit data... | |
entity.c | Loading commit data... | |
enum.h | Loading commit data... | |
errors.h | Loading commit data... | |
escape.c | Loading commit data... | |
expression.c | Loading commit data... | |
expression.h | Loading commit data... | |
expressionsem.c | Loading commit data... | |
func.c | Loading commit data... | |
globals.h | Loading commit data... | |
hdrgen.c | Loading commit data... | |
hdrgen.h | Loading commit data... | |
iasm.c | Loading commit data... | |
iasmgcc.c | Loading commit data... | |
identifier.c | Loading commit data... | |
identifier.h | Loading commit data... | |
idgen.c | Loading commit data... | |
impcnvgen.c | Loading commit data... | |
imphint.c | Loading commit data... | |
import.h | Loading commit data... | |
init.c | Loading commit data... | |
init.h | Loading commit data... | |
initsem.c | Loading commit data... | |
intrange.c | Loading commit data... | |
intrange.h | Loading commit data... | |
json.c | Loading commit data... | |
json.h | Loading commit data... | |
lexer.c | Loading commit data... | |
lexer.h | Loading commit data... | |
macro.h | Loading commit data... | |
mangle.h | Loading commit data... | |
mars.h | Loading commit data... | |
module.h | Loading commit data... | |
mtype.c | Loading commit data... | |
mtype.h | Loading commit data... | |
nogc.c | Loading commit data... | |
nspace.c | Loading commit data... | |
nspace.h | Loading commit data... | |
objc.c | Loading commit data... | |
objc.h | Loading commit data... | |
opover.c | Loading commit data... | |
optimize.c | Loading commit data... | |
parse.c | Loading commit data... | |
parse.h | Loading commit data... | |
readme.txt | Loading commit data... | |
safe.c | Loading commit data... | |
sapply.c | Loading commit data... | |
scope.h | Loading commit data... | |
sideeffect.c | Loading commit data... | |
statement.c | Loading commit data... | |
statement.h | Loading commit data... | |
statementsem.c | Loading commit data... | |
staticassert.c | Loading commit data... | |
staticassert.h | Loading commit data... | |
staticcond.c | Loading commit data... | |
target.h | Loading commit data... | |
template.h | Loading commit data... | |
tokens.c | Loading commit data... | |
tokens.h | Loading commit data... | |
traits.c | Loading commit data... | |
typesem.c | Loading commit data... | |
utf.c | Loading commit data... | |
utf.h | Loading commit data... | |
utils.c | Loading commit data... | |
version.h | Loading commit data... | |
visitor.h | Loading commit data... |