Removal of built-ins


Some recent commits are quite disturbing, but I can understand if it
was intentional..

This commit and it's message for example

Taking one random built-in as an example

A quick google search using that as a keyword brings up a small
handful of source publicly available using it.

Removing the usage from the internal header implementation +1 , but
removing support for it entirely seems like a regression.

Clang has never exposed the same set of builtins as GCC, though:

I don’t think we need to keep our IA32 vector builtin interface stable when the *mmintrin.h headers already provide a stable, portable, cross-vendor interface to the same functionality.

I didn't mention gcc.. I agree they shouldn't be used in the wild, but
they are..

Why not leave the built-in support and under the hood just map that to
something more portable? This is a pretty low cost (zero?) maintenance

Intentionally breaking stuff without at least giving any warning or
marking as deprecated in a major release 1st.. Is this an exception
because __built-ins are grey area support?

Well, it can be considered a break for IR purposes. As such, it might be
a better idea to just flag the builtins as deprecated / obsolete and
wait for the next release.


What Reid is saying has been our policy from the beginning, there’s even a script in the repository (that I sadly haven’t updated in years) that helps handle the transition between builtins and the *mmintrin.h headers.


I agree that we don’t need to support undocumented builtins.


Eric, as I’m the one who deleted this builtin, and probably many previous ones. Should I look into updating the script?

If you’d like to it’d be lovely.