================ @@ -17389,6 +17389,19 @@ Sema::ActOnTag(Scope *S, unsigned TagSpec, TagUseKind TUK, SourceLocation KWLoc, Previous.clear(); } + // I think DC check should be DC->isStdNamespace()? + // Also these guards are questionable - it's possible to get incorrect + // codegen when the declared type does not match the expected type. + // e.g. something like + // namespace std { struct align_val_t { explicit align_val_t(size_t); } }; + // can result in an operator new/delete decl picking up this specified + // align_val_t struct, but the align_val_t constructed implicitly has the + // mismatching internal definition. + // + // The correct course of action is probably to perform this logic at the point ---------------- erichkeane wrote:
This is perhaps not a bad idea, though it could go in a different patch. Typically we take the fact that defining that in user code is UB, so we can count on its structure. https://github.com/llvm/llvm-project/pull/113510 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits