http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56355
--- Comment #1 from Marc Glisse <glisse at gcc dot gnu.org> 2013-02-16 12:07:28 UTC --- Actually, for g/h with double, using __builtin_fabs instead of std::abs does it, so it is just the usual lack of combine at the tree level. But there is still f, and the builtin approach doesn't help for int.