<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">