https://gcc.gnu.org/bugzilla/show_bug.cgi?id=14541
--- Comment #16 from Richard Biener <rguenth at gcc dot gnu.org> ---
(for logfn (BUILT_IN_LOGF BUILT_IN_LOG BUILT_IN_LOGL)
expfn (BUILT_IN_EXPF BUILT_IN_EXP BUILT_IN_EXPL)
(simplify
(logfn (expfn @0))
(if (flag_unsafe_math_optimizations)
@0)))
with the still somewhat awkward syntax, patch for proposed better one
is not yet ready but would look like
(define_operator_list log (BUILT_IN_LOGF BUILT_IN_LOG BUILT_IN_LOGL))
(define_operator_list exp (BUILT_IN_EXPF BUILT_IN_EXP BUILT_IN_EXPL))
(simplify
(log (exp @0))
(if (flag_unsafe_math_optimizations)
@0)))
thus the 'for' would be implicit. Note that fold_builtin_logarithm does handle
some more cases. The match-and-simplify branch already covers quite some
patterns in match-builtins.def (but not the above).
I'll see if I can take the syntax patch (I was waiting for that so not to
merge the "ugly" syntax).