__builtin___clear_cache() has a different prototype than GCC · Issue #47833 · llvm/llvm-project (original) (raw)

Bugzilla Link 48489
Version unspecified
OS All
CC @DougGregor,@zygoloid,@stbergmann

Extended Description

GCC provides:

void __builtin___clear_cache(void *begin, void *end);

See: https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html

Clang provides:

void __builtin___clear_cache(char *begin, char *end);

I think GCC used char * in the past, and moved to void *, but I'm not sure about this. Please, use the same prototype that GCC uses, for compatibility reasons.

I don't know much about internals of Clang/LLVM, but the only source I could find that defines the types for the prototype is:

BUILTIN(__builtin___clear_cache, "vc*c*", "n")

If you can confirm that, or tell me which other sources need to be modified, I'll be happy to submit a patch.

And a reminder to myself when this bug is closed: Update cacheflush(2) manual page.

Related linux-man@ thread: https://lore.kernel.org/linux-man/747d56e0-c102-ab40-add4-530a48a43a4d@gmx.de/T/#t