Removal of built-ins

Hi

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

This commit and it's message for example
https://github.com/llvm-mirror/clang/commit/53a73530fec13416edeb495e6041b3b3e1340178

Taking one random built-in as an example
__builtin_ia32_storedqu

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:
http://clang.llvm.org/compatibility.html#vector_builtins

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
burden...

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.

Joerg

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.

-eric

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

John.

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.

Thanks!