[llvm] r274288 - [TableGen] Use a SmallVector for Record::Values to avoid debug iterators

Reid Kleckner via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 30 16:04:07 PDT 2016


Author: rnk
Date: Thu Jun 30 18:04:07 2016
New Revision: 274288

URL: http://llvm.org/viewvc/llvm-project?rev=274288&view=rev
Log:
[TableGen] Use a SmallVector for Record::Values to avoid debug iterators

Debug iterators are valuable so we don't want to turn them off
completely. However, llvm-tblgen is critical to build speed, so we can
skip them here.

Regenerating X86GenSubtargetInfo.inc in a clang-cl self-host debug build
now takes 39s instead of 1m29s.

Helps PR28222

Modified:
    llvm/trunk/include/llvm/TableGen/Record.h

Modified: llvm/trunk/include/llvm/TableGen/Record.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/TableGen/Record.h?rev=274288&r1=274287&r2=274288&view=diff
==============================================================================
--- llvm/trunk/include/llvm/TableGen/Record.h (original)
+++ llvm/trunk/include/llvm/TableGen/Record.h Thu Jun 30 18:04:07 2016
@@ -1167,9 +1167,9 @@ class Record {
   // Location where record was instantiated, followed by the location of
   // multiclass prototypes used.
   SmallVector<SMLoc, 4> Locs;
-  std::vector<Init *> TemplateArgs;
-  std::vector<RecordVal> Values;
-  std::vector<std::pair<Record *, SMRange>> SuperClasses;
+  SmallVector<Init *, 0> TemplateArgs;
+  SmallVector<RecordVal, 0> Values;
+  SmallVector<std::pair<Record *, SMRange>, 0> SuperClasses;
 
   // Tracks Record instances. Not owned by Record.
   RecordKeeper &TrackedRecords;




More information about the llvm-commits mailing list