Commit Graph

3 Commits

Author SHA1 Message Date
Erik Eckstein
d418192ceb SIL optimizer: fix a compile time performance problem in UpdatingInstructionIteratorRegistry
C++ closures can implicitly malloc.
Avoid this by just capturing `this` and nothing else.

Reduces the time spent in the SIL pass pipeline by 25% when compiling the stdlib core.

rdar://88567996
2022-02-07 16:19:19 +01:00
Andrew Trick
c86d112891 Update #include for InstructionDeleter.h 2021-11-18 11:38:08 -08:00
Andrew Trick
0407a4e34a Add UpdatingInstructionIterator.
Track in-use iterators and update them both when instructions are
deleted and when they are added.

Safe iteration in the presence of arbitrary changes now looks like
this:

    for (SILInstruction *inst : deleter.updatingRange(&bb)) {
      modify(inst);
    }
2021-06-02 07:38:27 -07:00