================ @@ -2753,10 +2753,18 @@ static bool resolveAllocationOverloadInterior( if (Diagnose) { // If this is an allocation of the form 'new (p) X' for some object // pointer p (or an expression that will decay to such a pointer), - // diagnose the missing inclusion of <new>. + // diagnose potential error. if (!R.isClassLookup() && Args.size() == 2 && (Args[1]->getType()->isObjectPointerType() || Args[1]->getType()->isArrayType())) { + if (Args[1]->getType()->isPointerType()) { ---------------- ojhunt wrote:
I think this would be improved by the addition of something to the effect of ```cpp QualType Arg1Type = Args[1]->getType(); ``` And then just reusing that. But I think this check is in the wrong place, and should probably be earlier - this is inside an array of object check so I suspect the existing bad error message would likely occur with something like ```cpp void f(const void* ptr) { new (ptr) int; } ``` you probably want something to the effect of ```cpp if (Context.getBaseElementType(Arg1Type).isConstQualified()) { emit the error return true; } ``` https://github.com/llvm/llvm-project/pull/144270 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits