binaryen icon indicating copy to clipboard operation
binaryen copied to clipboard

Build error on emsdk CI

Open sbc100 opened this issue 1 year ago • 5 comments

https://app.circleci.com/pipelines/github/emscripten-core/emsdk/2084/workflows/2e280ca8-1c22-435f-b602-58142371adba/jobs/12495

Some kind of issue with std::variant:

[ 95%] Building CXX object src/tools/CMakeFiles/wasm-opt.dir/wasm-opt.cpp.o
In file included from /root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:21:0:
/usr/include/c++/7/variant: In instantiation of 'constexpr const size_t std::variant_size_v<wasm::RandomFullLattice::L>':
/usr/include/c++/7/variant:702:10:   required from 'struct std::__detail::__variant::__gen_vtable<wasm::RandomFullLattice::ElementImpl, wasm::RandomFullLattice::getBottom() const::<lambda(const auto:5&)>&&, wasm::RandomFullLattice::L&>'
/usr/include/c++/7/variant:1255:23:   required from 'constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::RandomFullLattice::getBottom() const::<lambda(const auto:5&)>; _Variants = {wasm::RandomFullLattice::L&}]'
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:866:29:   required from here
/usr/include/c++/7/variant:97:29: error: incomplete type 'std::variant_size<wasm::RandomFullLattice::L>' used in nested name specifier
     inline constexpr size_t variant_size_v = variant_size<_Variant>::value;
                             ^~~~~~~~~~~~~~
/usr/include/c++/7/variant: In instantiation of 'constexpr const auto std::__detail::__variant::__gen_vtable<wasm::RandomFullLattice::ElementImpl, wasm::RandomFullLattice::getBottom() const::<lambda(const auto:5&)>&&, wasm::RandomFullLattice::L&>::_S_vtable':
/usr/include/c++/7/variant:711:29:   required from 'struct std::__detail::__variant::__gen_vtable<wasm::RandomFullLattice::ElementImpl, wasm::RandomFullLattice::getBottom() const::<lambda(const auto:5&)>&&, wasm::RandomFullLattice::L&>'
/usr/include/c++/7/variant:1255:23:   required from 'constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::RandomFullLattice::getBottom() const::<lambda(const auto:5&)>; _Variants = {wasm::RandomFullLattice::L&}]'
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:866:29:   required from here
/usr/include/c++/7/variant:711:49: error: '_S_apply' was not declared in this scope
       static constexpr auto _S_vtable = _S_apply();
                                         ~~~~~~~~^~
/usr/include/c++/7/variant:711:49: note: suggested alternative: '__expl'
       static constexpr auto _S_vtable = _S_apply();
                                         ~~~~~~~~^~
                                         __expl
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp: In member function 'wasm::RandomFullLattice::Element wasm::RandomFullLattice::getBottom() const':
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:865:20: error: could not convert 'std::visit<wasm::RandomFullLattice::getBottom() const::<lambda(const auto:5&)>, wasm::RandomFullLattice::L&>(<lambda closure object>wasm::RandomFullLattice::getBottom() const::<lambda(const auto:5&)>{}, (* &((const wasm::RandomFullLattice*)this)->wasm::RandomFullLattice::lattice.std::unique_ptr<wasm::RandomFullLattice::L>::operator*()))' from 'void' to 'wasm::RandomFullLattice::Element {aka wasm::RandomElement<wasm::RandomFullLattice>}'
   return std::visit([](const auto& l) { return ElementImpl{l.getBottom()}; },
          ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                     *lattice);
                     ~~~~~~~~~
