<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJzNVkuP2yAQ_jX2ZRTLwXEeBx-2yUbaU6tq7yuMxzYthgjwPv59B-IkG21abdVLI4RhGGa--WCG1KZ5qx40CMV1N5sXILWSWuoOBtn1HlqjlHkB3yMMwozak4LzdhxQe-6l0TA6bKB-g9mhy5J8l-R3jxdli0qiA1JrLR8QDkZqj9aBN7QmzDNa4CC4UtBZfugTtgVnLiB4S9pHq-QXrQ_CoB4tTE4O1jSjIDeDdAp5E3RQN-TAjcq7DIACDBHgKx8OCo_2aqTAgr8OXnopepAuWqZojFZv1AkMsgDTNiTlDmo8-af5PGcleDmgS4q7o82pX-bHJk7IiceErcP3NWEbSFZfjitA1v1oNdDqK3XLaVBsqcF8JOWoX-yoQZ4U075ktbvp8E8oElZILdTYYLDvfCNN1ifF_QeMwenJURA_PXHvraxHj09PASA1beIR4QSwi9KrwMJOAdewga6ThYkJeV6Mw22Qz8-h50cUJPxCTYbZZAKCWZLS5gj4Pdwzn-J3VAXPA5f6I-CDpbU2ylnCyiYptzoOt6fw3nv6uxMw2pnTvUvY4pJtsy7kDcxaRdd59pXBTADPxCc1689p8syQqrmoZgnbk3D0RPc9kblv8Jl6PVIa0iUM97CjpGphVhNDFL_FA8zu2DHzJsLCzafDcJQeunFXoylD4dGR1Zjc74eax41wIj7P8hzi7zw6D2KO3Vjq_oV29mnab2veov2G5n9O-x95D9T_Le-PPVVLhzjE2lzjVH-BAhI9kUQFurVmgN77QyyZbE_N4rPEF5cp9TxkxlKq7Xeb1TKnhNse7R6r80BvRQPfjPMPsfLca2_f7l8lTa_eo2_c0XszRreP3Hbog2RrdCu74LS4403z8D0I0WXv8QuqK4uc41hz_dNB2lRFsyk2POWj742t_CC5-2nS0arqOoZO-n6kW2EGmoRAps-MTvMHCqqoe-nciOEwSrYui7SvcMnEct2wui039XLF62LVLNZlW64WhUC-SRWnF8pVSUkFkGl8gWgiVKRyl_47AlmxnM3njBXzoigX66wWS1y0a7HcoBBstSAukCqlOp9Maqtosh47R4tKOn85tpT4lJ1GjIAJoZdeYXUuSge0VPvpalw_7b_5U5FGsFVE-guVnXpy>52853</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            clang-13 performs inlining after mcount instrumentation
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          tmiasko
      </td>
    </tr>
</table>

<pre>
    In clang-13 inlining might follow the mcount instrumentation used by -pg.
The mcount relies on frame pointers to recover a call graph, so inlining after
inserting calls to mcount produces misleading end results.  In the example
below, g which is called only once is recorded as being called 1025 times:

```c
int f(int x) {
  return (x & (x << 1u)) == 0;
}

```

```c
#include <stdio.h>
int f(int);
int __attribute__ ((noinline)) g() {
  int c = 0;
  for (int i = 0; i < (1 << 10); ++i)
    c += f(i);
  return c;
}

int main() {
  printf("%d\n", g());
}

```

```console
$ clang-13 -g -pg -flto -O2 -c a.c
$ clang-13 -g -pg -flto -O2 -c b.c
$ clang-13 -g -pg -flto -O2 a.o b.o
$ ./a.out > /dev/null && gprof -b | grep -A2 calls
 time   seconds   seconds    calls  Ts/call  Ts/call  name    
  0.00      0.00     0.00     1025     0.00     0.00  g
```

```console
$ clang-12 -g -pg -flto -O2 -c a.c
$ clang-12 -g -pg -flto -O2 -c b.c
$ clang-12 -g -pg -flto -O2 a.o b.o
$ ./a.out > /dev/null && gprof -b | grep -A2 calls
 time   seconds   seconds    calls  Ts/call  Ts/call  name    
   0.00      0.00     0.00        1     0.00     0.00  g
```

This seems to be result of changes from https://reviews.llvm.org/D97608,
which moved PostInlineEntryExitInstrumentationPass out of TargetPassConfig::addIRPasses.

cc @aeubanks 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNVUuP4ygQ_jXOpRTLgTwPPvQkHalPO1r1vYVx2WYHQwS4H_9-C-wkHU1m1KO9rIUwFEXVVx9UUdn6o3wyILUw7XzBQRmtjDIt9KrtAjRWa_sGoUPopR1MIAUf3NCjCSIoa2DwWEP1AfNTm2fFISsenq_KDrVCD6TWONEjnKwyAZ2HYGlN2ld0IEAKraF14tRlbA_eXkGIhrRHq-QXXYjCqJ4sTE5OztaDJDe98hpFHXXQ1OTADzr4HIACjBHgu-hPGkd7FVJg0V8Lb52SHSifLFM01ugP6iRGWYTpapIKDxWe_dN8UbAVBNWjz_jDaHPq18XY5Bk58Zixbfy_Z2wH2ebbuAJkPQzOAK2-U7eeBnxPDRYDKSd9fqAGRcanfdnmcNfh71BkjCsj9VBjtO9DrWzeZfzxJ4zR6dlRFL-8iBCcqoaALy8RIDVj0xHhBLBN0pvA4k4Jt7CBrpODiQl1WUzDfZQvLqEXIwoSfqOm4mwyAdEsSWlzAvwZ7oVP-SuqoudeKPMz4JOjtSbJWcZWdbbamzTcn8P77OnPTsAab8_3LmPLa7bN25g3MG80Xef5XwzmEkQuv6hZfU1T5JZU7VU1z9iRhEMguh-JzGONr9SbgdKQLmG8hy0lVQPzihii-B2eYP7AxsybCIs3nw7DU3qY2t-MpgyFZ09WU3J_HhqRNsKZ-CIvCkjfZXQZpBy7s9T-F9rZl2m_r3mP9jua_3Paf8t7pP5PeX_uqFp6xD7V5gqn-gsUkOyIJCrQjbM9dCGcUslkR2oOXxW--Vzr1z63jlLteNht1gUl3H60O1bnnt6KGr5bH55S5Xk0wX08viua3rxH34Wn92ZIbp-FazFEyd6aRrXRKX8Qdf30dxSizz_jl1RXloXAoRLmh4dZXfJ6x3diFlTQWF7y64SOyhhFeftK_eJ9nA1Ol7chtyp0A10i29Mkxj395nT4_6CkAnxU3g8Yz27Ftis-68rlrlhWG7HGxWbNcSP5km03fLtccc6bmm9mWtCD5stsRfWSGXyDZCIWsNVhpkpWsMWCMb7gfLXc5pVc47LZyvUOpWSbJQWOVBb15RhmrkyQqqH1tKiVD9czmhF5qjWIyR3ZF0PorCtDr4T_YWfJdZmg_wthtGPV">