Avoid many std::tie/tuple instantiations in ASTImporter
authorReid Kleckner <rnk@google.com>
Tue, 4 Feb 2020 23:22:15 +0000 (15:22 -0800)
committerReid Kleckner <rnk@google.com>
Tue, 4 Feb 2020 23:30:08 +0000 (15:30 -0800)
commit1091730f5fbb13c36e4099e765178c2d8fb7ba0c
tree4965dbc996cfd241a337eb5ed4c0c5700f6aa83e
parentc67773bebef1745ade1a729263cd63628c97e813
Avoid many std::tie/tuple instantiations in ASTImporter

To factor the error checking, use importChecked instead of importSeq.
This avoids repeating the names of all of the imported child nodes once,
and allows errors to be checked with a single conditional as it is with
importSeq.

After:
  peak memory: 601.63MB
  real: 0m19.172s
  obj size: 8,352kb

Before:
  peak memory: 954.11MB
  real: 0m26.188s
  obj size: 10,000kb

The speed is not as impressive as I hoped, but the memory use reduction
is impressive, and seems worth it.

Reviewed By: martong, shafik

Differential Revision: https://reviews.llvm.org/D73675
clang/lib/AST/ASTImporter.cpp