In file included from /root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:21:0:
/usr/include/c++/7/variant: In instantiation of 'constexpr const auto std::__detail::__variant::__gen_vtable<wasm::RandomFullLattice::ElementImpl, wasm::RandomFullLattice::getTop() const::<lambda(const auto:6&)>&&, wasm::RandomFullLattice::L&>::_S_vtable':
/usr/include/c++/7/variant:711:29:   required from 'struct std::__detail::__variant::__gen_vtable<wasm::RandomFullLattice::ElementImpl, wasm::RandomFullLattice::getTop() const::<lambda(const auto:6&)>&&, wasm::RandomFullLattice::L&>'
/usr/include/c++/7/variant:1255:23:   required from 'constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::RandomFullLattice::getTop() const::<lambda(const auto:6&)>; _Variants = {wasm::RandomFullLattice::L&}]'
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:871:29:   required from here
/usr/include/c++/7/variant:711:49: error: '_S_apply' was not declared in this scope
       static constexpr auto _S_vtable = _S_apply();
                                         ~~~~~~~~^~
/usr/include/c++/7/variant:711:49: note: suggested alternative: '__expl'
       static constexpr auto _S_vtable = _S_apply();
                                         ~~~~~~~~^~
                                         __expl
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp: In member function 'wasm::RandomFullLattice::Element wasm::RandomFullLattice::getTop() const':
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:870:20: error: could not convert 'std::visit<wasm::RandomFullLattice::getTop() const::<lambda(const auto:6&)>, wasm::RandomFullLattice::L&>(<lambda closure object>wasm::RandomFullLattice::getTop() const::<lambda(const auto:6&)>{}, (* &((const wasm::RandomFullLattice*)this)->wasm::RandomFullLattice::lattice.std::unique_ptr<wasm::RandomFullLattice::L>::operator*()))' from 'void' to 'wasm::RandomFullLattice::Element {aka wasm::RandomElement<wasm::RandomFullLattice>}'
   return std::visit([](const auto& l) { return ElementImpl{l.getTop()}; },
          ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                     *lattice);
                     ~~~~~~~~~
In file included from /root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:21:0:
/usr/include/c++/7/variant: In instantiation of 'struct std::variant_size<const wasm::RandomFullLattice::ElementImpl>':
/usr/include/c++/7/variant:97:29:   required from 'constexpr const size_t std::variant_size_v<const wasm::RandomFullLattice::ElementImpl>'
/usr/include/c++/7/variant:702:10:   required from 'struct std::__detail::__variant::__gen_vtable<wasm::analysis::LatticeComparison, wasm::RandomFullLattice::compare(const Element&, const Element&) const::<lambda(const auto:7&, const auto:8&, const auto:9&)>&&, wasm::RandomFullLattice::L&, const wasm::RandomFullLattice::ElementImpl&, const wasm::RandomFullLattice::ElementImpl&>'
/usr/include/c++/7/variant:1255:23:   required from 'constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::RandomFullLattice::compare(const Element&, const Element&) const::<lambda(const auto:7&, const auto:8&, const auto:9&)>; _Variants = {wasm::RandomFullLattice::L&, const wasm::RandomFullLattice::ElementImpl&, const wasm::RandomFullLattice::ElementImpl&}]'
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:893:7:   required from here
/usr/include/c++/7/variant:84:12: error: invalid use of incomplete type 'struct std::variant_size<wasm::RandomFullLattice::ElementImpl>'
     struct variant_size<const _Variant> : variant_size<_Variant> {};
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/7/variant:81:12: note: declaration of 'struct std::variant_size<wasm::RandomFullLattice::ElementImpl>'
     struct variant_size;
            ^~~~~~~~~~~~
/usr/include/c++/7/variant: In instantiation of 'constexpr const size_t std::variant_size_v<const wasm::RandomFullLattice::ElementImpl>':
/usr/include/c++/7/variant:702:10:   required from 'struct std::__detail::__variant::__gen_vtable<wasm::analysis::LatticeComparison, wasm::RandomFullLattice::compare(const Element&, const Element&) const::<lambda(const auto:7&, const auto:8&, const auto:9&)>&&, wasm::RandomFullLattice::L&, const wasm::RandomFullLattice::ElementImpl&, const wasm::RandomFullLattice::ElementImpl&>'
/usr/include/c++/7/variant:1255:23:   required from 'constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::RandomFullLattice::compare(const Element&, const Element&) const::<lambda(const auto:7&, const auto:8&, const auto:9&)>; _Variants = {wasm::RandomFullLattice::L&, const wasm::RandomFullLattice::ElementImpl&, const wasm::RandomFullLattice::ElementImpl&}]'
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:893:7:   required from here
/usr/include/c++/7/variant:97:29: error: 'value' is not a member of 'std::variant_size<const wasm::RandomFullLattice::ElementImpl>'
     inline constexpr size_t variant_size_v = variant_size<_Variant>::value;
                             ^~~~~~~~~~~~~~
