I think you are generally correct but the two examples you gave "triggered" me ;-)
What damaged would there be if gcc or LLVM did decide to not support x87 anymore.
It is not much different from dropping an ISA like IA64.
You can still use the older compilers if you need to.
Similarly, what is varargs used for? Pretty much only for C and its unfortunate printf, scanf stdlib calls.
If a backend decides not support C, all this headache goes away.
The problem is, of course, that the first thing every new backend designer does is to write a C frontend.
> What damaged would there be if gcc or LLVM did decide to not support x87 anymore.
For starters, you'd break every program using long double on x86.
And as far as "complexities of the x86 ISA" goes, x87 isn't really that high on the list. I mean, MMX is definitely more complex (and LLVM recently ripped out support for that). But even more complex than either of those would be anything touching AVX, AVX-512, or now AVX-10 stuff, and all the fun you get trying to build your systems to handle encoding the VEX or EVEX prefixes.
What damaged would there be if gcc or LLVM did decide to not support x87 anymore. It is not much different from dropping an ISA like IA64. You can still use the older compilers if you need to.
Similarly, what is varargs used for? Pretty much only for C and its unfortunate printf, scanf stdlib calls. If a backend decides not support C, all this headache goes away. The problem is, of course, that the first thing every new backend designer does is to write a C frontend.