Skip to content

Recent binaryen change broke test_binaryen_from_source over in emsdk repo #8067

@sbc100

Description

@sbc100

I'm not quite sure when it started failing but I think fairly recently: https://app.circleci.com/pipelines/github/emscripten-core/emsdk/2730/workflows/a28eaa2f-78f0-4824-b261-0785dacc167f/jobs/18653?utm_campaign=vcs-integration-link&utm_medium=referral&utm_source=github-checks-link&utm_content=summary

In file included from /root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:21:
/usr/include/c++/9/variant: In instantiation of ‘struct std::variant_size<const wasm::analysis::Flat<unsigned int>::Element>’:
/usr/include/c++/9/variant:94:29:   required from ‘constexpr const size_t std::variant_size_v<const wasm::analysis::Flat<unsigned int>::Element>’
/usr/include/c++/9/variant:1023:10:   required from ‘struct std::__detail::__variant::__gen_vtable<true, bool, wasm::analysis::Flat<T, Ts>::Element::operator==(const wasm::analysis::Flat<T, Ts>::Element&) const [with T = unsigned int; Ts = {}]::<lambda(const auto:22&, const auto:23&)>&&, const wasm::analysis::Flat<unsigned int>::Element&, const wasm::analysis::Flat<unsigned int>::Element&>’
/usr/include/c++/9/variant:1647:23:   required from ‘constexpr decltype(auto) std::__do_visit(_Visitor&&, _Variants&& ...) [with bool __use_index = false; bool __same_return_types = true; _Visitor = wasm::analysis::Flat<T, Ts>::Element::operator==(const wasm::analysis::Flat<T, Ts>::Element&) const [with T = unsigned int; Ts = {}]::<lambda(const auto:22&, const auto:23&)>; _Variants = {const wasm::analysis::Flat<unsigned int>::Element&, const wasm::analysis::Flat<unsigned int>::Element&}]’
/usr/include/c++/9/variant:1663:24:   required from ‘constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::analysis::Flat<T, Ts>::Element::operator==(const wasm::analysis::Flat<T, Ts>::Element&) const [with T = unsigned int; Ts = {}]::<lambda(const auto:22&, const auto:23&)>; _Variants = {const wasm::analysis::Flat<unsigned int>::Element&, const wasm::analysis::Flat<unsigned int>::Element&}]’
/root/project/binaryen/main/src/analysis/lattices/flat.h:71:24:   required from ‘bool wasm::analysis::Flat<T, Ts>::Element::operator==(const wasm::analysis::Flat<T, Ts>::Element&) const [with T = unsigned int; Ts = {}]’
/root/project/binaryen/main/src/analysis/lattices/flat.h:93:11:   [ skipping 7 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/usr/include/c++/9/variant:1014:28:   required from ‘static constexpr auto std::__detail::__variant::__gen_vtable_impl<__same_return_types, std::__detail::__variant::_Multi_array<_Result_type (*)(_Visitor, _Variants ...)>, std::tuple<_Variants ...>, std::integer_sequence<long unsigned int, __indices ...> >::_S_apply() [with bool __same_return_types = true; _Result_type = wasm::analysis::LatticeComparison; _Visitor = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>&&; _Variants = {const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&}; long unsigned int ...__indices = {1, 1, 1}]’
/usr/include/c++/9/variant:909:48:   recursively required from ‘static constexpr void std::__detail::__variant::__gen_vtable_impl<__same_return_types, std::__detail::__variant::_Multi_array<_Result_type (*)(_Visitor, _Variants ...), __dimensions ...>, std::tuple<_Variants ...>, std::integer_sequence<long unsigned int, __indices ...> >::_S_apply_single_alt(_Tp&, _Tp*) [with bool __do_cookie = false; long unsigned int __index = 1; _Tp = std::__detail::__variant::_Multi_array<wasm::analysis::LatticeComparison (*)(wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>&&, const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&), 7, 7>; bool __same_return_types = true; _Result_type = wasm::analysis::LatticeComparison; _Visitor = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>&&; long unsigned int ...__dimensions = {7, 7, 7}; _Variants = {const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&}; long unsigned int ...__indices = {}]’
/usr/include/c++/9/variant:909:48:   required from ‘constexpr const _Array_type std::__detail::__variant::__gen_vtable<true, wasm::analysis::LatticeComparison, wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>&&, const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&>::_S_vtable’
/usr/include/c++/9/variant:1647:23:   required from ‘constexpr decltype(auto) std::__do_visit(_Visitor&&, _Variants&& ...) [with bool __use_index = false; bool __same_return_types = true; _Visitor = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>; _Variants = {const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&}]’
/usr/include/c++/9/variant:1663:24:   required from ‘constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>; _Variants = {const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&}]’
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:964:37:   required from here
/usr/include/c++/9/variant:81:12: error: invalid use of incomplete type ‘struct std::variant_size<wasm::analysis::Flat<unsigned int>::Element>’
   81 |     struct variant_size<const _Variant> : variant_size<_Variant> {};
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/9/variant:78:12: note: declaration of ‘struct std::variant_size<wasm::analysis::Flat<unsigned int>::Element>’
   78 |     struct variant_size;
      |            ^~~~~~~~~~~~
