<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/67216>67216</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
optimize `pow(x, i1) / pow(x, i2)` with fast-math
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
k-arrows
</td>
</tr>
</table>
<pre>
Consider the following:
```cpp
#include <cmath>
double f1(double x)
{
return pow(x, 2) / pow(x, 1);
}
double f2(double x)
{
return pow(x, 3) / pow(x, 1);
}
```
https://godbolt.org/z/jjKE5n8o1
If `-Ofast` is specified, GCC just calculates `x * x` for `f2`, but Clang performs floating-point division.
When I lower the version to Clang 14.0.0, it behaves as expected, has anything changed?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycU8GOmzAQ_RpzGQXBGEg4cNhll2rVQ489GzyAU8dGtkmy-_WVE1aNqj1UlRCYmXnzhjcP4b2aDFHDymdWviRiDbN1za-dcM5efNJb-d601nglyUGYCUartb0oMzH-xLIXlj2xKrtfw7JsEeTKDHqVBIy3w0mEmfHXLXe7S7v2mmDMGR6285VhvZXsn-8HAABHYXUGFntheLgybAEZ1sCwe4zlEcyfP_EvX3Hhf3Dxf-f6VOH-Ooew-CgRdgy7ycre6pBaNzHsPhh2x-P319IcbH4vfxuBVdnuxyh8YFUGyoNfaFCjIhk5v7UtHFcfYBB6WLUI5CPgCgyf4BoRo3UxMmIcAVvo1wCtFmaChdxo3cnDqK0Iyky7xSoTQKqz8sqa9FGsnzMZeANtL9u-z-RiEQS7tcuLNEtvFCpAT7M4kwfhga4LDeE-7iw8CPMeZmUmGGZhJpKMd4lsuKx5LRJq8qouC17uK57MzUiil0VZFQOOh0O_p3yPZV5jUUspRC4T1WCGPKuRZ4hY8FTiiJwP-UA59qU4sCKjk1A61fp8ijonyvuVmmqPeZVo0ZP2N5MjGrrALckQo-ddEzG7fp08KzKtfPB_ugQVNDV2CeqkPigq_OAElX9hDxX9GTdyUWGGuNBd_AGS1enmL1eoMK99OtgTwy4ybo_d4uyRhsCwu83pGXa37_gdAAD__3kAFt8">