r174685 - Fix stack overflow and improve performance when a module contains many

Richard Smith richard-llvm at metafoo.co.uk
Thu Feb 7 16:37:46 PST 2013


Author: rsmith
Date: Thu Feb  7 18:37:45 2013
New Revision: 174685

URL: http://llvm.org/viewvc/llvm-project?rev=174685&view=rev
Log:
Fix stack overflow and improve performance when a module contains many
overloads of a name by claiming that there are no lookup results for that name
in modules while loading the names from the module. Lookups in deserialization
really don't want to find names which they themselves are in the process of
introducing. This also has the pleasant side-effect of automatically caching
PCH lookups which found no names.

The runtime here is still quadratic in the number of overloads, but the
constant is lower.

Added:
    cfe/trunk/test/Modules/Inputs/cxx-many-overloads.h
    cfe/trunk/test/Modules/cxx-many-overloads.cpp
Modified:
    cfe/trunk/lib/AST/DeclBase.cpp
    cfe/trunk/test/Modules/Inputs/module.map

Modified: cfe/trunk/lib/AST/DeclBase.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclBase.cpp?rev=174685&r1=174684&r2=174685&view=diff
==============================================================================
--- cfe/trunk/lib/AST/DeclBase.cpp (original)
+++ cfe/trunk/lib/AST/DeclBase.cpp Thu Feb  7 18:37:45 2013
@@ -1203,14 +1203,16 @@ DeclContext::lookup(DeclarationName Name
     if (LookupPtr.getInt())
       Map = buildLookup();
 
+    if (!Map)
+      Map = CreateStoredDeclsMap(getParentASTContext());
+
     // If a PCH/module has a result for this name, and we have a local
     // declaration, we will have imported the PCH/module result when adding the
     // local declaration or when reconciling the module.
-    if (Map) {
-      StoredDeclsMap::iterator I = Map->find(Name);
-      if (I != Map->end())
-        return I->second.getLookupResult();
-    }
+    std::pair<StoredDeclsMap::iterator, bool> R =
+        Map->insert(std::make_pair(Name, StoredDeclsList()));
+    if (!R.second)
+      return R.first->second.getLookupResult();
 
     ExternalASTSource *Source = getParentASTContext().getExternalSource();
     if (Source->FindExternalVisibleDeclsByName(this, Name)) {

Added: cfe/trunk/test/Modules/Inputs/cxx-many-overloads.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/cxx-many-overloads.h?rev=174685&view=auto
==============================================================================
--- cfe/trunk/test/Modules/Inputs/cxx-many-overloads.h (added)
+++ cfe/trunk/test/Modules/Inputs/cxx-many-overloads.h Thu Feb  7 18:37:45 2013
@@ -0,0 +1,2004 @@
+namespace N {
+  template<int> struct X {};
+  void f(X<0>);
+  void f(X<1>);
+  void f(X<2>);
+  void f(X<3>);
+  void f(X<4>);
+  void f(X<5>);
+  void f(X<6>);
+  void f(X<7>);
+  void f(X<8>);
+  void f(X<9>);
+  void f(X<10>);
+  void f(X<11>);
+  void f(X<12>);
+  void f(X<13>);
+  void f(X<14>);
+  void f(X<15>);
+  void f(X<16>);
+  void f(X<17>);
+  void f(X<18>);
+  void f(X<19>);
+  void f(X<20>);
+  void f(X<21>);
+  void f(X<22>);
+  void f(X<23>);
+  void f(X<24>);
+  void f(X<25>);
+  void f(X<26>);
+  void f(X<27>);
+  void f(X<28>);
+  void f(X<29>);
+  void f(X<30>);
+  void f(X<31>);
+  void f(X<32>);
+  void f(X<33>);
+  void f(X<34>);
+  void f(X<35>);
+  void f(X<36>);
+  void f(X<37>);
+  void f(X<38>);
+  void f(X<39>);
+  void f(X<40>);
+  void f(X<41>);
+  void f(X<42>);
+  void f(X<43>);
+  void f(X<44>);
+  void f(X<45>);
+  void f(X<46>);
+  void f(X<47>);
+  void f(X<48>);
+  void f(X<49>);
+  void f(X<50>);
+  void f(X<51>);
+  void f(X<52>);
+  void f(X<53>);
+  void f(X<54>);
+  void f(X<55>);
+  void f(X<56>);
+  void f(X<57>);
+  void f(X<58>);
+  void f(X<59>);
+  void f(X<60>);
+  void f(X<61>);
+  void f(X<62>);
+  void f(X<63>);
+  void f(X<64>);
+  void f(X<65>);
+  void f(X<66>);
+  void f(X<67>);
+  void f(X<68>);
+  void f(X<69>);
+  void f(X<70>);
+  void f(X<71>);
+  void f(X<72>);
+  void f(X<73>);
+  void f(X<74>);
+  void f(X<75>);
+  void f(X<76>);
+  void f(X<77>);
+  void f(X<78>);
+  void f(X<79>);
+  void f(X<80>);
+  void f(X<81>);
+  void f(X<82>);
+  void f(X<83>);
+  void f(X<84>);
+  void f(X<85>);
+  void f(X<86>);
+  void f(X<87>);
+  void f(X<88>);
+  void f(X<89>);
+  void f(X<90>);
+  void f(X<91>);
+  void f(X<92>);
+  void f(X<93>);
+  void f(X<94>);
+  void f(X<95>);
+  void f(X<96>);
+  void f(X<97>);
+  void f(X<98>);
+  void f(X<99>);
+  void f(X<100>);
+  void f(X<101>);
+  void f(X<102>);
+  void f(X<103>);
+  void f(X<104>);
+  void f(X<105>);
+  void f(X<106>);
+  void f(X<107>);
+  void f(X<108>);
+  void f(X<109>);
+  void f(X<110>);
+  void f(X<111>);
+  void f(X<112>);
+  void f(X<113>);
+  void f(X<114>);
+  void f(X<115>);
+  void f(X<116>);
+  void f(X<117>);
+  void f(X<118>);
+  void f(X<119>);
+  void f(X<120>);
+  void f(X<121>);
+  void f(X<122>);
+  void f(X<123>);
+  void f(X<124>);
+  void f(X<125>);
+  void f(X<126>);
+  void f(X<127>);
+  void f(X<128>);
+  void f(X<129>);
+  void f(X<130>);
+  void f(X<131>);
+  void f(X<132>);
+  void f(X<133>);
+  void f(X<134>);
+  void f(X<135>);
+  void f(X<136>);
+  void f(X<137>);
+  void f(X<138>);
+  void f(X<139>);
+  void f(X<140>);
+  void f(X<141>);
+  void f(X<142>);
+  void f(X<143>);
+  void f(X<144>);
+  void f(X<145>);
+  void f(X<146>);
+  void f(X<147>);
+  void f(X<148>);
+  void f(X<149>);
+  void f(X<150>);
+  void f(X<151>);
+  void f(X<152>);
+  void f(X<153>);
+  void f(X<154>);
+  void f(X<155>);
+  void f(X<156>);
+  void f(X<157>);
+  void f(X<158>);
+  void f(X<159>);
+  void f(X<160>);
+  void f(X<161>);
+  void f(X<162>);
+  void f(X<163>);
+  void f(X<164>);
+  void f(X<165>);
+  void f(X<166>);
+  void f(X<167>);
+  void f(X<168>);
+  void f(X<169>);
+  void f(X<170>);
+  void f(X<171>);
+  void f(X<172>);
+  void f(X<173>);
+  void f(X<174>);
+  void f(X<175>);
+  void f(X<176>);
+  void f(X<177>);
+  void f(X<178>);
+  void f(X<179>);
+  void f(X<180>);
+  void f(X<181>);
+  void f(X<182>);
+  void f(X<183>);
+  void f(X<184>);
+  void f(X<185>);
+  void f(X<186>);
+  void f(X<187>);
+  void f(X<188>);
+  void f(X<189>);
+  void f(X<190>);
+  void f(X<191>);
+  void f(X<192>);
+  void f(X<193>);
+  void f(X<194>);
+  void f(X<195>);
+  void f(X<196>);
+  void f(X<197>);
+  void f(X<198>);
+  void f(X<199>);
+  void f(X<200>);
+  void f(X<201>);
+  void f(X<202>);
+  void f(X<203>);
+  void f(X<204>);
+  void f(X<205>);
+  void f(X<206>);
+  void f(X<207>);
+  void f(X<208>);
+  void f(X<209>);
+  void f(X<210>);
+  void f(X<211>);
+  void f(X<212>);
+  void f(X<213>);
+  void f(X<214>);
+  void f(X<215>);
+  void f(X<216>);
+  void f(X<217>);
+  void f(X<218>);
+  void f(X<219>);
+  void f(X<220>);
+  void f(X<221>);
+  void f(X<222>);
+  void f(X<223>);
+  void f(X<224>);
+  void f(X<225>);
+  void f(X<226>);
+  void f(X<227>);
+  void f(X<228>);
+  void f(X<229>);
+  void f(X<230>);
+  void f(X<231>);
+  void f(X<232>);
+  void f(X<233>);
+  void f(X<234>);
+  void f(X<235>);
+  void f(X<236>);
+  void f(X<237>);
+  void f(X<238>);
+  void f(X<239>);
+  void f(X<240>);
+  void f(X<241>);
+  void f(X<242>);
+  void f(X<243>);
+  void f(X<244>);
+  void f(X<245>);
+  void f(X<246>);
+  void f(X<247>);
+  void f(X<248>);
+  void f(X<249>);
+  void f(X<250>);
+  void f(X<251>);
+  void f(X<252>);
+  void f(X<253>);
+  void f(X<254>);
+  void f(X<255>);
+  void f(X<256>);
+  void f(X<257>);
+  void f(X<258>);
+  void f(X<259>);
+  void f(X<260>);
+  void f(X<261>);
+  void f(X<262>);
+  void f(X<263>);
+  void f(X<264>);
+  void f(X<265>);
+  void f(X<266>);
+  void f(X<267>);
+  void f(X<268>);
+  void f(X<269>);
+  void f(X<270>);
+  void f(X<271>);
+  void f(X<272>);
+  void f(X<273>);
+  void f(X<274>);
+  void f(X<275>);
+  void f(X<276>);
+  void f(X<277>);
+  void f(X<278>);
+  void f(X<279>);
+  void f(X<280>);
+  void f(X<281>);
+  void f(X<282>);
+  void f(X<283>);
+  void f(X<284>);
+  void f(X<285>);
+  void f(X<286>);
+  void f(X<287>);
+  void f(X<288>);
+  void f(X<289>);
+  void f(X<290>);
+  void f(X<291>);
+  void f(X<292>);
+  void f(X<293>);
+  void f(X<294>);
+  void f(X<295>);
+  void f(X<296>);
+  void f(X<297>);
+  void f(X<298>);
+  void f(X<299>);
+  void f(X<300>);
+  void f(X<301>);
+  void f(X<302>);
+  void f(X<303>);
+  void f(X<304>);
+  void f(X<305>);
+  void f(X<306>);
+  void f(X<307>);
+  void f(X<308>);
+  void f(X<309>);
+  void f(X<310>);
+  void f(X<311>);
+  void f(X<312>);
+  void f(X<313>);
+  void f(X<314>);
+  void f(X<315>);
+  void f(X<316>);
+  void f(X<317>);
+  void f(X<318>);
+  void f(X<319>);
+  void f(X<320>);
+  void f(X<321>);
+  void f(X<322>);
+  void f(X<323>);
+  void f(X<324>);
+  void f(X<325>);
+  void f(X<326>);
+  void f(X<327>);
+  void f(X<328>);
+  void f(X<329>);
+  void f(X<330>);
+  void f(X<331>);
+  void f(X<332>);
+  void f(X<333>);
+  void f(X<334>);
+  void f(X<335>);
+  void f(X<336>);
+  void f(X<337>);
+  void f(X<338>);
+  void f(X<339>);
+  void f(X<340>);
+  void f(X<341>);
+  void f(X<342>);
+  void f(X<343>);
+  void f(X<344>);
+  void f(X<345>);
+  void f(X<346>);
+  void f(X<347>);
+  void f(X<348>);
+  void f(X<349>);
+  void f(X<350>);
+  void f(X<351>);
+  void f(X<352>);
+  void f(X<353>);
+  void f(X<354>);
+  void f(X<355>);
+  void f(X<356>);
+  void f(X<357>);
+  void f(X<358>);
+  void f(X<359>);
+  void f(X<360>);
+  void f(X<361>);
+  void f(X<362>);
+  void f(X<363>);
+  void f(X<364>);
+  void f(X<365>);
+  void f(X<366>);
+  void f(X<367>);
+  void f(X<368>);
+  void f(X<369>);
+  void f(X<370>);
+  void f(X<371>);
+  void f(X<372>);
+  void f(X<373>);
+  void f(X<374>);
+  void f(X<375>);
+  void f(X<376>);
+  void f(X<377>);
+  void f(X<378>);
+  void f(X<379>);
+  void f(X<380>);
+  void f(X<381>);
+  void f(X<382>);
+  void f(X<383>);
+  void f(X<384>);
+  void f(X<385>);
+  void f(X<386>);
+  void f(X<387>);
+  void f(X<388>);
+  void f(X<389>);
+  void f(X<390>);
+  void f(X<391>);
+  void f(X<392>);
+  void f(X<393>);
+  void f(X<394>);
+  void f(X<395>);
+  void f(X<396>);
+  void f(X<397>);
+  void f(X<398>);
+  void f(X<399>);
+  void f(X<400>);
+  void f(X<401>);
+  void f(X<402>);
+  void f(X<403>);
+  void f(X<404>);
+  void f(X<405>);
+  void f(X<406>);
+  void f(X<407>);
+  void f(X<408>);
+  void f(X<409>);
+  void f(X<410>);
+  void f(X<411>);
+  void f(X<412>);
+  void f(X<413>);
+  void f(X<414>);
+  void f(X<415>);
+  void f(X<416>);
+  void f(X<417>);
+  void f(X<418>);
+  void f(X<419>);
+  void f(X<420>);
+  void f(X<421>);
+  void f(X<422>);
+  void f(X<423>);
+  void f(X<424>);
+  void f(X<425>);
+  void f(X<426>);
+  void f(X<427>);
+  void f(X<428>);
+  void f(X<429>);
+  void f(X<430>);
+  void f(X<431>);
+  void f(X<432>);
+  void f(X<433>);
+  void f(X<434>);
+  void f(X<435>);
+  void f(X<436>);
+  void f(X<437>);
+  void f(X<438>);
+  void f(X<439>);
+  void f(X<440>);
+  void f(X<441>);
+  void f(X<442>);
+  void f(X<443>);
+  void f(X<444>);
+  void f(X<445>);
+  void f(X<446>);
+  void f(X<447>);
+  void f(X<448>);
+  void f(X<449>);
+  void f(X<450>);
+  void f(X<451>);
+  void f(X<452>);
+  void f(X<453>);
+  void f(X<454>);
+  void f(X<455>);
+  void f(X<456>);
+  void f(X<457>);
+  void f(X<458>);
+  void f(X<459>);
+  void f(X<460>);
+  void f(X<461>);
+  void f(X<462>);
+  void f(X<463>);
+  void f(X<464>);
+  void f(X<465>);
+  void f(X<466>);
+  void f(X<467>);
+  void f(X<468>);
+  void f(X<469>);
+  void f(X<470>);
+  void f(X<471>);
+  void f(X<472>);
+  void f(X<473>);
+  void f(X<474>);
+  void f(X<475>);
+  void f(X<476>);
+  void f(X<477>);
+  void f(X<478>);
+  void f(X<479>);
+  void f(X<480>);
+  void f(X<481>);
+  void f(X<482>);
+  void f(X<483>);
+  void f(X<484>);
+  void f(X<485>);
+  void f(X<486>);
+  void f(X<487>);
+  void f(X<488>);
+  void f(X<489>);
+  void f(X<490>);
+  void f(X<491>);
+  void f(X<492>);
+  void f(X<493>);
+  void f(X<494>);
+  void f(X<495>);
+  void f(X<496>);
+  void f(X<497>);
+  void f(X<498>);
+  void f(X<499>);
+  void f(X<500>);
+  void f(X<501>);
+  void f(X<502>);
+  void f(X<503>);
+  void f(X<504>);
+  void f(X<505>);
+  void f(X<506>);
+  void f(X<507>);
+  void f(X<508>);
+  void f(X<509>);
+  void f(X<510>);
+  void f(X<511>);
+  void f(X<512>);
+  void f(X<513>);
+  void f(X<514>);
+  void f(X<515>);
+  void f(X<516>);
+  void f(X<517>);
+  void f(X<518>);
+  void f(X<519>);
+  void f(X<520>);
+  void f(X<521>);
+  void f(X<522>);
+  void f(X<523>);
+  void f(X<524>);
+  void f(X<525>);
+  void f(X<526>);
+  void f(X<527>);
+  void f(X<528>);
+  void f(X<529>);
+  void f(X<530>);
+  void f(X<531>);
+  void f(X<532>);
+  void f(X<533>);
+  void f(X<534>);
+  void f(X<535>);
+  void f(X<536>);
+  void f(X<537>);
+  void f(X<538>);
+  void f(X<539>);
+  void f(X<540>);
+  void f(X<541>);
+  void f(X<542>);
+  void f(X<543>);
+  void f(X<544>);
+  void f(X<545>);
+  void f(X<546>);
+  void f(X<547>);
+  void f(X<548>);
+  void f(X<549>);
+  void f(X<550>);
+  void f(X<551>);
+  void f(X<552>);
+  void f(X<553>);
+  void f(X<554>);
+  void f(X<555>);
+  void f(X<556>);
+  void f(X<557>);
+  void f(X<558>);
+  void f(X<559>);
+  void f(X<560>);
+  void f(X<561>);
+  void f(X<562>);
+  void f(X<563>);
+  void f(X<564>);
+  void f(X<565>);
+  void f(X<566>);
+  void f(X<567>);
+  void f(X<568>);
+  void f(X<569>);
+  void f(X<570>);
+  void f(X<571>);
+  void f(X<572>);
+  void f(X<573>);
+  void f(X<574>);
+  void f(X<575>);
+  void f(X<576>);
+  void f(X<577>);
+  void f(X<578>);
+  void f(X<579>);
+  void f(X<580>);
+  void f(X<581>);
+  void f(X<582>);
+  void f(X<583>);
+  void f(X<584>);
+  void f(X<585>);
+  void f(X<586>);
+  void f(X<587>);
+  void f(X<588>);
+  void f(X<589>);
+  void f(X<590>);
+  void f(X<591>);
+  void f(X<592>);
+  void f(X<593>);
+  void f(X<594>);
+  void f(X<595>);
+  void f(X<596>);
+  void f(X<597>);
+  void f(X<598>);
+  void f(X<599>);
+  void f(X<600>);
+  void f(X<601>);
+  void f(X<602>);
+  void f(X<603>);
+  void f(X<604>);
+  void f(X<605>);
+  void f(X<606>);
+  void f(X<607>);
+  void f(X<608>);
+  void f(X<609>);
+  void f(X<610>);
+  void f(X<611>);
+  void f(X<612>);
+  void f(X<613>);
+  void f(X<614>);
+  void f(X<615>);
+  void f(X<616>);
+  void f(X<617>);
+  void f(X<618>);
+  void f(X<619>);
+  void f(X<620>);
+  void f(X<621>);
+  void f(X<622>);
+  void f(X<623>);
+  void f(X<624>);
+  void f(X<625>);
+  void f(X<626>);
+  void f(X<627>);
+  void f(X<628>);
+  void f(X<629>);
+  void f(X<630>);
+  void f(X<631>);
+  void f(X<632>);
+  void f(X<633>);
+  void f(X<634>);
+  void f(X<635>);
+  void f(X<636>);
+  void f(X<637>);
+  void f(X<638>);
+  void f(X<639>);
+  void f(X<640>);
+  void f(X<641>);
+  void f(X<642>);
+  void f(X<643>);
+  void f(X<644>);
+  void f(X<645>);
+  void f(X<646>);
+  void f(X<647>);
+  void f(X<648>);
+  void f(X<649>);
+  void f(X<650>);
+  void f(X<651>);
+  void f(X<652>);
+  void f(X<653>);
+  void f(X<654>);
+  void f(X<655>);
+  void f(X<656>);
+  void f(X<657>);
+  void f(X<658>);
+  void f(X<659>);
+  void f(X<660>);
+  void f(X<661>);
+  void f(X<662>);
+  void f(X<663>);
+  void f(X<664>);
+  void f(X<665>);
+  void f(X<666>);
+  void f(X<667>);
+  void f(X<668>);
+  void f(X<669>);
+  void f(X<670>);
+  void f(X<671>);
+  void f(X<672>);
+  void f(X<673>);
+  void f(X<674>);
+  void f(X<675>);
+  void f(X<676>);
+  void f(X<677>);
+  void f(X<678>);
+  void f(X<679>);
+  void f(X<680>);
+  void f(X<681>);
+  void f(X<682>);
+  void f(X<683>);
+  void f(X<684>);
+  void f(X<685>);
+  void f(X<686>);
+  void f(X<687>);
+  void f(X<688>);
+  void f(X<689>);
+  void f(X<690>);
+  void f(X<691>);
+  void f(X<692>);
+  void f(X<693>);
+  void f(X<694>);
+  void f(X<695>);
+  void f(X<696>);
+  void f(X<697>);
+  void f(X<698>);
+  void f(X<699>);
+  void f(X<700>);
+  void f(X<701>);
+  void f(X<702>);
+  void f(X<703>);
+  void f(X<704>);
+  void f(X<705>);
+  void f(X<706>);
+  void f(X<707>);
+  void f(X<708>);
+  void f(X<709>);
+  void f(X<710>);
+  void f(X<711>);
+  void f(X<712>);
+  void f(X<713>);
+  void f(X<714>);
+  void f(X<715>);
+  void f(X<716>);
+  void f(X<717>);
+  void f(X<718>);
+  void f(X<719>);
+  void f(X<720>);
+  void f(X<721>);
+  void f(X<722>);
+  void f(X<723>);
+  void f(X<724>);
+  void f(X<725>);
+  void f(X<726>);
+  void f(X<727>);
+  void f(X<728>);
+  void f(X<729>);
+  void f(X<730>);
+  void f(X<731>);
+  void f(X<732>);
+  void f(X<733>);
+  void f(X<734>);
+  void f(X<735>);
+  void f(X<736>);
+  void f(X<737>);
+  void f(X<738>);
+  void f(X<739>);
+  void f(X<740>);
+  void f(X<741>);
+  void f(X<742>);
+  void f(X<743>);
+  void f(X<744>);
+  void f(X<745>);
+  void f(X<746>);
+  void f(X<747>);
+  void f(X<748>);
+  void f(X<749>);
+  void f(X<750>);
+  void f(X<751>);
+  void f(X<752>);
+  void f(X<753>);
+  void f(X<754>);
+  void f(X<755>);
+  void f(X<756>);
+  void f(X<757>);
+  void f(X<758>);
+  void f(X<759>);
+  void f(X<760>);
+  void f(X<761>);
+  void f(X<762>);
+  void f(X<763>);
+  void f(X<764>);
+  void f(X<765>);
+  void f(X<766>);
+  void f(X<767>);
+  void f(X<768>);
+  void f(X<769>);
+  void f(X<770>);
+  void f(X<771>);
+  void f(X<772>);
+  void f(X<773>);
+  void f(X<774>);
+  void f(X<775>);
+  void f(X<776>);
+  void f(X<777>);
+  void f(X<778>);
+  void f(X<779>);
+  void f(X<780>);
+  void f(X<781>);
+  void f(X<782>);
+  void f(X<783>);
+  void f(X<784>);
+  void f(X<785>);
+  void f(X<786>);
+  void f(X<787>);
+  void f(X<788>);
+  void f(X<789>);
+  void f(X<790>);
+  void f(X<791>);
+  void f(X<792>);
+  void f(X<793>);
+  void f(X<794>);
+  void f(X<795>);
+  void f(X<796>);
+  void f(X<797>);
+  void f(X<798>);
+  void f(X<799>);
+  void f(X<800>);
+  void f(X<801>);
+  void f(X<802>);
+  void f(X<803>);
+  void f(X<804>);
+  void f(X<805>);
+  void f(X<806>);
+  void f(X<807>);
+  void f(X<808>);
+  void f(X<809>);
+  void f(X<810>);
+  void f(X<811>);
+  void f(X<812>);
+  void f(X<813>);
+  void f(X<814>);
+  void f(X<815>);
+  void f(X<816>);
+  void f(X<817>);
+  void f(X<818>);
+  void f(X<819>);
+  void f(X<820>);
+  void f(X<821>);
+  void f(X<822>);
+  void f(X<823>);
+  void f(X<824>);
+  void f(X<825>);
+  void f(X<826>);
+  void f(X<827>);
+  void f(X<828>);
+  void f(X<829>);
+  void f(X<830>);
+  void f(X<831>);
+  void f(X<832>);
+  void f(X<833>);
+  void f(X<834>);
+  void f(X<835>);
+  void f(X<836>);
+  void f(X<837>);
+  void f(X<838>);
+  void f(X<839>);
+  void f(X<840>);
+  void f(X<841>);
+  void f(X<842>);
+  void f(X<843>);
+  void f(X<844>);
+  void f(X<845>);
+  void f(X<846>);
+  void f(X<847>);
+  void f(X<848>);
+  void f(X<849>);
+  void f(X<850>);
+  void f(X<851>);
+  void f(X<852>);
+  void f(X<853>);
+  void f(X<854>);
+  void f(X<855>);
+  void f(X<856>);
+  void f(X<857>);
+  void f(X<858>);
+  void f(X<859>);
+  void f(X<860>);
+  void f(X<861>);
+  void f(X<862>);
+  void f(X<863>);
+  void f(X<864>);
+  void f(X<865>);
+  void f(X<866>);
+  void f(X<867>);
+  void f(X<868>);
+  void f(X<869>);
+  void f(X<870>);
+  void f(X<871>);
+  void f(X<872>);
+  void f(X<873>);
+  void f(X<874>);
+  void f(X<875>);
+  void f(X<876>);
+  void f(X<877>);
+  void f(X<878>);
+  void f(X<879>);
+  void f(X<880>);
+  void f(X<881>);
+  void f(X<882>);
+  void f(X<883>);
+  void f(X<884>);
+  void f(X<885>);
+  void f(X<886>);
+  void f(X<887>);
+  void f(X<888>);
+  void f(X<889>);
+  void f(X<890>);
+  void f(X<891>);
+  void f(X<892>);
+  void f(X<893>);
+  void f(X<894>);
+  void f(X<895>);
+  void f(X<896>);
+  void f(X<897>);
+  void f(X<898>);
+  void f(X<899>);
+  void f(X<900>);
+  void f(X<901>);
+  void f(X<902>);
+  void f(X<903>);
+  void f(X<904>);
+  void f(X<905>);
+  void f(X<906>);
+  void f(X<907>);
+  void f(X<908>);
+  void f(X<909>);
+  void f(X<910>);
+  void f(X<911>);
+  void f(X<912>);
+  void f(X<913>);
+  void f(X<914>);
+  void f(X<915>);
+  void f(X<916>);
+  void f(X<917>);
+  void f(X<918>);
+  void f(X<919>);
+  void f(X<920>);
+  void f(X<921>);
+  void f(X<922>);
+  void f(X<923>);
+  void f(X<924>);
+  void f(X<925>);
+  void f(X<926>);
+  void f(X<927>);
+  void f(X<928>);
+  void f(X<929>);
+  void f(X<930>);
+  void f(X<931>);
+  void f(X<932>);
+  void f(X<933>);
+  void f(X<934>);
+  void f(X<935>);
+  void f(X<936>);
+  void f(X<937>);
+  void f(X<938>);
+  void f(X<939>);
+  void f(X<940>);
+  void f(X<941>);
+  void f(X<942>);
+  void f(X<943>);
+  void f(X<944>);
+  void f(X<945>);
+  void f(X<946>);
+  void f(X<947>);
+  void f(X<948>);
+  void f(X<949>);
+  void f(X<950>);
+  void f(X<951>);
+  void f(X<952>);
+  void f(X<953>);
+  void f(X<954>);
+  void f(X<955>);
+  void f(X<956>);
+  void f(X<957>);
+  void f(X<958>);
+  void f(X<959>);
+  void f(X<960>);
+  void f(X<961>);
+  void f(X<962>);
+  void f(X<963>);
+  void f(X<964>);
+  void f(X<965>);
+  void f(X<966>);
+  void f(X<967>);
+  void f(X<968>);
+  void f(X<969>);
+  void f(X<970>);
+  void f(X<971>);
+  void f(X<972>);
+  void f(X<973>);
+  void f(X<974>);
+  void f(X<975>);
+  void f(X<976>);
+  void f(X<977>);
+  void f(X<978>);
+  void f(X<979>);
+  void f(X<980>);
+  void f(X<981>);
+  void f(X<982>);
+  void f(X<983>);
+  void f(X<984>);
+  void f(X<985>);
+  void f(X<986>);
+  void f(X<987>);
+  void f(X<988>);
+  void f(X<989>);
+  void f(X<990>);
+  void f(X<991>);
+  void f(X<992>);
+  void f(X<993>);
+  void f(X<994>);
+  void f(X<995>);
+  void f(X<996>);
+  void f(X<997>);
+  void f(X<998>);
+  void f(X<999>);
+  void f(X<1000>);
+  void f(X<1001>);
+  void f(X<1002>);
+  void f(X<1003>);
+  void f(X<1004>);
+  void f(X<1005>);
+  void f(X<1006>);
+  void f(X<1007>);
+  void f(X<1008>);
+  void f(X<1009>);
+  void f(X<1010>);
+  void f(X<1011>);
+  void f(X<1012>);
+  void f(X<1013>);
+  void f(X<1014>);
+  void f(X<1015>);
+  void f(X<1016>);
+  void f(X<1017>);
+  void f(X<1018>);
+  void f(X<1019>);
+  void f(X<1020>);
+  void f(X<1021>);
+  void f(X<1022>);
+  void f(X<1023>);
+  void f(X<1024>);
+  void f(X<1025>);
+  void f(X<1026>);
+  void f(X<1027>);
+  void f(X<1028>);
+  void f(X<1029>);
+  void f(X<1030>);
+  void f(X<1031>);
+  void f(X<1032>);
+  void f(X<1033>);
+  void f(X<1034>);
+  void f(X<1035>);
+  void f(X<1036>);
+  void f(X<1037>);
+  void f(X<1038>);
+  void f(X<1039>);
+  void f(X<1040>);
+  void f(X<1041>);
+  void f(X<1042>);
+  void f(X<1043>);
+  void f(X<1044>);
+  void f(X<1045>);
+  void f(X<1046>);
+  void f(X<1047>);
+  void f(X<1048>);
+  void f(X<1049>);
+  void f(X<1050>);
+  void f(X<1051>);
+  void f(X<1052>);
+  void f(X<1053>);
+  void f(X<1054>);
+  void f(X<1055>);
+  void f(X<1056>);
+  void f(X<1057>);
+  void f(X<1058>);
+  void f(X<1059>);
+  void f(X<1060>);
+  void f(X<1061>);
+  void f(X<1062>);
+  void f(X<1063>);
+  void f(X<1064>);
+  void f(X<1065>);
+  void f(X<1066>);
+  void f(X<1067>);
+  void f(X<1068>);
+  void f(X<1069>);
+  void f(X<1070>);
+  void f(X<1071>);
+  void f(X<1072>);
+  void f(X<1073>);
+  void f(X<1074>);
+  void f(X<1075>);
+  void f(X<1076>);
+  void f(X<1077>);
+  void f(X<1078>);
+  void f(X<1079>);
+  void f(X<1080>);
+  void f(X<1081>);
+  void f(X<1082>);
+  void f(X<1083>);
+  void f(X<1084>);
+  void f(X<1085>);
+  void f(X<1086>);
+  void f(X<1087>);
+  void f(X<1088>);
+  void f(X<1089>);
+  void f(X<1090>);
+  void f(X<1091>);
+  void f(X<1092>);
+  void f(X<1093>);
+  void f(X<1094>);
+  void f(X<1095>);
+  void f(X<1096>);
+  void f(X<1097>);
+  void f(X<1098>);
+  void f(X<1099>);
+  void f(X<1100>);
+  void f(X<1101>);
+  void f(X<1102>);
+  void f(X<1103>);
+  void f(X<1104>);
+  void f(X<1105>);
+  void f(X<1106>);
+  void f(X<1107>);
+  void f(X<1108>);
+  void f(X<1109>);
+  void f(X<1110>);
+  void f(X<1111>);
+  void f(X<1112>);
+  void f(X<1113>);
+  void f(X<1114>);
+  void f(X<1115>);
+  void f(X<1116>);
+  void f(X<1117>);
+  void f(X<1118>);
+  void f(X<1119>);
+  void f(X<1120>);
+  void f(X<1121>);
+  void f(X<1122>);
+  void f(X<1123>);
+  void f(X<1124>);
+  void f(X<1125>);
+  void f(X<1126>);
+  void f(X<1127>);
+  void f(X<1128>);
+  void f(X<1129>);
+  void f(X<1130>);
+  void f(X<1131>);
+  void f(X<1132>);
+  void f(X<1133>);
+  void f(X<1134>);
+  void f(X<1135>);
+  void f(X<1136>);
+  void f(X<1137>);
+  void f(X<1138>);
+  void f(X<1139>);
+  void f(X<1140>);
+  void f(X<1141>);
+  void f(X<1142>);
+  void f(X<1143>);
+  void f(X<1144>);
+  void f(X<1145>);
+  void f(X<1146>);
+  void f(X<1147>);
+  void f(X<1148>);
+  void f(X<1149>);
+  void f(X<1150>);
+  void f(X<1151>);
+  void f(X<1152>);
+  void f(X<1153>);
+  void f(X<1154>);
+  void f(X<1155>);
+  void f(X<1156>);
+  void f(X<1157>);
+  void f(X<1158>);
+  void f(X<1159>);
+  void f(X<1160>);
+  void f(X<1161>);
+  void f(X<1162>);
+  void f(X<1163>);
+  void f(X<1164>);
+  void f(X<1165>);
+  void f(X<1166>);
+  void f(X<1167>);
+  void f(X<1168>);
+  void f(X<1169>);
+  void f(X<1170>);
+  void f(X<1171>);
+  void f(X<1172>);
+  void f(X<1173>);
+  void f(X<1174>);
+  void f(X<1175>);
+  void f(X<1176>);
+  void f(X<1177>);
+  void f(X<1178>);
+  void f(X<1179>);
+  void f(X<1180>);
+  void f(X<1181>);
+  void f(X<1182>);
+  void f(X<1183>);
+  void f(X<1184>);
+  void f(X<1185>);
+  void f(X<1186>);
+  void f(X<1187>);
+  void f(X<1188>);
+  void f(X<1189>);
+  void f(X<1190>);
+  void f(X<1191>);
+  void f(X<1192>);
+  void f(X<1193>);
+  void f(X<1194>);
+  void f(X<1195>);
+  void f(X<1196>);
+  void f(X<1197>);
+  void f(X<1198>);
+  void f(X<1199>);
+  void f(X<1200>);
+  void f(X<1201>);
+  void f(X<1202>);
+  void f(X<1203>);
+  void f(X<1204>);
+  void f(X<1205>);
+  void f(X<1206>);
+  void f(X<1207>);
+  void f(X<1208>);
+  void f(X<1209>);
+  void f(X<1210>);
+  void f(X<1211>);
+  void f(X<1212>);
+  void f(X<1213>);
+  void f(X<1214>);
+  void f(X<1215>);
+  void f(X<1216>);
+  void f(X<1217>);
+  void f(X<1218>);
+  void f(X<1219>);
+  void f(X<1220>);
+  void f(X<1221>);
+  void f(X<1222>);
+  void f(X<1223>);
+  void f(X<1224>);
+  void f(X<1225>);
+  void f(X<1226>);
+  void f(X<1227>);
+  void f(X<1228>);
+  void f(X<1229>);
+  void f(X<1230>);
+  void f(X<1231>);
+  void f(X<1232>);
+  void f(X<1233>);
+  void f(X<1234>);
+  void f(X<1235>);
+  void f(X<1236>);
+  void f(X<1237>);
+  void f(X<1238>);
+  void f(X<1239>);
+  void f(X<1240>);
+  void f(X<1241>);
+  void f(X<1242>);
+  void f(X<1243>);
+  void f(X<1244>);
+  void f(X<1245>);
+  void f(X<1246>);
+  void f(X<1247>);
+  void f(X<1248>);
+  void f(X<1249>);
+  void f(X<1250>);
+  void f(X<1251>);
+  void f(X<1252>);
+  void f(X<1253>);
+  void f(X<1254>);
+  void f(X<1255>);
+  void f(X<1256>);
+  void f(X<1257>);
+  void f(X<1258>);
+  void f(X<1259>);
+  void f(X<1260>);
+  void f(X<1261>);
+  void f(X<1262>);
+  void f(X<1263>);
+  void f(X<1264>);
+  void f(X<1265>);
+  void f(X<1266>);
+  void f(X<1267>);
+  void f(X<1268>);
+  void f(X<1269>);
+  void f(X<1270>);
+  void f(X<1271>);
+  void f(X<1272>);
+  void f(X<1273>);
+  void f(X<1274>);
+  void f(X<1275>);
+  void f(X<1276>);
+  void f(X<1277>);
+  void f(X<1278>);
+  void f(X<1279>);
+  void f(X<1280>);
+  void f(X<1281>);
+  void f(X<1282>);
+  void f(X<1283>);
+  void f(X<1284>);
+  void f(X<1285>);
+  void f(X<1286>);
+  void f(X<1287>);
+  void f(X<1288>);
+  void f(X<1289>);
+  void f(X<1290>);
+  void f(X<1291>);
+  void f(X<1292>);
+  void f(X<1293>);
+  void f(X<1294>);
+  void f(X<1295>);
+  void f(X<1296>);
+  void f(X<1297>);
+  void f(X<1298>);
+  void f(X<1299>);
+  void f(X<1300>);
+  void f(X<1301>);
+  void f(X<1302>);
+  void f(X<1303>);
+  void f(X<1304>);
+  void f(X<1305>);
+  void f(X<1306>);
+  void f(X<1307>);
+  void f(X<1308>);
+  void f(X<1309>);
+  void f(X<1310>);
+  void f(X<1311>);
+  void f(X<1312>);
+  void f(X<1313>);
+  void f(X<1314>);
+  void f(X<1315>);
+  void f(X<1316>);
+  void f(X<1317>);
+  void f(X<1318>);
+  void f(X<1319>);
+  void f(X<1320>);
+  void f(X<1321>);
+  void f(X<1322>);
+  void f(X<1323>);
+  void f(X<1324>);
+  void f(X<1325>);
+  void f(X<1326>);
+  void f(X<1327>);
+  void f(X<1328>);
+  void f(X<1329>);
+  void f(X<1330>);
+  void f(X<1331>);
+  void f(X<1332>);
+  void f(X<1333>);
+  void f(X<1334>);
+  void f(X<1335>);
+  void f(X<1336>);
+  void f(X<1337>);
+  void f(X<1338>);
+  void f(X<1339>);
+  void f(X<1340>);
+  void f(X<1341>);
+  void f(X<1342>);
+  void f(X<1343>);
+  void f(X<1344>);
+  void f(X<1345>);
+  void f(X<1346>);
+  void f(X<1347>);
+  void f(X<1348>);
+  void f(X<1349>);
+  void f(X<1350>);
+  void f(X<1351>);
+  void f(X<1352>);
+  void f(X<1353>);
+  void f(X<1354>);
+  void f(X<1355>);
+  void f(X<1356>);
+  void f(X<1357>);
+  void f(X<1358>);
+  void f(X<1359>);
+  void f(X<1360>);
+  void f(X<1361>);
+  void f(X<1362>);
+  void f(X<1363>);
+  void f(X<1364>);
+  void f(X<1365>);
+  void f(X<1366>);
+  void f(X<1367>);
+  void f(X<1368>);
+  void f(X<1369>);
+  void f(X<1370>);
+  void f(X<1371>);
+  void f(X<1372>);
+  void f(X<1373>);
+  void f(X<1374>);
+  void f(X<1375>);
+  void f(X<1376>);
+  void f(X<1377>);
+  void f(X<1378>);
+  void f(X<1379>);
+  void f(X<1380>);
+  void f(X<1381>);
+  void f(X<1382>);
+  void f(X<1383>);
+  void f(X<1384>);
+  void f(X<1385>);
+  void f(X<1386>);
+  void f(X<1387>);
+  void f(X<1388>);
+  void f(X<1389>);
+  void f(X<1390>);
+  void f(X<1391>);
+  void f(X<1392>);
+  void f(X<1393>);
+  void f(X<1394>);
+  void f(X<1395>);
+  void f(X<1396>);
+  void f(X<1397>);
+  void f(X<1398>);
+  void f(X<1399>);
+  void f(X<1400>);
+  void f(X<1401>);
+  void f(X<1402>);
+  void f(X<1403>);
+  void f(X<1404>);
+  void f(X<1405>);
+  void f(X<1406>);
+  void f(X<1407>);
+  void f(X<1408>);
+  void f(X<1409>);
+  void f(X<1410>);
+  void f(X<1411>);
+  void f(X<1412>);
+  void f(X<1413>);
+  void f(X<1414>);
+  void f(X<1415>);
+  void f(X<1416>);
+  void f(X<1417>);
+  void f(X<1418>);
+  void f(X<1419>);
+  void f(X<1420>);
+  void f(X<1421>);
+  void f(X<1422>);
+  void f(X<1423>);
+  void f(X<1424>);
+  void f(X<1425>);
+  void f(X<1426>);
+  void f(X<1427>);
+  void f(X<1428>);
+  void f(X<1429>);
+  void f(X<1430>);
+  void f(X<1431>);
+  void f(X<1432>);
+  void f(X<1433>);
+  void f(X<1434>);
+  void f(X<1435>);
+  void f(X<1436>);
+  void f(X<1437>);
+  void f(X<1438>);
+  void f(X<1439>);
+  void f(X<1440>);
+  void f(X<1441>);
+  void f(X<1442>);
+  void f(X<1443>);
+  void f(X<1444>);
+  void f(X<1445>);
+  void f(X<1446>);
+  void f(X<1447>);
+  void f(X<1448>);
+  void f(X<1449>);
+  void f(X<1450>);
+  void f(X<1451>);
+  void f(X<1452>);
+  void f(X<1453>);
+  void f(X<1454>);
+  void f(X<1455>);
+  void f(X<1456>);
+  void f(X<1457>);
+  void f(X<1458>);
+  void f(X<1459>);
+  void f(X<1460>);
+  void f(X<1461>);
+  void f(X<1462>);
+  void f(X<1463>);
+  void f(X<1464>);
+  void f(X<1465>);
+  void f(X<1466>);
+  void f(X<1467>);
+  void f(X<1468>);
+  void f(X<1469>);
+  void f(X<1470>);
+  void f(X<1471>);
+  void f(X<1472>);
+  void f(X<1473>);
+  void f(X<1474>);
+  void f(X<1475>);
+  void f(X<1476>);
+  void f(X<1477>);
+  void f(X<1478>);
+  void f(X<1479>);
+  void f(X<1480>);
+  void f(X<1481>);
+  void f(X<1482>);
+  void f(X<1483>);
+  void f(X<1484>);
+  void f(X<1485>);
+  void f(X<1486>);
+  void f(X<1487>);
+  void f(X<1488>);
+  void f(X<1489>);
+  void f(X<1490>);
+  void f(X<1491>);
+  void f(X<1492>);
+  void f(X<1493>);
+  void f(X<1494>);
+  void f(X<1495>);
+  void f(X<1496>);
+  void f(X<1497>);
+  void f(X<1498>);
+  void f(X<1499>);
+  void f(X<1500>);
+  void f(X<1501>);
+  void f(X<1502>);
+  void f(X<1503>);
+  void f(X<1504>);
+  void f(X<1505>);
+  void f(X<1506>);
+  void f(X<1507>);
+  void f(X<1508>);
+  void f(X<1509>);
+  void f(X<1510>);
+  void f(X<1511>);
+  void f(X<1512>);
+  void f(X<1513>);
+  void f(X<1514>);
+  void f(X<1515>);
+  void f(X<1516>);
+  void f(X<1517>);
+  void f(X<1518>);
+  void f(X<1519>);
+  void f(X<1520>);
+  void f(X<1521>);
+  void f(X<1522>);
+  void f(X<1523>);
+  void f(X<1524>);
+  void f(X<1525>);
+  void f(X<1526>);
+  void f(X<1527>);
+  void f(X<1528>);
+  void f(X<1529>);
+  void f(X<1530>);
+  void f(X<1531>);
+  void f(X<1532>);
+  void f(X<1533>);
+  void f(X<1534>);
+  void f(X<1535>);
+  void f(X<1536>);
+  void f(X<1537>);
+  void f(X<1538>);
+  void f(X<1539>);
+  void f(X<1540>);
+  void f(X<1541>);
+  void f(X<1542>);
+  void f(X<1543>);
+  void f(X<1544>);
+  void f(X<1545>);
+  void f(X<1546>);
+  void f(X<1547>);
+  void f(X<1548>);
+  void f(X<1549>);
+  void f(X<1550>);
+  void f(X<1551>);
+  void f(X<1552>);
+  void f(X<1553>);
+  void f(X<1554>);
+  void f(X<1555>);
+  void f(X<1556>);
+  void f(X<1557>);
+  void f(X<1558>);
+  void f(X<1559>);
+  void f(X<1560>);
+  void f(X<1561>);
+  void f(X<1562>);
+  void f(X<1563>);
+  void f(X<1564>);
+  void f(X<1565>);
+  void f(X<1566>);
+  void f(X<1567>);
+  void f(X<1568>);
+  void f(X<1569>);
+  void f(X<1570>);
+  void f(X<1571>);
+  void f(X<1572>);
+  void f(X<1573>);
+  void f(X<1574>);
+  void f(X<1575>);
+  void f(X<1576>);
+  void f(X<1577>);
+  void f(X<1578>);
+  void f(X<1579>);
+  void f(X<1580>);
+  void f(X<1581>);
+  void f(X<1582>);
+  void f(X<1583>);
+  void f(X<1584>);
+  void f(X<1585>);
+  void f(X<1586>);
+  void f(X<1587>);
+  void f(X<1588>);
+  void f(X<1589>);
+  void f(X<1590>);
+  void f(X<1591>);
+  void f(X<1592>);
+  void f(X<1593>);
+  void f(X<1594>);
+  void f(X<1595>);
+  void f(X<1596>);
+  void f(X<1597>);
+  void f(X<1598>);
+  void f(X<1599>);
+  void f(X<1600>);
+  void f(X<1601>);
+  void f(X<1602>);
+  void f(X<1603>);
+  void f(X<1604>);
+  void f(X<1605>);
+  void f(X<1606>);
+  void f(X<1607>);
+  void f(X<1608>);
+  void f(X<1609>);
+  void f(X<1610>);
+  void f(X<1611>);
+  void f(X<1612>);
+  void f(X<1613>);
+  void f(X<1614>);
+  void f(X<1615>);
+  void f(X<1616>);
+  void f(X<1617>);
+  void f(X<1618>);
+  void f(X<1619>);
+  void f(X<1620>);
+  void f(X<1621>);
+  void f(X<1622>);
+  void f(X<1623>);
+  void f(X<1624>);
+  void f(X<1625>);
+  void f(X<1626>);
+  void f(X<1627>);
+  void f(X<1628>);
+  void f(X<1629>);
+  void f(X<1630>);
+  void f(X<1631>);
+  void f(X<1632>);
+  void f(X<1633>);
+  void f(X<1634>);
+  void f(X<1635>);
+  void f(X<1636>);
+  void f(X<1637>);
+  void f(X<1638>);
+  void f(X<1639>);
+  void f(X<1640>);
+  void f(X<1641>);
+  void f(X<1642>);
+  void f(X<1643>);
+  void f(X<1644>);
+  void f(X<1645>);
+  void f(X<1646>);
+  void f(X<1647>);
+  void f(X<1648>);
+  void f(X<1649>);
+  void f(X<1650>);
+  void f(X<1651>);
+  void f(X<1652>);
+  void f(X<1653>);
+  void f(X<1654>);
+  void f(X<1655>);
+  void f(X<1656>);
+  void f(X<1657>);
+  void f(X<1658>);
+  void f(X<1659>);
+  void f(X<1660>);
+  void f(X<1661>);
+  void f(X<1662>);
+  void f(X<1663>);
+  void f(X<1664>);
+  void f(X<1665>);
+  void f(X<1666>);
+  void f(X<1667>);
+  void f(X<1668>);
+  void f(X<1669>);
+  void f(X<1670>);
+  void f(X<1671>);
+  void f(X<1672>);
+  void f(X<1673>);
+  void f(X<1674>);
+  void f(X<1675>);
+  void f(X<1676>);
+  void f(X<1677>);
+  void f(X<1678>);
+  void f(X<1679>);
+  void f(X<1680>);
+  void f(X<1681>);
+  void f(X<1682>);
+  void f(X<1683>);
+  void f(X<1684>);
+  void f(X<1685>);
+  void f(X<1686>);
+  void f(X<1687>);
+  void f(X<1688>);
+  void f(X<1689>);
+  void f(X<1690>);
+  void f(X<1691>);
+  void f(X<1692>);
+  void f(X<1693>);
+  void f(X<1694>);
+  void f(X<1695>);
+  void f(X<1696>);
+  void f(X<1697>);
+  void f(X<1698>);
+  void f(X<1699>);
+  void f(X<1700>);
+  void f(X<1701>);
+  void f(X<1702>);
+  void f(X<1703>);
+  void f(X<1704>);
+  void f(X<1705>);
+  void f(X<1706>);
+  void f(X<1707>);
+  void f(X<1708>);
+  void f(X<1709>);
+  void f(X<1710>);
+  void f(X<1711>);
+  void f(X<1712>);
+  void f(X<1713>);
+  void f(X<1714>);
+  void f(X<1715>);
+  void f(X<1716>);
+  void f(X<1717>);
+  void f(X<1718>);
+  void f(X<1719>);
+  void f(X<1720>);
+  void f(X<1721>);
+  void f(X<1722>);
+  void f(X<1723>);
+  void f(X<1724>);
+  void f(X<1725>);
+  void f(X<1726>);
+  void f(X<1727>);
+  void f(X<1728>);
+  void f(X<1729>);
+  void f(X<1730>);
+  void f(X<1731>);
+  void f(X<1732>);
+  void f(X<1733>);
+  void f(X<1734>);
+  void f(X<1735>);
+  void f(X<1736>);
+  void f(X<1737>);
+  void f(X<1738>);
+  void f(X<1739>);
+  void f(X<1740>);
+  void f(X<1741>);
+  void f(X<1742>);
+  void f(X<1743>);
+  void f(X<1744>);
+  void f(X<1745>);
+  void f(X<1746>);
+  void f(X<1747>);
+  void f(X<1748>);
+  void f(X<1749>);
+  void f(X<1750>);
+  void f(X<1751>);
+  void f(X<1752>);
+  void f(X<1753>);
+  void f(X<1754>);
+  void f(X<1755>);
+  void f(X<1756>);
+  void f(X<1757>);
+  void f(X<1758>);
+  void f(X<1759>);
+  void f(X<1760>);
+  void f(X<1761>);
+  void f(X<1762>);
+  void f(X<1763>);
+  void f(X<1764>);
+  void f(X<1765>);
+  void f(X<1766>);
+  void f(X<1767>);
+  void f(X<1768>);
+  void f(X<1769>);
+  void f(X<1770>);
+  void f(X<1771>);
+  void f(X<1772>);
+  void f(X<1773>);
+  void f(X<1774>);
+  void f(X<1775>);
+  void f(X<1776>);
+  void f(X<1777>);
+  void f(X<1778>);
+  void f(X<1779>);
+  void f(X<1780>);
+  void f(X<1781>);
+  void f(X<1782>);
+  void f(X<1783>);
+  void f(X<1784>);
+  void f(X<1785>);
+  void f(X<1786>);
+  void f(X<1787>);
+  void f(X<1788>);
+  void f(X<1789>);
+  void f(X<1790>);
+  void f(X<1791>);
+  void f(X<1792>);
+  void f(X<1793>);
+  void f(X<1794>);
+  void f(X<1795>);
+  void f(X<1796>);
+  void f(X<1797>);
+  void f(X<1798>);
+  void f(X<1799>);
+  void f(X<1800>);
+  void f(X<1801>);
+  void f(X<1802>);
+  void f(X<1803>);
+  void f(X<1804>);
+  void f(X<1805>);
+  void f(X<1806>);
+  void f(X<1807>);
+  void f(X<1808>);
+  void f(X<1809>);
+  void f(X<1810>);
+  void f(X<1811>);
+  void f(X<1812>);
+  void f(X<1813>);
+  void f(X<1814>);
+  void f(X<1815>);
+  void f(X<1816>);
+  void f(X<1817>);
+  void f(X<1818>);
+  void f(X<1819>);
+  void f(X<1820>);
+  void f(X<1821>);
+  void f(X<1822>);
+  void f(X<1823>);
+  void f(X<1824>);
+  void f(X<1825>);
+  void f(X<1826>);
+  void f(X<1827>);
+  void f(X<1828>);
+  void f(X<1829>);
+  void f(X<1830>);
+  void f(X<1831>);
+  void f(X<1832>);
+  void f(X<1833>);
+  void f(X<1834>);
+  void f(X<1835>);
+  void f(X<1836>);
+  void f(X<1837>);
+  void f(X<1838>);
+  void f(X<1839>);
+  void f(X<1840>);
+  void f(X<1841>);
+  void f(X<1842>);
+  void f(X<1843>);
+  void f(X<1844>);
+  void f(X<1845>);
+  void f(X<1846>);
+  void f(X<1847>);
+  void f(X<1848>);
+  void f(X<1849>);
+  void f(X<1850>);
+  void f(X<1851>);
+  void f(X<1852>);
+  void f(X<1853>);
+  void f(X<1854>);
+  void f(X<1855>);
+  void f(X<1856>);
+  void f(X<1857>);
+  void f(X<1858>);
+  void f(X<1859>);
+  void f(X<1860>);
+  void f(X<1861>);
+  void f(X<1862>);
+  void f(X<1863>);
+  void f(X<1864>);
+  void f(X<1865>);
+  void f(X<1866>);
+  void f(X<1867>);
+  void f(X<1868>);
+  void f(X<1869>);
+  void f(X<1870>);
+  void f(X<1871>);
+  void f(X<1872>);
+  void f(X<1873>);
+  void f(X<1874>);
+  void f(X<1875>);
+  void f(X<1876>);
+  void f(X<1877>);
+  void f(X<1878>);
+  void f(X<1879>);
+  void f(X<1880>);
+  void f(X<1881>);
+  void f(X<1882>);
+  void f(X<1883>);
+  void f(X<1884>);
+  void f(X<1885>);
+  void f(X<1886>);
+  void f(X<1887>);
+  void f(X<1888>);
+  void f(X<1889>);
+  void f(X<1890>);
+  void f(X<1891>);
+  void f(X<1892>);
+  void f(X<1893>);
+  void f(X<1894>);
+  void f(X<1895>);
+  void f(X<1896>);
+  void f(X<1897>);
+  void f(X<1898>);
+  void f(X<1899>);
+  void f(X<1900>);
+  void f(X<1901>);
+  void f(X<1902>);
+  void f(X<1903>);
+  void f(X<1904>);
+  void f(X<1905>);
+  void f(X<1906>);
+  void f(X<1907>);
+  void f(X<1908>);
+  void f(X<1909>);
+  void f(X<1910>);
+  void f(X<1911>);
+  void f(X<1912>);
+  void f(X<1913>);
+  void f(X<1914>);
+  void f(X<1915>);
+  void f(X<1916>);
+  void f(X<1917>);
+  void f(X<1918>);
+  void f(X<1919>);
+  void f(X<1920>);
+  void f(X<1921>);
+  void f(X<1922>);
+  void f(X<1923>);
+  void f(X<1924>);
+  void f(X<1925>);
+  void f(X<1926>);
+  void f(X<1927>);
+  void f(X<1928>);
+  void f(X<1929>);
+  void f(X<1930>);
+  void f(X<1931>);
+  void f(X<1932>);
+  void f(X<1933>);
+  void f(X<1934>);
+  void f(X<1935>);
+  void f(X<1936>);
+  void f(X<1937>);
+  void f(X<1938>);
+  void f(X<1939>);
+  void f(X<1940>);
+  void f(X<1941>);
+  void f(X<1942>);
+  void f(X<1943>);
+  void f(X<1944>);
+  void f(X<1945>);
+  void f(X<1946>);
+  void f(X<1947>);
+  void f(X<1948>);
+  void f(X<1949>);
+  void f(X<1950>);
+  void f(X<1951>);
+  void f(X<1952>);
+  void f(X<1953>);
+  void f(X<1954>);
+  void f(X<1955>);
+  void f(X<1956>);
+  void f(X<1957>);
+  void f(X<1958>);
+  void f(X<1959>);
+  void f(X<1960>);
+  void f(X<1961>);
+  void f(X<1962>);
+  void f(X<1963>);
+  void f(X<1964>);
+  void f(X<1965>);
+  void f(X<1966>);
+  void f(X<1967>);
+  void f(X<1968>);
+  void f(X<1969>);
+  void f(X<1970>);
+  void f(X<1971>);
+  void f(X<1972>);
+  void f(X<1973>);
+  void f(X<1974>);
+  void f(X<1975>);
+  void f(X<1976>);
+  void f(X<1977>);
+  void f(X<1978>);
+  void f(X<1979>);
+  void f(X<1980>);
+  void f(X<1981>);
+  void f(X<1982>);
+  void f(X<1983>);
+  void f(X<1984>);
+  void f(X<1985>);
+  void f(X<1986>);
+  void f(X<1987>);
+  void f(X<1988>);
+  void f(X<1989>);
+  void f(X<1990>);
+  void f(X<1991>);
+  void f(X<1992>);
+  void f(X<1993>);
+  void f(X<1994>);
+  void f(X<1995>);
+  void f(X<1996>);
+  void f(X<1997>);
+  void f(X<1998>);
+  void f(X<1999>);
+  void f(X<2000>);
+}

Modified: cfe/trunk/test/Modules/Inputs/module.map
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/module.map?rev=174685&r1=174684&r2=174685&view=diff
==============================================================================
--- cfe/trunk/test/Modules/Inputs/module.map (original)
+++ cfe/trunk/test/Modules/Inputs/module.map Thu Feb  7 18:37:45 2013
@@ -167,3 +167,7 @@ module weird_objc {
 module ignored_macros {
   header "ignored_macros.h"
 }
+
+module cxx_many_overloads {
+  header "cxx-many-overloads.h"
+}

Added: cfe/trunk/test/Modules/cxx-many-overloads.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/cxx-many-overloads.cpp?rev=174685&view=auto
==============================================================================
--- cfe/trunk/test/Modules/cxx-many-overloads.cpp (added)
+++ cfe/trunk/test/Modules/cxx-many-overloads.cpp Thu Feb  7 18:37:45 2013
@@ -0,0 +1,9 @@
+// RUN: rm -rf %t
+// RUN: %clang_cc1 -x objective-c++ -fmodules -fmodule-cache-path %t -I %S/Inputs %s -verify
+
+// expected-no-diagnostics
+ at import cxx_many_overloads;
+
+void g() {
+  f(N::X<0>());
+}





More information about the cfe-commits mailing list