wraps emitDestroyValue, and create SILBuilders locally when
needed (they are cheap to construct) instead of creating them
once and passing them around.
Swift SVN r10444
invalidating iterators. The off-by one would lead to it failing to
remove retain/release pairs around partial_apply's on inlined closures,
preventing the partial_apply itself from being removed, and thus making
it look like lots of values (including self) escape.
Fixing this bug allows us to re-enable the String append test and unxfails
three perf tests.
Swift SVN r10425
it inlines after it was invalidated. This was exposed by an unrelated
change I'm about to land. Fixing this required reworking a few things, and
unfortunately seems to have broken the string O(1) optimization again.
Swift SVN r9905
- Introduce emitTupleExtract / emitStructExtract, which fold when their operand is a tuple/struct.
- Rename SILBuilder::createTupleExtractInst -> createTupleExtract, "Inst" isn't used as a suffix.
- Switch capture promotion and DI to use the new functions.
This trims 300 lines out of the stdlib.
Swift SVN r9897
SILFunction that it references. Use this in the mandatory inlining
pass to remove deserialized transparent functions, to clean up the
-emit-sil output of the compiler (and presumably speed up compile
time). This implements rdar://15272652
Swift SVN r9699
Make ApplyInst and PartialApplyInst directly take substitutions for generic functions instead of trying to stage out substitutions separately. The legacy reasons for doing this are gone.
Swift SVN r8747
After implementing this I realized that a lot of the logic currently in MandatoryInlining.cpp should be moved into the SILInliner so it can be reused in an optimizing inliner. I plan on doing that refactoring immediately but decided to go ahead and commit this since it's a working incremental step.
Swift SVN r7771