[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