tbaeder added inline comments.
================ Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:962-963 + } else if (const auto *Ctor = dyn_cast<CXXConstructExpr>(Initializer)) { + const ArrayType *AT = Ctor->getType()->getAsArrayTypeUnsafe(); + const auto *CAT = cast<ConstantArrayType>(AT); + size_t NumElems = CAT->getSize().getZExtValue(); ---------------- aaron.ballman wrote: > This should go through `ASTContext::getConstantArrayType()`. It may also be > worth a comment mentioning that VLAs can't have initializers and an unbounded > array has known bounds if it has an initializer, as I suspect that's the > reason you're not handling either of those here? I'm not handling them because they are untested everywhere. :/ ================ Comment at: clang/test/AST/Interp/arrays.cpp:188-200 +class A { +public: + int a; + constexpr A(int m = 2) : a(10 + m) {} +}; +class B { +public: ---------------- aaron.ballman wrote: > I'd like to see a test for when the class ends with a flexible array member > (ctor shouldn't be called for that case because we don't know how many > trailing objects there will be). That could show up as an unbounded member. > > Also, a test case where the ctor will execute UB, to demonstrate we properly > diagnose arrays of default-constructed objects. I added a test for a UB constructor, but a flexible array member shows up as a non-`ConstantArrayType` member, so the code runs into one or the other assertion. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136920/new/ https://reviews.llvm.org/D136920 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits