There are a bunch of missed-optimizations in fold_builtin_pow where we restrict
foldings to cases of non-negative base even when the power is an integer.
One source of easy missed optimizations is that fold folds x * x to pow (x, 2.0)
instead of powi (x, 2) which would make further analysis easier.
I have to XFAIL parts of gcc.dg/builtins-10.c because of PR41094.
The XFAIL is still in the test and replacing it with linker_error() makes the test fail, so it looks like the optimization opportunities are still there. I note that since r229408 fold_builtin_pow doesn't exist anymore as the logic was moved to fold_const_builtin_pow and match.pd.