/usr/include/c++/7/variant: In instantiation of 'constexpr const auto std::__detail::__variant::__gen_vtable<wasm::analysis::LatticeComparison, wasm::RandomFullLattice::compare(const Element&, const Element&) const::<lambda(const auto:7&, const auto:8&, const auto:9&)>&&, wasm::RandomFullLattice::L&, const wasm::RandomFullLattice::ElementImpl&, const wasm::RandomFullLattice::ElementImpl&>::_S_vtable':
/usr/include/c++/7/variant:711:29:   required from 'struct std::__detail::__variant::__gen_vtable<wasm::analysis::LatticeComparison, wasm::RandomFullLattice::compare(const Element&, const Element&) const::<lambda(const auto:7&, const auto:8&, const auto:9&)>&&, wasm::RandomFullLattice::L&, const wasm::RandomFullLattice::ElementImpl&, const wasm::RandomFullLattice::ElementImpl&>'
/usr/include/c++/7/variant:1255:23:   required from 'constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::RandomFullLattice::compare(const Element&, const Element&) const::<lambda(const auto:7&, const auto:8&, const auto:9&)>; _Variants = {wasm::RandomFullLattice::L&, const wasm::RandomFullLattice::ElementImpl&, const wasm::RandomFullLattice::ElementImpl&}]'
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:893:7:   required from here
/usr/include/c++/7/variant:711:49: error: '_S_apply' was not declared in this scope
       static constexpr auto _S_vtable = _S_apply();
                                         ~~~~~~~~^~
/usr/include/c++/7/variant:711:49: note: suggested alternative: '__expl'
       static constexpr auto _S_vtable = _S_apply();
                                         ~~~~~~~~^~
                                         __expl
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp: In member function 'wasm::analysis::LatticeComparison wasm::RandomFullLattice::compare(const Element&, const Element&) const':
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:893:7: error: void value not ignored as it ought to be
     *b);
       ^
In file included from /root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:21:0:
/usr/include/c++/7/variant: In instantiation of 'constexpr const size_t std::variant_size_v<wasm::RandomFullLattice::ElementImpl>':
/usr/include/c++/7/variant:702:10:   required from 'struct std::__detail::__variant::__gen_vtable<bool, wasm::RandomFullLattice::join(wasm::RandomFullLattice::Element&, const Element&) const::<lambda(const auto:10&, auto:11&, const auto:12&)>&&, wasm::RandomFullLattice::L&, wasm::RandomFullLattice::ElementImpl&, const wasm::RandomFullLattice::ElementImpl&>'
/usr/include/c++/7/variant:1255:23:   required from 'constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::RandomFullLattice::join(wasm::RandomFullLattice::Element&, const Element&) const::<lambda(const auto:10&, auto:11&, const auto:12&)>; _Variants = {wasm::RandomFullLattice::L&, wasm::RandomFullLattice::ElementImpl&, const wasm::RandomFullLattice::ElementImpl&}]'
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:909:7:   required from here
/usr/include/c++/7/variant:97:29: error: incomplete type 'std::variant_size<wasm::RandomFullLattice::ElementImpl>' used in nested name specifier
     inline constexpr size_t variant_size_v = variant_size<_Variant>::value;
                             ^~~~~~~~~~~~~~
/usr/include/c++/7/variant: In instantiation of 'constexpr const auto std::__detail::__variant::__gen_vtable<bool, wasm::RandomFullLattice::join(wasm::RandomFullLattice::Element&, const Element&) const::<lambda(const auto:10&, auto:11&, const auto:12&)>&&, wasm::RandomFullLattice::L&, wasm::RandomFullLattice::ElementImpl&, const wasm::RandomFullLattice::ElementImpl&>::_S_vtable':
/usr/include/c++/7/variant:711:29:   required from 'struct std::__detail::__variant::__gen_vtable<bool, wasm::RandomFullLattice::join(wasm::RandomFullLattice::Element&, const Element&) const::<lambda(const auto:10&, auto:11&, const auto:12&)>&&, wasm::RandomFullLattice::L&, wasm::RandomFullLattice::ElementImpl&, const wasm::RandomFullLattice::ElementImpl&>'
/usr/include/c++/7/variant:1255:23:   required from 'constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::RandomFullLattice::join(wasm::RandomFullLattice::Element&, const Element&) const::<lambda(const auto:10&, auto:11&, const auto:12&)>; _Variants = {wasm::RandomFullLattice::L&, wasm::RandomFullLattice::ElementImpl&, const wasm::RandomFullLattice::ElementImpl&}]'
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:909:7:   required from here
/usr/include/c++/7/variant:711:49: error: '_S_apply' was not declared in this scope
       static constexpr auto _S_vtable = _S_apply();
                                         ~~~~~~~~^~
/usr/include/c++/7/variant:711:49: note: suggested alternative: '__expl'
       static constexpr auto _S_vtable = _S_apply();
                                         ~~~~~~~~^~
                                         __expl
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp: In member function 'bool wasm::RandomFullLattice::join(wasm::RandomFullLattice::Element&, const Element&) const':
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:909:7: error: void value not ignored as it ought to be
     *b);
       ^
In file included from /root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:21:0:
/usr/include/c++/7/variant: In instantiation of 'constexpr const auto std::__detail::__variant::__gen_vtable<bool, wasm::RandomFullLattice::meet(wasm::RandomFullLattice::Element&, const Element&) const::<lambda(const auto:13&, auto:14&, const auto:15&)>&&, wasm::RandomFullLattice::L&, wasm::RandomFullLattice::ElementImpl&, const wasm::RandomFullLattice::ElementImpl&>::_S_vtable':
/usr/include/c++/7/variant:711:29:   required from 'struct std::__detail::__variant::__gen_vtable<bool, wasm::RandomFullLattice::meet(wasm::RandomFullLattice::Element&, const Element&) const::<lambda(const auto:13&, auto:14&, const auto:15&)>&&, wasm::RandomFullLattice::L&, wasm::RandomFullLattice::ElementImpl&, const wasm::RandomFullLattice::ElementImpl&>'
/usr/include/c++/7/variant:1255:23:   required from 'constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::RandomFullLattice::meet(wasm::RandomFullLattice::Element&, const Element&) const::<lambda(const auto:13&, auto:14&, const auto:15&)>; _Variants = {wasm::RandomFullLattice::L&, wasm::RandomFullLattice::ElementImpl&, const wasm::RandomFullLattice::ElementImpl&}]'
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:925:7:   required from here
/usr/include/c++/7/variant:711:49: error: '_S_apply' was not declared in this scope
       static constexpr auto _S_vtable = _S_apply();
                                         ~~~~~~~~^~
/usr/include/c++/7/variant:711:49: note: suggested alternative: '__expl'
       static constexpr auto _S_vtable = _S_apply();
                                         ~~~~~~~~^~
                                         __expl
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp: In member function 'bool wasm::RandomFullLattice::meet(wasm::RandomFullLattice::Element&, const Element&) const':
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:925:7: error: void value not ignored as it ought to be
     *b);
       ^
