r246497 - [modules] Rework serialized DeclContext lookup table management. Instead of
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Tue Sep 1 06:26:02 PDT 2015
On Tue, Sep 1, 2015 at 4:43 AM, İsmail Dönmez
<cfe-commits at lists.llvm.org> wrote:
> Hi,
>
> On Tue, Sep 1, 2015 at 1:17 AM, Richard Smith via cfe-commits
> <cfe-commits at lists.llvm.org> wrote:
>> Author: rsmith
>> Date: Mon Aug 31 17:17:11 2015
>> New Revision: 246497
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=246497&view=rev
>> Log:
>> [modules] Rework serialized DeclContext lookup table management. Instead of
>> walking the loaded ModuleFiles looking for lookup tables for the context, store
>> them all in one place, and merge them together if we find we have too many
>> (currently, more than 4). If we do merge, include the merged form in our
>> serialized lookup table, so that downstream readers never need to look at our
>> imports' tables.
>>
>> This gives a huge performance improvement to builds with very large numbers of
>> modules (in some cases, more than a 2x speedup was observed).
>>
>> Added:
>> cfe/trunk/lib/Serialization/MultiOnDiskHashTable.h
>
> This doesn't seem to compile with VS2015:
>
> FAILED: C:\PROGRA~2\MICROS~1.0\VC\bin\amd64\cl.exe /nologo /TP
> /DWIN32 /D_WINDOWS -wd4146 -wd4180 -wd4244 -wd4258 -wd4267 -wd4291
> -wd4345 -wd4351 -wd4355 -wd4456 -wd4457 -wd4458 -wd4459 -wd4503
> -wd4624 -wd4722 -wd4800 -wd4100 -wd4127 -wd4512 -wd4505 -wd4610
> -wd4510 -wd4702 -wd4245 -wd4706 -wd4310 -wd4701 -wd4703 -wd4389
> -wd4611 -wd4805 -wd4204 -wd4577 -wd4091 -wd4324 -w14062 -we4238 /W4
> /Zc:inline /Zc:sizedDealloc- /MT /O2 /Ob2
> -Itools\clang\lib\Serialization -I..\tools\clang\lib\Serialization
> -I..\tools\clang\include -Itools\clang\include -Iinclude -I..\include
> -UNDEBUG /EHs-c- /GR- /showIncludes -DCLANG_ENABLE_ARCMT
> -DCLANG_ENABLE_OBJC_REWRITER -DCLANG_ENABLE_STATIC_ANALYZER
> -DGTEST_HAS_RTTI=0 -D_CRT_NONSTDC_NO_DEPRECATE
> -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE
> -D_CRT_SECURE_NO_WARNINGS -D_GNU_SOURCE -D_HAS_EXCEPTIONS=0
> -D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS
> -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
> /Fotools\clang\lib\Serialization\CMakeFiles\clangSerialization.dir\ASTReader.cpp.obj
> /Fdtools\clang\lib\Serialization\CMakeFiles\clangSerialization.dir\
> /FS -c ..\tools\clang\lib\Serialization\ASTReader.cpp
> c:\cygwin64\home\ismail\src\llvm\tools\clang\lib\serialization\MultiOnDiskHashTable.h(117):
> error C2065: 'Files': undeclared identifier
> c:\cygwin64\home\ismail\src\llvm\tools\clang\lib\serialization\MultiOnDiskHashTable.h(111):
> note: while compiling class template member function 'void
> clang::serialization::MultiOnDiskHashTable<clang::serialization::reader::ASTDeclContextNameLookupTrait>::removeOverriddenTables(void)'
> c:\cygwin64\home\ismail\src\llvm\tools\clang\lib\serialization\MultiOnDiskHashTable.h(243):
> note: see reference to function template instantiation 'void
> clang::serialization::MultiOnDiskHashTable<clang::serialization::reader::ASTDeclContextNameLookupTrait>::removeOverriddenTables(void)'
> being compiled
> c:\cygwin64\home\ismail\src\llvm\tools\clang\lib\serialization\ASTReaderInternals.h(114):
> note: see reference to class template instantiation
> 'clang::serialization::MultiOnDiskHashTable<clang::serialization::reader::ASTDeclContextNameLookupTrait>'
> being compiled
> c:\cygwin64\home\ismail\src\llvm\tools\clang\lib\serialization\MultiOnDiskHashTable.h(117):
> error C2228: left of '.count' must have class/struct/union
> c:\cygwin64\home\ismail\src\llvm\tools\clang\lib\serialization\MultiOnDiskHashTable.h(117):
> note: type is 'unknown-type'
> ninja: build stopped: subcommand failed.
I have reverted r246497 (which required also reverting r246524 and
r246521 to avoid merge conflicts) to get back to green. Commit was
r246546.
I'm not certain why MSVC is falling over on this code, but I suspect
compiler bug. If anyone has a reduced testcase (which I may spend some
time on if I have a moment), I would be happy to report it to
Microsoft.
~Aaron
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list