http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53511
--- Comment #6 from Kazumoto Kojima <kkojima at gcc dot gnu.org> 2012-06-05 09:21:49 UTC --- > It seems that __builtin_sh_media_FMAC_S is broken on trunk > in the first place, though I can test it only on sh64-elf > environment now. Anyway the patch should OK in this regard. Looking into the __builtin_sh_media_FMAC_S implementation, it takes 2 floating arguments and one return float value. It looks that "a = __builtin_sh_media_FMAC_S (b, c)" was expected to work. I guess that this is broken in concept. We can make it take 3 arguments but I suspect that no one has used it at all. It might be better to simply remove this intrinsic because now your patch makes fma usable naturally.