llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Timm Baeder (tbaederr) <details> <summary>Changes</summary> --- Full diff: https://github.com/llvm/llvm-project/pull/123515.diff 2 Files Affected: - (modified) clang/lib/AST/ByteCode/Compiler.cpp (+9) - (modified) clang/test/AST/ByteCode/cxx17.cpp (+20) ``````````diff diff --git a/clang/lib/AST/ByteCode/Compiler.cpp b/clang/lib/AST/ByteCode/Compiler.cpp index 7afae97f308ad5..414323eaa12654 100644 --- a/clang/lib/AST/ByteCode/Compiler.cpp +++ b/clang/lib/AST/ByteCode/Compiler.cpp @@ -4984,6 +4984,15 @@ bool Compiler<Emitter>::visitDeclStmt(const DeclStmt *DS) { return false; if (!this->visitVarDecl(VD)) return false; + + // Register decomposition decl holding vars. + if (const auto *DD = dyn_cast<DecompositionDecl>(VD)) { + for (auto *BD : DD->bindings()) + if (auto *KD = BD->getHoldingVar()) { + if (!this->visitVarDecl(KD)) + return false; + } + } } return true; diff --git a/clang/test/AST/ByteCode/cxx17.cpp b/clang/test/AST/ByteCode/cxx17.cpp index e8559d8b9812ac..ecb8a395520a05 100644 --- a/clang/test/AST/ByteCode/cxx17.cpp +++ b/clang/test/AST/ByteCode/cxx17.cpp @@ -105,3 +105,23 @@ constexpr S s = getS(); // both-error {{must be initialized by a constant expres // both-note {{declared here}} static_assert(s.a == 12, ""); // both-error {{not an integral constant expression}} \ // both-note {{initializer of 's' is not a constant expression}} + +using size_t = decltype(sizeof(0)); +namespace std { template<typename T> struct tuple_size; } +namespace std { template<size_t, typename> struct tuple_element; } + +namespace constant { + struct Q {}; + template<int N> constexpr int get(Q &&) { return N * N; } +} +template<> struct std::tuple_size<constant::Q> { static const int value = 3; }; +template<int N> struct std::tuple_element<N, constant::Q> { typedef int type; }; + +namespace constant { + Q q; + constexpr bool f() { + auto [a, b, c] = q; + return a == 0 && b == 1 && c == 4; + } + static_assert(f()); +} `````````` </details> https://github.com/llvm/llvm-project/pull/123515 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits