[PATCH] D131351: [C] Default implicit function pointer conversions diagnostic to be an error

Brooks Moses via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 10 22:18:57 PDT 2022


brooksmoses added a comment.

For the record, so far we've seen this showing up in the following:

- A case in a notoriously warning-heavy third-party library where we'd backported a file from a newer version and didn't quite fix all the internal API mismatches.
- A ten-year-old bug in a local patch to another third-party library, where a function-pointer parameter was defined as returning a `void` and then assigned to a function-pointer that returns a `void *`.
- A probably-innocuous bug in a local patch to yet another third-party library, where we were passing an `int foo(char *, char *)` function to GLIBC's `qsort`, which expects a function with a signature of `int foo(void *, void *)`.
- A case where https://gitlab.freedesktop.org/pixman/pixman/-/commit/e0d4403e78a7af8f4be4110ae25e9c3d1ac93a78 wasn't applied to our local version.  This is also probably an innocuous case, not a "real" bug.
- A case where SciPy's extension has a function that uses `void *` for a `FILE *` pointer (https://github.com/scipy/scipy/blob/main/scipy/spatial/_qhull.pyx#L187, second argument) while the corresponding C code's function has a real `FILE *` pointer (https://github.com/qhull/qhull/blob/master/src/libqhull_r/io_r.h#L97).  The SciPy function also uses a `void *` for an argument of a struct type, which seems rather odd to me given that it just defined the type two lines earlier.

So, real bugs in 40% of cases, I'd say.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D131351



More information about the cfe-commits mailing list