<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/65608>65608</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            optimize `exp(exp(x)) / exp(x)` 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 two functions:
```c
#include <cmath>

double f1(double x)
{
 return exp(exp(x)) / exp(x);
}

double f2(double x)
{
 return exp(exp(x) - x);
}
```

When these functions are compiled with `-Ofast`, Clang emits code for `f1` that performs floating-point division. GCC does not emit code that performs floating-point division for either function.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycUs2OnDwQfBpzaTEy5tcHDrvMx3fMMWeDG3BibGQ3O5s8fQQzm91DIq0iIWNwV5W7ulSMZnaILSufWXlN1E6LD-33VIXgbzEZvP7Rdt5FozEALQiTt9bfjJuBbh6m3Y1kvIssf2L8yvgTq_j9GR_fIjdutLtGYHk3rooWlv_3ODtX7ffBIkwZE81j_8qEfJTUz_cNBKQ9OMDXjYnmvp5lQgITPXz4kz-_Ya9_0hH_pAMp_IX8reGPWl8XdIddEd8tAhUQRr9uxqKGm6EFWMXTL5OKdMBFB51VbgZcDUUYvT7cDkfRlLGKAy2KYMMw-bBGmKxXZNycbt44Am1eTDTeXeD_rgPtMYLzdHLdqT6FPgXR0ILh98UviW5zLXOpEmyzShZcVoJXydLKXJX5hKh1gYMsZK0FL-sGa5Vl2YBDYlrBRc4lr7Miq4rigkUjm6EUXNa1qGpkBcdVGXux9mW9-DAnJsYd26qseJNYNaCNZzaFcHiD85AJcUQ1tAcmHfY5soJbEym-s5Ahi63fyKzmJx4WfiI3Fb9P5RhIegQ12YNtF6LtjLfomehnQ8s-XEa_MtEfco9XugX_DUdioj8vGZnozyZ-BQAA__8LrwnH">