llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang @llvm/pr-subscribers-pgo Author: AtariDreams (AtariDreams) <details> <summary>Changes</summary> gcc-14 will now throw a warning if size and elements are swapped. --- Full diff: https://github.com/llvm/llvm-project/pull/79081.diff 5 Files Affected: - (modified) clang/test/Analysis/malloc.mm (+3-3) - (modified) clang/test/Analysis/uninit-vals.m (+3-3) - (modified) clang/test/CodeGen/alloc-size.c (+2-2) - (modified) compiler-rt/lib/profile/InstrProfilingFile.c (+2-2) - (modified) compiler-rt/test/tsan/java_finalizer2.cpp (+1-1) ``````````diff diff --git a/clang/test/Analysis/malloc.mm b/clang/test/Analysis/malloc.mm index 9c0f013c4df88a7..94a46d731090b35 100644 --- a/clang/test/Analysis/malloc.mm +++ b/clang/test/Analysis/malloc.mm @@ -116,17 +116,17 @@ void testUseAfterFree() { } void testNoCopy() { - char *p = (char *)calloc(sizeof(int), 1); + char *p = (char *)calloc(1, sizeof(int)); CustomData *w = [CustomData somethingNoCopy:p]; // no-warning } void testFreeWhenDone() { - char *p = (char *)calloc(sizeof(int), 1); + char *p = (char *)calloc(1, sizeof(int)); CustomData *w = [CustomData something:p freeWhenDone:1]; // no-warning } void testFreeWhenDonePositive() { - char *p = (char *)calloc(sizeof(int), 1); + char *p = (char *)calloc(1, sizeof(int)); CustomData *w = [CustomData something:p freeWhenDone:0]; // expected-warning{{leak}} } diff --git a/clang/test/Analysis/uninit-vals.m b/clang/test/Analysis/uninit-vals.m index 9d18f0ef69b9270..a6ec4fb74e128f8 100644 --- a/clang/test/Analysis/uninit-vals.m +++ b/clang/test/Analysis/uninit-vals.m @@ -158,7 +158,7 @@ Point makePoint(float x, float y) { } void PR14765_test(void) { - Circle *testObj = calloc(sizeof(Circle), 1); + Circle *testObj = calloc(1, sizeof(Circle)); clang_analyzer_eval(testObj->size == 0); // expected-warning{{TRUE}} // expected-note@-1{{TRUE}} @@ -207,7 +207,7 @@ IntPoint makeIntPoint(int x, int y) { } void PR14765_test_int(void) { - IntCircle *testObj = calloc(sizeof(IntCircle), 1); + IntCircle *testObj = calloc(1, sizeof(IntCircle)); clang_analyzer_eval(testObj->size == 0); // expected-warning{{TRUE}} // expected-note@-1{{TRUE}} @@ -311,7 +311,7 @@ void testLargeStructsNotCopiedPerField(void) { } void testSmallStructInLargerStruct(void) { - IntCircle2D *testObj = calloc(sizeof(IntCircle2D), 1); + IntCircle2D *testObj = calloc(1, sizeof(IntCircle2D)); clang_analyzer_eval(testObj->size == 0); // expected-warning{{TRUE}} // expected-note@-1{{TRUE}} diff --git a/clang/test/CodeGen/alloc-size.c b/clang/test/CodeGen/alloc-size.c index 370f61058c49376..bbac7965521b6e3 100644 --- a/clang/test/CodeGen/alloc-size.c +++ b/clang/test/CodeGen/alloc-size.c @@ -137,7 +137,7 @@ void test5(void) { // CHECK: store i32 36 gi = OBJECT_SIZE_BUILTIN(&data->t[1], 3); - struct Data *const arr = my_calloc(sizeof(*data), 2); + struct Data *const arr = my_calloc(2, sizeof(*data)); // CHECK: store i32 96 gi = OBJECT_SIZE_BUILTIN(arr, 0); // CHECK: store i32 96 @@ -171,7 +171,7 @@ void test6(void) { // CHECK: store i32 11 gi = OBJECT_SIZE_BUILTIN(data->end, 3); - struct Data *const arr = my_calloc(sizeof(*arr) + 5, 3); + struct Data *const arr = my_calloc(3, sizeof(*arr) + 5); // AFAICT, GCC treats malloc and calloc identically. So, we should do the // same. // diff --git a/compiler-rt/lib/profile/InstrProfilingFile.c b/compiler-rt/lib/profile/InstrProfilingFile.c index e72a2ba86f54660..867ae73f0d3b27c 100644 --- a/compiler-rt/lib/profile/InstrProfilingFile.c +++ b/compiler-rt/lib/profile/InstrProfilingFile.c @@ -335,10 +335,10 @@ static void initFileWriter(ProfDataWriter *This, FILE *File) { COMPILER_RT_VISIBILITY ProfBufferIO * lprofCreateBufferIOInternal(void *File, uint32_t BufferSz) { FreeHook = &free; - DynamicBufferIOBuffer = (uint8_t *)calloc(BufferSz, 1); + DynamicBufferIOBuffer = (uint8_t *)calloc(1, BufferSz); VPBufferSize = BufferSz; ProfDataWriter *fileWriter = - (ProfDataWriter *)calloc(sizeof(ProfDataWriter), 1); + (ProfDataWriter *)calloc(1, sizeof(ProfDataWriter)); initFileWriter(fileWriter, File); ProfBufferIO *IO = lprofCreateBufferIO(fileWriter); IO->OwnFileWriter = 1; diff --git a/compiler-rt/test/tsan/java_finalizer2.cpp b/compiler-rt/test/tsan/java_finalizer2.cpp index 87528900541a84b..d230c4e2b0ea23e 100644 --- a/compiler-rt/test/tsan/java_finalizer2.cpp +++ b/compiler-rt/test/tsan/java_finalizer2.cpp @@ -51,7 +51,7 @@ void *Ballast(void *p) { } int main() { - Heap* heap = (Heap*)calloc(sizeof(Heap), 2) + 1; + Heap* heap = (Heap*)calloc(2, sizeof(Heap)) + 1; __tsan_java_init((jptr)heap, sizeof(*heap)); __tsan_java_alloc((jptr)heap, sizeof(*heap)); // Ballast threads merely make the bug a bit easier to trigger. `````````` </details> https://github.com/llvm/llvm-project/pull/79081 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits