If it supports function overloading then it isn't a C compiler
either.
It would have been better perhaps if Jacob had stated: "lcc-win32 is a
compiler that supports function overloading as an extension", but I
think your reaction is a little overboard.
If a compiler supported signed and unsigned long long types or a
built-in Boolean type five years ago, it wasn't a strictly conforming
C compiler either, at least not when operated in a mode where these
things existed.
One of the most practical ways to propose the addition of features to
new generations of a language like C is not only to propose them, but
to show an existing implementation. Then the pros and cons become
directly testable and not merely theoretical.
Whether or not you or I think function overloading is something that
should be added to C is irrelevant.
At least compiler vendor has implemented <tgmath.h> functionality by
temporarily switching their implementation into C++ "mode" while
processing the header, which in their version contains ordinary C++
overloaded functions. At the end of the header it switches back to C
"mode", but the processed prototypes remain in the symbol table. The
proper overloaded function is called based on the types of the
arguments in the C source.
In fact, providing these as special case overloaded functions if
probably the simplest way to implement <tgmath.h> functionality in C,
and is of course perfectly legal for an implementation to do so.