Cydox wrote: > I reverted my last commit. This leaves the original patch, which seems to > work. @efriedma-quic, would you be okay with this patch while I work to > improve the code in follow-up?
The original (and current) patch in this PR still introduces a regression. So it should not be merged in my opinion. Look at the following C file (`test.c`): ```C #include <stdio.h> #include <stdlib.h> #include <unistd.h> struct variable { int a; int b; int length; short array[] __attribute__((counted_by(length))); }; struct bucket { int a; struct variable growable; }; int main(int argc, char *argv[]) { struct bucket *p; p = malloc(sizeof(*p) + sizeof(*p->growable.array) * 32); p->growable.length = 32; printf("%zu\n", __builtin_dynamic_object_size(p->growable.array, 1)); return 0; } ``` Compiling this file with clang 19.1.0 and running it: ```bash $ clang --version clang version 19.1.0 (Fedora 19.1.0-1.fc41) Target: x86_64-redhat-linux-gnu Thread model: posix InstalledDir: /usr/bin Configuration file: /etc/clang/x86_64-redhat-linux-gnu-clang.cfg $ clang test.c $ ./a.out 64 ``` Correctly prints `64`. But compiling and running it with the originial (and current) patch in this PR: ```bash $ clang --version clang version 20.0.0git (g...@github.com:llvm/llvm-project.git 2de76472e0d1417b64da5aa2c1138eb365685d3a) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /home/jan/llvm-project/build2/bin $ clang test.c $ ./a.out Segmentation fault (core dumped) ``` Will result in a binary that crashes with a segmentation fault. --- My PR #110497 adds a test case for this scenario and does not have the same issue: https://github.com/Cydox/llvm-project/blob/15b69329a97706ada7d5e8cbeb76508aa55b418f/clang/test/CodeGen/attr-counted-by-pr110385.c#L61 https://github.com/llvm/llvm-project/pull/110487 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits