hokein added a comment. Thanks for tracking it down, and sorry for the delay.
I thought the crash was fix in https://reviews.llvm.org/D99145. Thinking more about it, this is a recovery-expr crash, see my comment below. ================ Comment at: clang/lib/Sema/SemaChecking.cpp:4543 // getTypeAlignInChars requires complete types - if (ParamTy->isIncompleteType() || ArgTy->isIncompleteType() || - ParamTy->isUndeducedType() || ArgTy->isUndeducedType()) + auto CheckTypeOK = [](QualType Ty) { + if (Ty->isIncompleteType() || Ty->isUndeducedType()) ---------------- The current fix is on top of kadir's fix, now the code becomes more add-hoc, it looks like a smell to me. It looks like `CheckArgAlignment` has an implicit invariant (the arg type should never be undeduced), and this invariant was enforced by dropping the invalid AST. Now with `RecoveryExpr`, we might break the invariant -- when the RecoveryExpr preserves an `undeduced` type, like the test case in this patch (which is done via the [code](https://github.com/llvm/llvm-project/blob/main/clang/lib/Sema/SemaExprCXX.cpp#L1420)). I think a right fix is to fix in the `RecoveryExpr` side, `RecoveryExpr` should not preserve an undeduced type, we did it for function return type already (https://reviews.llvm.org/D87350), but it didn't cover all places. I think a general fixing place is `Sema::CreateRecoveryExpr`, if the passing `T` is undeduced, fallback to dependent type. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D100667/new/ https://reviews.llvm.org/D100667 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits