Hi all,
I’ve just forked PennyLaneAI/catalyst today, and I’m following the Detailed Building From Source
guide, and getting an error while making mlir
.
I’m pretty sure it has to do with clang++ or libstdc++ versions, but wanted to check with you if you had seen it before, and how you fixed it.
This is the whole error:
-- Build files have been written to: /home/rturrado/Projects/catalyst/mlir/build
cmake --build /home/rturrado/Projects/catalyst/mlir//build --target check-dialects quantum-lsp-server catalyst-cli check-unit-tests
[97/342] Building CXX object lib/Quantum/Transforms/CMakeFiles/obj.quantum-transforms.dir/AdjointPatterns.cpp.o
FAILED: lib/Quantum/Transforms/CMakeFiles/obj.quantum-transforms.dir/AdjointPatterns.cpp.o
/usr/bin/ccache /usr/bin/clang++ -DGTEST_HAS_RTTI=0 -D_DEBUG -D_GLIBCXX_ASSERTIONS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/rturrado/Projects/catalyst/mlir/include -I/home/rturrado/Projects/catalyst/mlir/build/include -I/home/rturrado/Projects/catalyst/mlir/lib/Quantum/Transforms/. -isystem /home/rturrado/Projects/catalyst/mlir/llvm-project/llvm/include -isystem /home/rturrado/Projects/catalyst/mlir/llvm-project/build/include -isystem /home/rturrado/Projects/catalyst/mlir/llvm-project/mlir/include -isystem /home/rturrado/Projects/catalyst/mlir/llvm-project/build/tools/mlir/include -isystem /home/rturrado/Projects/catalyst/mlir/mlir-hlo -isystem /home/rturrado/Projects/catalyst/mlir/mlir-hlo/bazel-build -isystem /home/rturrado/Projects/catalyst/mlir/mlir-hlo/stablehlo -isystem /home/rturrado/Projects/catalyst/mlir/mlir-hlo/bazel-build/stablehlo -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG -std=gnu++20 -D_DEBUG -D_GLIBCXX_ASSERTIONS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -fno-exceptions -funwind-tables -fno-rtti -Wall -UNDEBUG -Werror -MD -MT lib/Quantum/Transforms/CMakeFiles/obj.quantum-transforms.dir/AdjointPatterns.cpp.o -MF lib/Quantum/Transforms/CMakeFiles/obj.quantum-transforms.dir/AdjointPatterns.cpp.o.d -o lib/Quantum/Transforms/CMakeFiles/obj.quantum-transforms.dir/AdjointPatterns.cpp.o -c /home/rturrado/Projects/catalyst/mlir/lib/Quantum/Transforms/AdjointPatterns.cpp
In file included from /home/rturrado/Projects/catalyst/mlir/lib/Quantum/Transforms/AdjointPatterns.cpp:17:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/algorithm:60:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/stl_algobase.h:67:
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/stl_iterator.h:180:37: error: no matching constructor for initialization of 'llvm::detail::indexed_accessor_range_base<mlir::ValueRange, llvm::PointerUnion<const mlir::Value *, mlir::OpOperand *, mlir::detail::OpResultImpl *>, mlir::Value, mlir::Value, mlir::Value>::iterator'
180 | _GLIBCXX_NOEXCEPT_IF(noexcept(_Iterator()))
| ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/type_traits:1312:42: note: in instantiation of exception specification for 'reverse_iterator' requested here
1312 | = requires (void(&__f)(_Tp)) { __f({}); };
| ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/type_traits:1312:38: note: in instantiation of requirement here
1312 | = requires (void(&__f)(_Tp)) { __f({}); };
| ^~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/tuple:963:18: note: in instantiation of variable template specialization 'std::__is_implicitly_default_constructible_v<std::reverse_iterator<llvm::detail::indexed_accessor_range_base<mlir::ValueRange, llvm::PointerUnion<const mlir::Value *, mlir::OpOperand *, mlir::detail::OpResultImpl *>, mlir::Value, mlir::Value, mlir::Value>::iterator>>' requested here
963 | explicit(!(__is_implicitly_default_constructible_v<_Elements> && ...))
| ^
/home/rturrado/Projects/catalyst/mlir/llvm-project/llvm/include/llvm/ADT/STLExtras.h:713:24: note: in instantiation of template class 'std::tuple<llvm::detail::index_iterator, std::reverse_iterator<llvm::detail::indexed_accessor_range_base<mlir::ValueRange, llvm::PointerUnion<const mlir::Value *, mlir::OpOperand *, mlir::detail::OpResultImpl *>, mlir::Value, mlir::Value, mlir::Value>::iterator>>' requested here
713 | std::tuple<Iters...> iterators;
| ^
/home/rturrado/Projects/catalyst/mlir/llvm-project/llvm/include/llvm/ADT/STLExtras.h:2277:25: note: in instantiation of template class 'llvm::detail::zip_common<llvm::detail::zip_enumerator<llvm::detail::index_iterator, std::reverse_iterator<llvm::detail::indexed_accessor_range_base<mlir::ValueRange, llvm::PointerUnion<const mlir::Value *, mlir::OpOperand *, mlir::detail::OpResultImpl *>, mlir::Value, mlir::Value, mlir::Value>::iterator>>, llvm::detail::enumerator_result<unsigned long, mlir::Value>, llvm::detail::index_iterator, std::reverse_iterator<llvm::detail::indexed_accessor_range_base<mlir::ValueRange, llvm::PointerUnion<const mlir::Value *, mlir::OpOperand *, mlir::detail::OpResultImpl *>, mlir::Value, mlir::Value, mlir::Value>::iterator>>' requested here
2277 | struct zip_enumerator : zip_common<zip_enumerator<Iters...>,
| ^
/home/rturrado/Projects/catalyst/mlir/llvm-project/llvm/include/llvm/ADT/STLExtras.h:823:38: note: in instantiation of template class 'llvm::detail::zip_enumerator<llvm::detail::index_iterator, std::reverse_iterator<llvm::detail::indexed_accessor_range_base<mlir::ValueRange, llvm::PointerUnion<const mlir::Value *, mlir::OpOperand *, mlir::detail::OpResultImpl *>, mlir::Value, mlir::Value, mlir::Value>::iterator>>' requested here
823 | using iterator_category = typename iterator::iterator_category;
| ^
/home/rturrado/Projects/catalyst/mlir/llvm-project/llvm/include/llvm/ADT/STLExtras.h:2467:10: note: in instantiation of template class 'llvm::detail::zippy<llvm::detail::zip_enumerator, llvm::detail::index_stream, llvm::iterator_range<std::reverse_iterator<llvm::detail::indexed_accessor_range_base<mlir::ValueRange, llvm::PointerUnion<const mlir::Value *, mlir::OpOperand *, mlir::detail::OpResultImpl *>, mlir::Value, mlir::Value, mlir::Value>::iterator>>>' requested here
2467 | return enumerator(detail::index_stream{}, std::forward<FirstRange>(First),
| ^
/home/rturrado/Projects/catalyst/mlir/lib/Quantum/Transforms/AdjointPatterns.cpp:172:44: note: in instantiation of function template specialization 'llvm::enumerate<llvm::iterator_range<std::reverse_iterator<llvm::detail::indexed_accessor_range_base<mlir::ValueRange, llvm::PointerUnion<const mlir::Value *, mlir::OpOperand *, mlir::detail::OpResultImpl *>, mlir::Value, mlir::Value, mlir::Value>::iterator>>>' requested here
172 | for (auto [idx, param] : llvm::enumerate(llvm::reverse(params))) {
| ^
/home/rturrado/Projects/catalyst/mlir/llvm-project/llvm/include/llvm/ADT/STLExtras.h:1266:9: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
1266 | class iterator : public indexed_accessor_iterator<iterator, BaseT, T,
| ^~~~~~~~
/home/rturrado/Projects/catalyst/mlir/llvm-project/llvm/include/llvm/ADT/STLExtras.h:1266:9: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
1266 | class iterator : public indexed_accessor_iterator<iterator, BaseT, T,
| ^~~~~~~~
/home/rturrado/Projects/catalyst/mlir/llvm-project/llvm/include/llvm/ADT/STLExtras.h:1275:5: note: candidate constructor not viable: requires 2 arguments, but 0 were provided
1275 | iterator(BaseT owner, ptrdiff_t curIndex)
| ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
[114/342] Building CXX object lib/Gradient/Transforms/CMakeFiles/obj.gradient-transforms.dir/gradient_to_llvm.cpp.o
ninja: build stopped: subcommand failed.
make[1]: *** [Makefile:167: dialects] Error 1
make[1]: Leaving directory '/home/rturrado/Projects/catalyst/mlir'
make: *** [Makefile:124: mlir] Error 2
It also fails with make dialects
.
I’m using:
- clang+±18.1.3
- libstdc+±14-dev
Many thanks,
Roberto.