/usr/include/c++/9/variant: In instantiation of ‘constexpr const size_t std::variant_size_v<const wasm::analysis::Flat<unsigned int>::Element>’:
/usr/include/c++/9/variant:1023:10:   required from ‘struct std::__detail::__variant::__gen_vtable<true, bool, wasm::analysis::Flat<T, Ts>::Element::operator==(const wasm::analysis::Flat<T, Ts>::Element&) const [with T = unsigned int; Ts = {}]::<lambda(const auto:22&, const auto:23&)>&&, const wasm::analysis::Flat<unsigned int>::Element&, const wasm::analysis::Flat<unsigned int>::Element&>’
/usr/include/c++/9/variant:1647:23:   required from ‘constexpr decltype(auto) std::__do_visit(_Visitor&&, _Variants&& ...) [with bool __use_index = false; bool __same_return_types = true; _Visitor = wasm::analysis::Flat<T, Ts>::Element::operator==(const wasm::analysis::Flat<T, Ts>::Element&) const [with T = unsigned int; Ts = {}]::<lambda(const auto:22&, const auto:23&)>; _Variants = {const wasm::analysis::Flat<unsigned int>::Element&, const wasm::analysis::Flat<unsigned int>::Element&}]’
/usr/include/c++/9/variant:1663:24:   required from ‘constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::analysis::Flat<T, Ts>::Element::operator==(const wasm::analysis::Flat<T, Ts>::Element&) const [with T = unsigned int; Ts = {}]::<lambda(const auto:22&, const auto:23&)>; _Variants = {const wasm::analysis::Flat<unsigned int>::Element&, const wasm::analysis::Flat<unsigned int>::Element&}]’
/root/project/binaryen/main/src/analysis/lattices/flat.h:71:24:   required from ‘bool wasm::analysis::Flat<T, Ts>::Element::operator==(const wasm::analysis::Flat<T, Ts>::Element&) const [with T = unsigned int; Ts = {}]’
/root/project/binaryen/main/src/analysis/lattices/flat.h:93:11:   required from ‘wasm::analysis::LatticeComparison wasm::analysis::Flat<T, Ts>::compare(const wasm::analysis::Flat<T, Ts>::Element&, const wasm::analysis::Flat<T, Ts>::Element&) const [with T = unsigned int; Ts = {}]’
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:958:38:   [ skipping 6 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/usr/include/c++/9/variant:1014:28:   required from ‘static constexpr auto std::__detail::__variant::__gen_vtable_impl<__same_return_types, std::__detail::__variant::_Multi_array<_Result_type (*)(_Visitor, _Variants ...)>, std::tuple<_Variants ...>, std::integer_sequence<long unsigned int, __indices ...> >::_S_apply() [with bool __same_return_types = true; _Result_type = wasm::analysis::LatticeComparison; _Visitor = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>&&; _Variants = {const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&}; long unsigned int ...__indices = {1, 1, 1}]’
/usr/include/c++/9/variant:909:48:   recursively required from ‘static constexpr void std::__detail::__variant::__gen_vtable_impl<__same_return_types, std::__detail::__variant::_Multi_array<_Result_type (*)(_Visitor, _Variants ...), __dimensions ...>, std::tuple<_Variants ...>, std::integer_sequence<long unsigned int, __indices ...> >::_S_apply_single_alt(_Tp&, _Tp*) [with bool __do_cookie = false; long unsigned int __index = 1; _Tp = std::__detail::__variant::_Multi_array<wasm::analysis::LatticeComparison (*)(wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>&&, const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&), 7, 7>; bool __same_return_types = true; _Result_type = wasm::analysis::LatticeComparison; _Visitor = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>&&; long unsigned int ...__dimensions = {7, 7, 7}; _Variants = {const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&}; long unsigned int ...__indices = {}]’
/usr/include/c++/9/variant:909:48:   required from ‘constexpr const _Array_type std::__detail::__variant::__gen_vtable<true, wasm::analysis::LatticeComparison, wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>&&, const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&>::_S_vtable’
/usr/include/c++/9/variant:1647:23:   required from ‘constexpr decltype(auto) std::__do_visit(_Visitor&&, _Variants&& ...) [with bool __use_index = false; bool __same_return_types = true; _Visitor = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>; _Variants = {const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&}]’
/usr/include/c++/9/variant:1663:24:   required from ‘constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>; _Variants = {const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&}]’
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:964:37:   required from here
/usr/include/c++/9/variant:94:29: error: ‘value’ is not a member of ‘std::variant_size<const wasm::analysis::Flat<unsigned int>::Element>’
   94 |     inline constexpr size_t variant_size_v = variant_size<_Variant>::value;
      |                             ^~~~~~~~~~~~~~
/usr/include/c++/9/variant: In instantiation of ‘constexpr decltype(auto) std::__do_visit(_Visitor&&, _Variants&& ...) [with bool __use_index = false; bool __same_return_types = true; _Visitor = wasm::analysis::Flat<T, Ts>::Element::operator==(const wasm::analysis::Flat<T, Ts>::Element&) const [with T = unsigned int; Ts = {}]::<lambda(const auto:22&, const auto:23&)>; _Variants = {const wasm::analysis::Flat<unsigned int>::Element&, const wasm::analysis::Flat<unsigned int>::Element&}]’:
/usr/include/c++/9/variant:1663:24:   required from ‘constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::analysis::Flat<T, Ts>::Element::operator==(const wasm::analysis::Flat<T, Ts>::Element&) const [with T = unsigned int; Ts = {}]::<lambda(const auto:22&, const auto:23&)>; _Variants = {const wasm::analysis::Flat<unsigned int>::Element&, const wasm::analysis::Flat<unsigned int>::Element&}]’
/root/project/binaryen/main/src/analysis/lattices/flat.h:71:24:   required from ‘bool wasm::analysis::Flat<T, Ts>::Element::operator==(const wasm::analysis::Flat<T, Ts>::Element&) const [with T = unsigned int; Ts = {}]’
/root/project/binaryen/main/src/analysis/lattices/flat.h:93:11:   required from ‘wasm::analysis::LatticeComparison wasm::analysis::Flat<T, Ts>::compare(const wasm::analysis::Flat<T, Ts>::Element&, const wasm::analysis::Flat<T, Ts>::Element&) const [with T = unsigned int; Ts = {}]’
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:958:38:   required from ‘wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)> [with auto:36 = wasm::analysis::Flat<unsigned int>; auto:37 = wasm::analysis::Flat<unsigned int>::Element; auto:38 = wasm::analysis::Flat<unsigned int>::Element]’
/usr/include/c++/9/bits/invoke.h:60:36:   required from ‘constexpr _Res std::__invoke_impl(std::__invoke_other, _Fn&&, _Args&& ...) [with _Res = wasm::analysis::LatticeComparison; _Fn = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>; _Args = {const wasm::analysis::Flat<unsigned int>&, const wasm::analysis::Flat<unsigned int>::Element&, const wasm::analysis::Flat<unsigned int>::Element&}]’
/usr/include/c++/9/bits/invoke.h:95:40:   [ skipping 4 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/usr/include/c++/9/variant:1014:28:   required from ‘static constexpr auto std::__detail::__variant::__gen_vtable_impl<__same_return_types, std::__detail::__variant::_Multi_array<_Result_type (*)(_Visitor, _Variants ...)>, std::tuple<_Variants ...>, std::integer_sequence<long unsigned int, __indices ...> >::_S_apply() [with bool __same_return_types = true; _Result_type = wasm::analysis::LatticeComparison; _Visitor = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>&&; _Variants = {const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&}; long unsigned int ...__indices = {1, 1, 1}]’
/usr/include/c++/9/variant:909:48:   recursively required from ‘static constexpr void std::__detail::__variant::__gen_vtable_impl<__same_return_types, std::__detail::__variant::_Multi_array<_Result_type (*)(_Visitor, _Variants ...), __dimensions ...>, std::tuple<_Variants ...>, std::integer_sequence<long unsigned int, __indices ...> >::_S_apply_single_alt(_Tp&, _Tp*) [with bool __do_cookie = false; long unsigned int __index = 1; _Tp = std::__detail::__variant::_Multi_array<wasm::analysis::LatticeComparison (*)(wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>&&, const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&), 7, 7>; bool __same_return_types = true; _Result_type = wasm::analysis::LatticeComparison; _Visitor = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>&&; long unsigned int ...__dimensions = {7, 7, 7}; _Variants = {const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&}; long unsigned int ...__indices = {}]’
/usr/include/c++/9/variant:909:48:   required from ‘constexpr const _Array_type std::__detail::__variant::__gen_vtable<true, wasm::analysis::LatticeComparison, wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>&&, const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&>::_S_vtable’
/usr/include/c++/9/variant:1647:23:   required from ‘constexpr decltype(auto) std::__do_visit(_Visitor&&, _Variants&& ...) [with bool __use_index = false; bool __same_return_types = true; _Visitor = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>; _Variants = {const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&}]’
/usr/include/c++/9/variant:1663:24:   required from ‘constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>; _Variants = {const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&}]’
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:964:37:   required from here
/usr/include/c++/9/variant:1647:23: error: ‘_S_vtable’ is not a member of ‘std::__detail::__variant::__gen_vtable<true, bool, wasm::analysis::Flat<T, Ts>::Element::operator==(const wasm::analysis::Flat<T, Ts>::Element&) const [with T = unsigned int; Ts = {}]::<lambda(const auto:22&, const auto:23&)>&&, const wasm::analysis::Flat<unsigned int>::Element&, const wasm::analysis::Flat<unsigned int>::Element&>’
 1647 |       constexpr auto& __vtable = __detail::__variant::__gen_vtable<
      |                       ^~~~~~~~
In file included from /root/project/binaryen/main/src/analysis/lattices/array.h:25,
                 from /root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:24:
/root/project/binaryen/main/src/analysis/lattices/flat.h: In instantiation of ‘bool wasm::analysis::Flat<T, Ts>::Element::operator==(const wasm::analysis::Flat<T, Ts>::Element&) const [with T = unsigned int; Ts = {}]’:
/root/project/binaryen/main/src/analysis/lattices/flat.h:93:11:   required from ‘wasm::analysis::LatticeComparison wasm::analysis::Flat<T, Ts>::compare(const wasm::analysis::Flat<T, Ts>::Element&, const wasm::analysis::Flat<T, Ts>::Element&) const [with T = unsigned int; Ts = {}]’
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:958:38:   required from ‘wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)> [with auto:36 = wasm::analysis::Flat<unsigned int>; auto:37 = wasm::analysis::Flat<unsigned int>::Element; auto:38 = wasm::analysis::Flat<unsigned int>::Element]’
/usr/include/c++/9/bits/invoke.h:60:36:   required from ‘constexpr _Res std::__invoke_impl(std::__invoke_other, _Fn&&, _Args&& ...) [with _Res = wasm::analysis::LatticeComparison; _Fn = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>; _Args = {const wasm::analysis::Flat<unsigned int>&, const wasm::analysis::Flat<unsigned int>::Element&, const wasm::analysis::Flat<unsigned int>::Element&}]’
/usr/include/c++/9/bits/invoke.h:95:40:   required from ‘constexpr typename std::__invoke_result<_Functor, _ArgTypes>::type std::__invoke(_Callable&&, _Args&& ...) [with _Callable = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>; _Args = {const wasm::analysis::Flat<unsigned int>&, const wasm::analysis::Flat<unsigned int>::Element&, const wasm::analysis::Flat<unsigned int>::Element&}; typename std::__invoke_result<_Functor, _ArgTypes>::type = wasm::analysis::LatticeComparison]’
/usr/include/c++/9/variant:981:24:   required from ‘static constexpr decltype(auto) std::__detail::__variant::__gen_vtable_impl<__same_return_types, std::__detail::__variant::_Multi_array<_Result_type (*)(_Visitor, _Variants ...)>, std::tuple<_Variants ...>, std::integer_sequence<long unsigned int, __indices ...> >::__visit_invoke_impl(_Visitor&&, _Variants ...) [with bool __same_return_types = true; _Result_type = wasm::analysis::LatticeComparison; _Visitor = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>&&; _Variants = {const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&}; long unsigned int ...__indices = {1, 1, 1}]’
/usr/include/c++/9/variant:989:28:   [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/usr/include/c++/9/variant:1014:28:   required from ‘static constexpr auto std::__detail::__variant::__gen_vtable_impl<__same_return_types, std::__detail::__variant::_Multi_array<_Result_type (*)(_Visitor, _Variants ...)>, std::tuple<_Variants ...>, std::integer_sequence<long unsigned int, __indices ...> >::_S_apply() [with bool __same_return_types = true; _Result_type = wasm::analysis::LatticeComparison; _Visitor = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>&&; _Variants = {const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&}; long unsigned int ...__indices = {1, 1, 1}]’
/usr/include/c++/9/variant:909:48:   recursively required from ‘static constexpr void std::__detail::__variant::__gen_vtable_impl<__same_return_types, std::__detail::__variant::_Multi_array<_Result_type (*)(_Visitor, _Variants ...), __dimensions ...>, std::tuple<_Variants ...>, std::integer_sequence<long unsigned int, __indices ...> >::_S_apply_single_alt(_Tp&, _Tp*) [with bool __do_cookie = false; long unsigned int __index = 1; _Tp = std::__detail::__variant::_Multi_array<wasm::analysis::LatticeComparison (*)(wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>&&, const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&), 7, 7>; bool __same_return_types = true; _Result_type = wasm::analysis::LatticeComparison; _Visitor = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>&&; long unsigned int ...__dimensions = {7, 7, 7}; _Variants = {const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&}; long unsigned int ...__indices = {}]’
/usr/include/c++/9/variant:909:48:   required from ‘constexpr const _Array_type std::__detail::__variant::__gen_vtable<true, wasm::analysis::LatticeComparison, wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>&&, const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&>::_S_vtable’
/usr/include/c++/9/variant:1647:23:   required from ‘constexpr decltype(auto) std::__do_visit(_Visitor&&, _Variants&& ...) [with bool __use_index = false; bool __same_return_types = true; _Visitor = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>; _Variants = {const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&}]’
/usr/include/c++/9/variant:1663:24:   required from ‘constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = wasm::RandomLattice::compare(const Element&, const Element&) const::<lambda(const auto:36&, const auto:37&, const auto:38&)>; _Variants = {const std::variant<wasm::RandomFullLattice, wasm::analysis::Flat<unsigned int>, wasm::analysis::Lift<wasm::RandomLattice>, wasm::analysis::Array<wasm::RandomLattice, 2>, wasm::analysis::Vector<wasm::RandomLattice>, wasm::analysis::Tuple<wasm::RandomLattice, wasm::RandomLattice>, wasm::analysis::SharedPath<wasm::RandomLattice> >&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&, const std::variant<wasm::RandomElement<wasm::RandomFullLattice>, wasm::analysis::Flat<unsigned int>::Element, wasm::analysis::Lift<wasm::RandomLattice>::Element, std::array<wasm::RandomElement<wasm::RandomLattice>, 2>, std::vector<wasm::RandomElement<wasm::RandomLattice>, std::allocator<wasm::RandomElement<wasm::RandomLattice> > >, std::tuple<wasm::RandomElement<wasm::RandomLattice>, wasm::RandomElement<wasm::RandomLattice> >, wasm::analysis::SharedPath<wasm::RandomLattice>::Element>&}]’
/root/project/binaryen/main/src/tools/wasm-fuzz-lattices.cpp:964:37:   required from here
/root/project/binaryen/main/src/analysis/lattices/flat.h:71:24: error: could not convert ‘std::visit<wasm::analysis::Flat<T, Ts>::Element::operator==(const wasm::analysis::Flat<T, Ts>::Element&) const [with T = unsigned int; Ts = {}]::<lambda(const auto:22&, const auto:23&)>, const wasm::analysis::Flat<unsigned int>::Element&, const wasm::analysis::Flat<unsigned int>::Element&>(<lambda closure object>wasm::analysis::Flat<T, Ts>::Element::operator==(const wasm::analysis::Flat<T, Ts>::Element&) const [with T = unsigned int; Ts = {}]::<lambda(const auto:22&, const auto:23&)>{}, (*(const wasm::analysis::Flat<unsigned int>::Element*)this), (* & other))’ from ‘void’ to ‘bool’
   71 |              std::visit(
      |              ~~~~~~~~~~^
   72 |                [](const auto& a, const auto& b) {
      |                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   73 |                  if constexpr (std::is_same_v<decltype(a), decltype(b)>) {
      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   74 |                    return a == b;
      |                    ~~~~~~~~~~~~~~
   75 |                  }
      |                  ~      
   76 |                  return false;
      |                  ~~~~~~~~~~~~~
   77 |                },
      |                ~~       
   78 |                *this,
      |                ~~~~~~   
   79 |                other);
      |                ~~~~~~   
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’
make[2]: *** [src/tools/CMakeFiles/wasm-fuzz-lattices.dir/build.make:115: src/tools/CMakeFiles/wasm-fuzz-lattices.dir/wasm-fuzz-lattices.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:594: src/tools/CMakeFiles/wasm-fuzz-lattices.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions