sammccall added a comment. In D76696#1944825 <https://reviews.llvm.org/D76696#1944825>, @hubert.reinterpretcast wrote:
> In D76696#1944784 <https://reviews.llvm.org/D76696#1944784>, @sammccall wrote: > > > The general scheme is probably common: unresolved expr -> ??? -> an > > expression is dependent but not marked as such -> constant evaluation > > crashes. > > > > But the ??? matters, as that's where the fix is. > > In the case above: expr is used in a member of X, and X is not a dependent > > type, so sizeof(X) is not considered dependent > > > The context, if I understand correctly for the cases I am seeing, boil down > to: > > - Value of a member initializer for a constexpr constructor struct X { int Y; constexpr X() : Y(foo()) {] }; This will need a different fix I think. Maybe just isPotentialConstantExpr needs to bail out if there are errors. > - Bitfield width struct X { int Y : foo(); }; constexpr int Z = sizeof(X); I think this one is just another case of marking the fielddecl as invalid. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D76696/new/ https://reviews.llvm.org/D76696 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits