void added a comment.

In D144136#4137143 <https://reviews.llvm.org/D144136#4137143>, @kees wrote:

> Here's a test-case. I'd expect 6 remarks from building this:
>
>   /* Build with -Wall -O2 -fstrict-flex-arrays=3 -fsanitize=bounds 
> -Rarray-bounds */
>   #include <stdint.h>
>   #include <stdio.h>
>   #include <string.h>
>   #include <malloc.h>
>   
>   #define report_size(p, index)      do {    \
>       const size_t bdos = __builtin_dynamic_object_size(p, 1); \
>       \
>       if (__builtin_constant_p(bdos)) { \
>           if (bdos == SIZE_MAX) { \
>               printf(#p " has unknowable size\n"); \
>           } else { \
>               printf(#p " has a fixed size: %zu\n", bdos); \
>           } \
>       } else { \
>           printf(#p " has a dynamic size: %zu\n", bdos); \
>       } \
>       printf(#p "[" #index "] assignment: %d\n", (p)[index] = 15); \
>   } while (0)
>   
>   struct fixed {
>       unsigned long flags;
>       size_t foo;
>       int array[16];
>   };
>   
>   /* should emit "fixed" */
>   void do_fixed(struct fixed *p, int index)
>   {
>       report_size(p->array, 0);
>       report_size(p->array, index);
>   }
>   
>   struct flex {
>       unsigned long flags;
>       size_t foo;
>       int array[];
>   };
>   
>   /* should emit "dynamic" */
>   void do_dynamic(unsigned char count, int index)
>   {
>       /* malloc() is marked with __attribute__((alloc_size(1))) */
>       struct flex *p = malloc(sizeof(*p) + count * sizeof(*p->array));
>       report_size(p->array, 0);
>       report_size(p->array, index);
>       free(p);
>   }
>   
>   /* should emit "unknowable" */
>   void do_unknown(struct flex *p, int index)
>   {
>       report_size(p->array, 0);
>       report_size(p->array, index);
>   }
>
> Currently, it only emits once for the compile-time known index with a 
> compile-time known array size:
>
>   array.c:31:17: remark: accessing fixed sized array 'int[16]' by 0 
> [-Rarray-bounds]                  
>       report_size(p->array, 0);                                               
>                                         ^                                 

Right. I'll be working on the rest of these soon. Probably the FAM's will be 
next followed by the "dynamic" size, as that's trickier due to lack of support 
in Clang for some of the required features.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D144136/new/

https://reviews.llvm.org/D144136

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to