In file included from /root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:21:0:
/usr/include/c++/7/variant: In instantiation of 'constexpr const size_t std::variant_size_v<wasm::RandomLattice::L>':
/usr/include/c++/7/variant:702:10:   required from 'struct std::__detail::__variant::__gen_vtable<wasm::RandomLattice::ElementImpl, wasm::RandomLattice::getBottom() const::<lambda(const auto:16&)>&&, wasm::RandomLattice::L&>'
/usr/include/c++/7/variant:1255:23:   required from 'constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::RandomLattice::getBottom() const::<lambda(const auto:16&)>; _Variants = {wasm::RandomLattice::L&}]'
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:930:29:   required from here
/usr/include/c++/7/variant:97:29: error: incomplete type 'std::variant_size<wasm::RandomLattice::L>' used in nested name specifier
     inline constexpr size_t variant_size_v = variant_size<_Variant>::value;
                             ^~~~~~~~~~~~~~
/usr/include/c++/7/variant: In instantiation of 'constexpr const auto std::__detail::__variant::__gen_vtable<wasm::RandomLattice::ElementImpl, wasm::RandomLattice::getBottom() const::<lambda(const auto:16&)>&&, wasm::RandomLattice::L&>::_S_vtable':
/usr/include/c++/7/variant:711:29:   required from 'struct std::__detail::__variant::__gen_vtable<wasm::RandomLattice::ElementImpl, wasm::RandomLattice::getBottom() const::<lambda(const auto:16&)>&&, wasm::RandomLattice::L&>'
/usr/include/c++/7/variant:1255:23:   required from 'constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::RandomLattice::getBottom() const::<lambda(const auto:16&)>; _Variants = {wasm::RandomLattice::L&}]'
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:930:29:   required from here
/usr/include/c++/7/variant:711:49: error: '_S_apply' was not declared in this scope
       static constexpr auto _S_vtable = _S_apply();
                                         ~~~~~~~~^~
/usr/include/c++/7/variant:711:49: note: suggested alternative: '__expl'
       static constexpr auto _S_vtable = _S_apply();
                                         ~~~~~~~~^~
                                         __expl
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp: In member function 'wasm::RandomLattice::Element wasm::RandomLattice::getBottom() const':
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:929:20: error: could not convert 'std::visit<wasm::RandomLattice::getBottom() const::<lambda(const auto:16&)>, wasm::RandomLattice::L&>(<lambda closure object>wasm::RandomLattice::getBottom() const::<lambda(const auto:16&)>{}, (* &((const wasm::RandomLattice*)this)->wasm::RandomLattice::lattice.std::unique_ptr<wasm::RandomLattice::L>::operator*()))' from 'void' to 'wasm::RandomLattice::Element {aka wasm::RandomElement<wasm::RandomLattice>}'
   return std::visit([](const auto& l) { return ElementImpl{l.getBottom()}; },
          ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                     *lattice);
                     ~~~~~~~~~
In file included from /root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:21:0:
/usr/include/c++/7/variant: In instantiation of 'struct std::variant_size<const wasm::RandomLattice::ElementImpl>':
/usr/include/c++/7/variant:97:29:   required from 'constexpr const size_t std::variant_size_v<const wasm::RandomLattice::ElementImpl>'
/usr/include/c++/7/variant:702:10:   required from 'struct std::__detail::__variant::__gen_vtable<wasm::analysis::LatticeComparison, wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:17&, const auto:18&, const auto:19&)>&&, wasm::RandomLattice::L&, const wasm::RandomLattice::ElementImpl&, const wasm::RandomLattice::ElementImpl&>'
/usr/include/c++/7/variant:1255:23:   required from 'constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:17&, const auto:18&, const auto:19&)>; _Variants = {wasm::RandomLattice::L&, const wasm::RandomLattice::ElementImpl&, const wasm::RandomLattice::ElementImpl&}]'
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:949:7:   required from here
/usr/include/c++/7/variant:84:12: error: invalid use of incomplete type 'struct std::variant_size<wasm::RandomLattice::ElementImpl>'
     struct variant_size<const _Variant> : variant_size<_Variant> {};
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/7/variant:81:12: note: declaration of 'struct std::variant_size<wasm::RandomLattice::ElementImpl>'
     struct variant_size;
            ^~~~~~~~~~~~
/usr/include/c++/7/variant: In instantiation of 'constexpr const size_t std::variant_size_v<const wasm::RandomLattice::ElementImpl>':
/usr/include/c++/7/variant:702:10:   required from 'struct std::__detail::__variant::__gen_vtable<wasm::analysis::LatticeComparison, wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:17&, const auto:18&, const auto:19&)>&&, wasm::RandomLattice::L&, const wasm::RandomLattice::ElementImpl&, const wasm::RandomLattice::ElementImpl&>'
/usr/include/c++/7/variant:1255:23:   required from 'constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:17&, const auto:18&, const auto:19&)>; _Variants = {wasm::RandomLattice::L&, const wasm::RandomLattice::ElementImpl&, const wasm::RandomLattice::ElementImpl&}]'
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:949:7:   required from here
/usr/include/c++/7/variant:97:29: error: 'value' is not a member of 'std::variant_size<const wasm::RandomLattice::ElementImpl>'
     inline constexpr size_t variant_size_v = variant_size<_Variant>::value;
                             ^~~~~~~~~~~~~~
/usr/include/c++/7/variant: In instantiation of 'constexpr const auto std::__detail::__variant::__gen_vtable<wasm::analysis::LatticeComparison, wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:17&, const auto:18&, const auto:19&)>&&, wasm::RandomLattice::L&, const wasm::RandomLattice::ElementImpl&, const wasm::RandomLattice::ElementImpl&>::_S_vtable':
/usr/include/c++/7/variant:711:29:   required from 'struct std::__detail::__variant::__gen_vtable<wasm::analysis::LatticeComparison, wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:17&, const auto:18&, const auto:19&)>&&, wasm::RandomLattice::L&, const wasm::RandomLattice::ElementImpl&, const wasm::RandomLattice::ElementImpl&>'
/usr/include/c++/7/variant:1255:23:   required from 'constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:17&, const auto:18&, const auto:19&)>; _Variants = {wasm::RandomLattice::L&, const wasm::RandomLattice::ElementImpl&, const wasm::RandomLattice::ElementImpl&}]'
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:949:7:   required from here
/usr/include/c++/7/variant:711:49: error: '_S_apply' was not declared in this scope
       static constexpr auto _S_vtable = _S_apply();
                                         ~~~~~~~~^~
/usr/include/c++/7/variant:711:49: note: suggested alternative: '__expl'
       static constexpr auto _S_vtable = _S_apply();
                                         ~~~~~~~~^~
                                         __expl
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp: In member function 'wasm::analysis::LatticeComparison wasm::RandomLattice::compare(const Element&, const Element&) const':
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:949:7: error: void value not ignored as it ought to be
     *b);
       ^
In file included from /root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:21:0:
/usr/include/c++/7/variant: In instantiation of 'constexpr const size_t std::variant_size_v<wasm::RandomLattice::ElementImpl>':
/usr/include/c++/7/variant:702:10:   required from 'struct std::__detail::__variant::__gen_vtable<bool, wasm::RandomLattice::join(wasm::RandomLattice::Element&, const Element&) const::<lambda(const auto:20&, auto:21&, const auto:22&)>&&, wasm::RandomLattice::L&, wasm::RandomLattice::ElementImpl&, const wasm::RandomLattice::ElementImpl&>'
/usr/include/c++/7/variant:1255:23:   required from 'constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::RandomLattice::join(wasm::RandomLattice::Element&, const Element&) const::<lambda(const auto:20&, auto:21&, const auto:22&)>; _Variants = {wasm::RandomLattice::L&, wasm::RandomLattice::ElementImpl&, const wasm::RandomLattice::ElementImpl&}]'
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:965:7:   required from here
/usr/include/c++/7/variant:97:29: error: incomplete type 'std::variant_size<wasm::RandomLattice::ElementImpl>' used in nested name specifier
     inline constexpr size_t variant_size_v = variant_size<_Variant>::value;
                             ^~~~~~~~~~~~~~
/usr/include/c++/7/variant: In instantiation of 'constexpr const auto std::__detail::__variant::__gen_vtable<bool, wasm::RandomLattice::join(wasm::RandomLattice::Element&, const Element&) const::<lambda(const auto:20&, auto:21&, const auto:22&)>&&, wasm::RandomLattice::L&, wasm::RandomLattice::ElementImpl&, const wasm::RandomLattice::ElementImpl&>::_S_vtable':
/usr/include/c++/7/variant:711:29:   required from 'struct std::__detail::__variant::__gen_vtable<bool, wasm::RandomLattice::join(wasm::RandomLattice::Element&, const Element&) const::<lambda(const auto:20&, auto:21&, const auto:22&)>&&, wasm::RandomLattice::L&, wasm::RandomLattice::ElementImpl&, const wasm::RandomLattice::ElementImpl&>'
/usr/include/c++/7/variant:1255:23:   required from 'constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::RandomLattice::join(wasm::RandomLattice::Element&, const Element&) const::<lambda(const auto:20&, auto:21&, const auto:22&)>; _Variants = {wasm::RandomLattice::L&, wasm::RandomLattice::ElementImpl&, const wasm::RandomLattice::ElementImpl&}]'
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:965:7:   required from here
/usr/include/c++/7/variant:711:49: error: '_S_apply' was not declared in this scope
       static constexpr auto _S_vtable = _S_apply();
                                         ~~~~~~~~^~
/usr/include/c++/7/variant:711:49: note: suggested alternative: '__expl'
       static constexpr auto _S_vtable = _S_apply();
                                         ~~~~~~~~^~
                                         __expl
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp: In member function 'bool wasm::RandomLattice::join(wasm::RandomLattice::Element&, const Element&) const':
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:965:7: error: void value not ignored as it ought to be
     *b);
       ^
[ 96%] Linking CXX executable ../../../bin/wasm-split
[ 96%] Built target wasm-split
[ 96%] Building CXX object test/gtest/CMakeFiles/binaryen-unittests.dir/dfa_minimization.cpp.o
At global scope:
cc1plus: warning: unrecognized command line option '-Wno-unknown-warning-option'
cc1plus: warning: unrecognized command line option '-Wno-implicit-int-float-conversion'
cc1plus: warning: unrecognized command line option '-Wno-dangling-pointer'
src/tools/CMakeFiles/wasm-fuzz-lattices.dir/build.make:134: recipe for target 'src/tools/CMakeFiles/wasm-fuzz-lattices.dir/wasm-fuzz-lattices.cpp.o' failed
make[2]: *** [src/tools/CMakeFiles/wasm-fuzz-lattices.dir/wasm-fuzz-lattices.cpp.o] Error 1
CMakeFiles/Makefile2:1020: recipe for target 'src/tools/CMakeFiles/wasm-fuzz-lattices.dir/all' failed
make[1]: *** [src/tools/CMakeFiles/wasm-fuzz-lattices.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

sbc100 avatar Nov 06 '23 01:11 sbc100

We should try to have binaryen CI running on the same linux version to catch these before they land. The build machine in question is running Ubuntu/Bionic

sbc100 avatar Nov 06 '23 01:11 sbc100

This failure was also reported by our arm64 SDK builder.

sbc100 avatar Nov 06 '23 18:11 sbc100

The arm64 builder is using:

Ubuntu 20.04 (Focal) libstdc++-9-dev:9.4.0-1ubuntu1~20.04.2 clang-10.0.0-4ubuntu1

sbc100 avatar Nov 06 '23 20:11 sbc100

Look, like this same error was noticed in #1295 as well.

tlively avatar Nov 06 '23 23:11 tlively

This is fixed by https://github.com/WebAssembly/binaryen/pull/6085

tlively avatar Nov 07 '23 00:11 tlively