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