[PATCH] D149158: [clang][analyzer] Cleanup tests of StdCLibraryFunctionsChecker (NFC)

Balázs Kéri via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed May 10 08:28:58 PDT 2023


balazske added inline comments.


================
Comment at: clang/test/Analysis/Inputs/std-c-library-functions.h:1-2
+typedef typeof(sizeof(int)) size_t;
+typedef signed long ssize_t;
+typedef struct {
----------------
steakhal wrote:
> balazske wrote:
> > steakhal wrote:
> > > `ssize_t`'s size should match the size of `size_t`. In this implementation, it would be true only if `size_t` is `long`.
> > > 
> > I could not find a working way of defining the type in that way (there is no `__sizte_t`). The current definition should work well in the test code, the property of being the same size is supposedly not used in the tests. The previous definition was not better than this (and different in different places).
> I think [[ https://github.com/llvm/llvm-project/blob/main/clang/test/Sema/format-strings-scanf.c#L7-L15 | clang/test/Sema/format-strings-scanf.c ]] uses something like this: 
> ```lang=C++
> typedef __SIZE_TYPE__ size_t;
> #define __SSIZE_TYPE__                                                         \
>   __typeof__(_Generic((__SIZE_TYPE__)0,                                        \
>                       unsigned long long int : (long long int)0,               \
>                       unsigned long int : (long int)0,                         \
>                       unsigned int : (int)0,                                   \
>                       unsigned short : (short)0,                               \
>                       unsigned char : (signed char)0))
> typedef __SSIZE_TYPE__ ssize_t;
> ```
This may work (probably not on all platforms) but still I think in this context it is only important that we have a type called `ssize_t` and it is signed, it is less important that it is exactly the correct type. Other types in the same header are not exact, and `ssize_t` in other test code (in Analysis tests) is defined not in this way.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D149158



More information about the cfe-commits mailing list