Alejandro =?utf-8?q?Álvarez_Ayllón?Message-ID: In-Reply-To: <llvm.org/llvm/llvm-project/pull/155...@github.com>
================ @@ -165,3 +165,124 @@ void LValueToRValueBitCast_dumps(void *p, char (*array)[8]) { unsigned long ptr_arithmetic(void *p) { return __builtin_bit_cast(unsigned long, p) + 1; // no-crash } + + +void escape(int*); + +struct AllocOpaqueFlag {}; + +void* operator new(unsigned long, void *ptr) noexcept { return ptr; } +void* operator new(unsigned long, void *ptr, AllocOpaqueFlag const&) noexcept { return ptr; } + +void* operator new[](unsigned long, void* ptr) noexcept { return ptr; } +void* operator new[](unsigned long, void* ptr, AllocOpaqueFlag const&); + +struct Buffer { + char buf[100]; + int padding; +}; + +void checkPlacementNewArryInObject() { + Buffer buffer; + int* array = new (&buffer) int[10]; ---------------- steakhal wrote: So I guess, alignment requirements are not checked. Thats sad, but We could extend this checker later. This is a common mistake I think. https://github.com/llvm/llvm-project/pull/155855 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits