erichkeane wrote:

> Note @mizvekov : we observed on an internal test (I am going to have someone 
> work on minimizing it) that this causes an assertion. As you can see, it is 
> all in boost, so a reduction might take a while, but was hoping you might see 
> something obvious in advance:
> 
> ```
> clang++: 
> /proj/build/llvm/Linux_x86_64/clang/lib/AST/ExprClassification.cpp:57: Cl 
> clang::Expr::ClassifyImpl(clang::ASTContext&, clang::SourceLocation*) const: 
> Assertion `isLValue()' failed.
> PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ 
> and include the crash backtrace, preprocessed source, and associated run 
> script.
> Stack dump:
> 0.    Program arguments: /proj/nv/llvm/Linux_x86_64/llvm-6094/bin/clang++ -c 
> -o library/SolverUtils/Core/CouplingFile.o -DSPEC -DNDEBUG 
> -DSPEC_AUTO_SUPPRESS_THREADING -Ithirdparty/zlib-1.3 -DTIXML_USE_STL 
> -DBOOST_ENDIAN_NO_INTRINSICS -DBOOST_DISABLE_THREADS 
> -Ithirdparty/tinyxml-2.6.2 -Ithirdparty/boost-1.84.0/include -Ilibrary/ 
> -Isolvers/ --std=c++17 -fno-fast-math -DSPEC_LP64 
> library/SolverUtils/Core/CouplingFile.cpp
> 1.    thirdparty/boost-1.84.0/include/boost/mp11/algorithm.hpp:226:18: at 
> annotation token
> 2.    thirdparty/boost-1.84.0/include/boost/mp11/algorithm.hpp:29:1: parsing 
> namespace 'boost'
> 3.    thirdparty/boost-1.84.0/include/boost/mp11/algorithm.hpp:31:1: parsing 
> namespace 'boost::mp11'
> 4.    thirdparty/boost-1.84.0/include/boost/mp11/algorithm.hpp:199:1: parsing 
> namespace 'boost::mp11::detail'
> 5.    thirdparty/boost-1.84.0/include/boost/mp11/algorithm.hpp:224:57: 
> parsing struct/union/class body 'boost::mp11::detail::mp_fill_impl<L<A...>, 
> V>'
>  #0 0x0000000004622358 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) 
> (/proj/nv/llvm/Linux_x86_64/llvm-6094/bin/clang+++0x4622358)
>  #1 0x000000000461f77c llvm::sys::CleanupOnSignal(unsigned long) 
> (/proj/nv/llvm/Linux_x86_64/llvm-6094/bin/clang+++0x461f77c)
>  #2 0x000000000456c088 CrashRecoverySignalHandler(int) 
> CrashRecoveryContext.cpp:0:0
>  #3 0x000014e6172cf520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
>  #4 0x000014e6173239fc __pthread_kill_implementation 
> ./nptl/pthread_kill.c:44:76
>  #5 0x000014e6173239fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
>  #6 0x000014e6173239fc pthread_kill ./nptl/pthread_kill.c:89:10
>  #7 0x000014e6172cf476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
>  #8 0x000014e6172b57f3 abort ./stdlib/abort.c:81:7
>  #9 0x000014e6172b571b _nl_load_domain ./intl/loadmsgcat.c:1177:9
> #10 0x000014e6172c6e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
> #11 0x000000000811f5c6 clang::Expr::ClassifyImpl(clang::ASTContext&, 
> clang::SourceLocation*) const 
> (/proj/nv/llvm/Linux_x86_64/llvm-6094/bin/clang+++0x811f5c6)
> #12 0x0000000007a27d90 clang::Sema::DeduceAutoType(clang::TypeLoc, 
> clang::Expr*, clang::QualType&, clang::sema::TemplateDeductionInfo&, bool, 
> bool, clang::TemplateSpecCandidateSet*) 
> (/proj/nv/llvm/Linux_x86_64/llvm-6094/bin/clang+++0x7a27d90)```
> ```

I actually repro'd off the stack trace :)
https://godbolt.org/z/WGz58WdEd

```
template<class L, class V> struct mp_fill_impl
{};

template<template<auto...> class L, auto... A, class V> struct 
mp_fill_impl<L<A...>, V>
{
    using type = L<((void)A, V::value)...>;
};
```



AS this is a part of Boost/major libraries and is a pretty simple bit of valid 
code, if you can't get a fix reasonably fast, please consider a revert.



https://github.com/llvm/llvm-project/pull/159463
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to