http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58963
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Cong Hou from comment #3) > Suppose there is a third-party complex library, which is written in the same > way as <complex>. Then GCC could not recognize that as complex type, and > will not use builtin calls to calculate multiplication and division. > > So why there should be a difference when I use the third-party complex lib > and the standard library lib. After all, <complex> is all written in source > code. <complex> is not the same as _Complex in C99. This is like a third party C99 library which does not use _Complex internally and expands the multiply themselves. I don't see any different here. And yes I have seen those libraries before (most of them predate C99 too).