[cfe-dev] BUILD_SHARED_LIBS=True breaks some tests
Joel E. Denny via cfe-dev
cfe-dev at lists.llvm.org
Wed Jan 9 07:39:52 PST 2019
On Wed, Jan 9, 2019 at 1:59 AM Kim Gräsman <kim.grasman at gmail.com> wrote:
> Can you dig out more details around why it fails?
>
Sure, here's the lit output for the first three:
```
FAIL: Clang :: CXX/modules-ts/basic/basic.link/p2/module.cpp (1149 of 13760)
******************** TEST 'Clang ::
CXX/modules-ts/basic/basic.link/p2/module.cpp' FAILED ********************
Script:
--
: 'RUN: at line 1'; /home/jdenny/ornl/llvm-mono-git-build/bin/clang -cc1
-internal-isystem
/home/jdenny/ornl/llvm-mono-git-build/lib/clang/8.0.0/include
-nostdsysteminc -std=c++1z -fmodules-ts
/home/jdenny/ornl/llvm-mono-git/clang/test/CXX/modules-ts/basic/basic.link/p2/module.cppm
-emit-module-interface -o
/home/jdenny/ornl/llvm-mono-git-build/tools/clang/test/CXX/modules-ts/basic/basic.link/p2/Output/module.cpp.tmp
: 'RUN: at line 2'; /home/jdenny/ornl/llvm-mono-git-build/bin/clang -cc1
-internal-isystem
/home/jdenny/ornl/llvm-mono-git-build/lib/clang/8.0.0/include
-nostdsysteminc -std=c++1z -fmodules-ts
-fmodule-file=/home/jdenny/ornl/llvm-mono-git-build/tools/clang/test/CXX/modules-ts/basic/basic.link/p2/Output/module.cpp.tmp
/home/jdenny/ornl/llvm-mono-git/clang/test/CXX/modules-ts/basic/basic.link/p2/module.cpp
-verify
--
Exit Code: 1
Command Output (stderr):
--
error: 'error' diagnostics seen but not expected:
File
/home/jdenny/ornl/llvm-mono-git/clang/test/CXX/modules-ts/basic/basic.link/p2/module.cpp
Line 13: expected ';' after expression
File
/home/jdenny/ornl/llvm-mono-git/clang/test/CXX/modules-ts/basic/basic.link/p2/module.cpp
Line 13: use of undeclared identifier 'internal_linkage_class'
2 errors generated.
--
********************
FAIL: Clang :: Modules/ExtDebugInfo.cpp (5908 of 13760)
******************** TEST 'Clang :: Modules/ExtDebugInfo.cpp' FAILED
********************
Script:
--
: 'RUN: at line 1'; rm -rf
/home/jdenny/ornl/llvm-mono-git-build/tools/clang/test/Modules/Output/ExtDebugInfo.cpp.tmp
: 'RUN: at line 5'; /home/jdenny/ornl/llvm-mono-git-build/bin/clang -cc1
-internal-isystem
/home/jdenny/ornl/llvm-mono-git-build/lib/clang/8.0.0/include
-nostdsysteminc -x objective-c++ -std=c++11
-debug-info-kind=standalone -dwarf-ext-refs
-fmodules -fmodule-format=obj
-fimplicit-module-maps -DMODULES -triple x86_64-unknown-linux-gnu
-fmodules-cache-path=/home/jdenny/ornl/llvm-mono-git-build/tools/clang/test/Modules/Output/ExtDebugInfo.cpp.tmp
/home/jdenny/ornl/llvm-mono-git/clang/test/Modules/ExtDebugInfo.cpp -I
/home/jdenny/ornl/llvm-mono-git/clang/test/Modules/Inputs -I
/home/jdenny/ornl/llvm-mono-git-build/tools/clang/test/Modules/Output/ExtDebugInfo.cpp.tmp
-emit-llvm -o
/home/jdenny/ornl/llvm-mono-git-build/tools/clang/test/Modules/Output/ExtDebugInfo.cpp.tmp-mod.ll
: 'RUN: at line 10'; cat
/home/jdenny/ornl/llvm-mono-git-build/tools/clang/test/Modules/Output/ExtDebugInfo.cpp.tmp-mod.ll
| /home/jdenny/ornl/llvm-mono-git-build/bin/FileCheck
/home/jdenny/ornl/llvm-mono-git/clang/test/Modules/ExtDebugInfo.cpp
: 'RUN: at line 13'; /home/jdenny/ornl/llvm-mono-git-build/bin/clang -cc1
-internal-isystem
/home/jdenny/ornl/llvm-mono-git-build/lib/clang/8.0.0/include
-nostdsysteminc -x c++ -std=c++11 -fmodule-format=obj -emit-pch
-I/home/jdenny/ornl/llvm-mono-git/clang/test/Modules/Inputs -triple
x86_64-unknown-linux-gnu -o
/home/jdenny/ornl/llvm-mono-git-build/tools/clang/test/Modules/Output/ExtDebugInfo.cpp.tmp.pch
/home/jdenny/ornl/llvm-mono-git/clang/test/Modules/Inputs/DebugCXX.h
: 'RUN: at line 16'; /home/jdenny/ornl/llvm-mono-git-build/bin/clang -cc1
-internal-isystem
/home/jdenny/ornl/llvm-mono-git-build/lib/clang/8.0.0/include
-nostdsysteminc -std=c++11 -debug-info-kind=standalone -dwarf-ext-refs
-fmodule-format=obj -triple x86_64-unknown-linux-gnu -include-pch
/home/jdenny/ornl/llvm-mono-git-build/tools/clang/test/Modules/Output/ExtDebugInfo.cpp.tmp.pch
/home/jdenny/ornl/llvm-mono-git/clang/test/Modules/ExtDebugInfo.cpp
-emit-llvm -o
/home/jdenny/ornl/llvm-mono-git-build/tools/clang/test/Modules/Output/ExtDebugInfo.cpp.tmp-pch.ll
: 'RUN: at line 20'; cat
/home/jdenny/ornl/llvm-mono-git-build/tools/clang/test/Modules/Output/ExtDebugInfo.cpp.tmp-pch.ll
| /home/jdenny/ornl/llvm-mono-git-build/bin/FileCheck
/home/jdenny/ornl/llvm-mono-git/clang/test/Modules/ExtDebugInfo.cpp
: 'RUN: at line 21'; cat
/home/jdenny/ornl/llvm-mono-git-build/tools/clang/test/Modules/Output/ExtDebugInfo.cpp.tmp-pch.ll
| /home/jdenny/ornl/llvm-mono-git-build/bin/FileCheck
/home/jdenny/ornl/llvm-mono-git/clang/test/Modules/ExtDebugInfo.cpp
--check-prefix=CHECK-PCH
--
Exit Code: 1
Command Output (stderr):
--
/home/jdenny/ornl/llvm-mono-git/clang/test/Modules/ExtDebugInfo.cpp:54:1:
error: unknown type name 'InAnonymousNamespace'
InAnonymousNamespace anon;
^
1 error generated.
--
********************
FAIL: Clang :: Modules/using-directive-redecl.cpp (6305 of 13760)
******************** TEST 'Clang :: Modules/using-directive-redecl.cpp'
FAILED ********************
Script:
--
: 'RUN: at line 1'; /home/jdenny/ornl/llvm-mono-git-build/bin/clang -cc1
-internal-isystem
/home/jdenny/ornl/llvm-mono-git-build/lib/clang/8.0.0/include
-nostdsysteminc -fmodules -fmodules-local-submodule-visibility -verify
/home/jdenny/ornl/llvm-mono-git/clang/test/Modules/using-directive-redecl.cpp
--
Exit Code: 1
Command Output (stderr):
--
error: 'error' diagnostics seen but not expected:
File
/home/jdenny/ornl/llvm-mono-git/clang/test/Modules/using-directive-redecl.cpp
Line 35: unknown type name 'TLoopManager'; did you mean
'Detail::TDF::TLoopManager'?
error: 'note' diagnostics seen but not expected:
File /home/jdenny/ornl/llvm-mono-git-build/tools/clang/test/Modules/M.map
Line 7: 'Detail::TDF::TLoopManager' declared here
2 errors generated.
--
```
I'm happy to provide more if you like.
Joel
> We have a recurring request to add a dependency on clangSerialization from
> IWYU because it's missing under BUILD_SHARED_LIBS. I wonder if this might
> be an in-tree repro of that problem.
>
> Thanks,
> - Kim
>
> On Wed, Jan 9, 2019, 00:04 Chris Bieneman via cfe-dev <
> cfe-dev at lists.llvm.org wrote:
>
>>
>>
>> On Jan 8, 2019, at 2:44 PM, Joel E. Denny via cfe-dev <
>> cfe-dev at lists.llvm.org> wrote:
>>
>> On Tue, Jan 8, 2019 at 5:14 PM David Greene <dag at cray.com> wrote:
>>
>>> "Joel E. Denny via cfe-dev" <cfe-dev at lists.llvm.org> writes:
>>>
>>> > Do other Clang developers find BUILD_SHARED_LIBS=True useful? Do you
>>> > see the above failures? Should there be a bot to test that build
>>> > configuration?
>>>
>>> I don't use BUILD_SHARED_LIBS=True
>>
>>
>> One point I'd like to understand is why more people don't use it. Were
>> you not aware of it, or is it just not beneficial enough to you? I was
>> very happy to reduce a nearly 4-minute rebuild after a minor change to ~31
>> sec. Especially when I have to do that repeatedly, that time difference
>> can determine whether I decide to switch contexts or stay focused.
>>
>>
>> How much of that rebuild time is actually link time? I'd guess most. What
>> linker are you using? ld64, lld and gold are all much faster than bfd, so
>> the performance implications may be smaller to other people. Also, using
>> `BUILD_SHARED_LIBS` has a significant impact on execution performance of
>> the final binaries, which impacts test execution speed. So if you aren't
>> struggling with link time, it can be overall better to generate faster
>> loading binaries for the test suite.
>>
>> There are a lot of tradeoffs on performance, but I've strongly advocated
>> that BUILD_SHARED_LIBS should never be used when building distributions for
>> performance reasons, which means it is only really supported as a developer
>> workflow.
>>
>> Additionally BUILD_SHARED_LIBS is problematic with some of LLVM's design
>> patterns, like cl::opt's global registration, which can deter its
>> usefulness.
>>
>> Hope this helps explain why it is less widely used than you might have
>> anticipated.
>>
>> -Chris
>>
>>
>>
>>> but if that's a supported option, it
>>> should be tested.
>>>
>>> This argument will, of course, lead to an explosion of builders, as the
>>> set of combinations of cmake variables is very large. It would be
>>> useful to gather the various configurations people use and see if there
>>> is a set of common-ish combinations that is small enough to regularly
>>> test.
>>>
>>> We build with RTTI and exceptions enabled and I'll bet there are others
>>> out there that do the same. But AFAIK there are no bots testing those
>>> options.
>>>
>>
>> To reduce the configuration space, we could consider combining orthogonal
>> options under a single builder. That could make debugging some fails a
>> little harder, but it might be worthwhile as it would provide more coverage
>> with less builders.
>>
>> Thanks.
>>
>> Joel
>>
>>
>>>
>>> -David
>>>
>>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20190109/785934ce/attachment.html>
More information about the cfe-dev
mailing list