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

    <tr>
        <th>Summary</th>
        <td>
            [BOLT] BinaryEmitter.cpp calls emitLabel twice on the same symbol
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            BOLT
      </td>
    </tr>

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

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

<pre>
    `MCObjectStreamer::emitLabel` is not expected to be called more than once on the same symbol.
However, bolt/lib/Core/BinaryEmitter.cpp:emitFunctionBody may do so for two/three runtime tests

* runtime/X86/exceptions-pic.test
* runtime/X86/pie-exceptions-failed-split.test

Reproduce:

`git revert -n 90a23d3a5a843086124c4b9315ee6a7617965623` then run `ninja check-bolt`.

```
first: BF = (llvm::bolt::BinaryFunction *) 0x5594035c9aa8; FF= (llvm::bolt::FunctionFragment *) 0x7f0d4801c340
 BinaryContext.cpp:2405 (in calculateEmittedSize)
  BinaryEmitter.cpp:1217 (in emitFunctionBody)
  BinaryEmitter.cpp:450 (in emitFunctionBody)
 MCELFStreamer.cpp:103 (in emitLabel)

second: BF = (llvm::bolt::BinaryFunction *) 0x5594035c9aa8; FF= (llvm::bolt::FunctionFragment *) 0x7f0d4801c340
  BinaryEmitter.cpp:266 (in emitFunctions)
  BinaryEmitter.cpp:386 (in emitFunction)
 BinaryEmitter.cpp:450 (in emitFunctionBody)
  MCELFStreamer.cpp:103 (in emitLabel)
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMlE9v4zYQxT8NdRnYoIb6e9DBdlboYYMFdnvolaImFnclUSBHSdxPX0iykXTrNmhPBQzahvSbGT4-Ph2CPY9ElUiPIn2I9Myd89WjDj--6kvUuPZSiUw-nr4038nwN_akB_JCHYQ60GD5s26oF5kEG2B0DPQ6kWFqgR00BEb3PbUwOE_AnR7BjYbAjcAdQdADQbgMjev3Qj4IefjFvdAzeYEnaFzPAuveNgLrk_MksD7aUfvLp8Eyk9-baboOUc-jYevGo2svMOgLtA6CgyfngV-cwJo7TwR-HtkOBEyBw9bwuuLh9lBg_VuRCazp1dC0FA27yZr9wvz9y5Ol3TvgSdue2l2YesvvyXX9SpN37WxoEfH9EJk8Wwa_CMCwG6GUGlWrdKqLRMkiizExSVOqOCXKdJ7FeZmlGapFfe5oXKYCkcnRjt81mI7Mj92qYib3PzW6fta_T9YHFuoAxxqEegCBRd8_D9sRr_z6a9P-pjQIPAgsQb6maZlIlZpS60KoI9T1PxS54bXX54FGfiuTP8k2KWRsVHKdC7aOJzcyvfL1tDGR6VLcjou1zNxrps0P7Tf7OwksrzDc80qMcX6lf7bNB2SSyg_Bx9Onz_Xthtw6SvWO2y7LDdjWQMaN7f9R_7tCYJbdESJ8IJ8q7lFv0H-V_N9r_mfvR22l2lKVOqIqzuMCkyJL4qirlMEyjnOZYUp506gib4wxadu2sUmbtohshRITmcVKqjjHeK8bWZZpWRQmVgqVFImkQdt-v5zD3vlzZEOYqSpTlaRRv0wV1tRFPH75_KtAXPLXV8vru2Y-B5HI3gYObwXYcr8m9QqkD3-Vbc3b8LZv4Bd7N2-j2fdVxzyFxRhYC6zPlru52Rs3LLG7mGf72k3eLdkvsF53EATW2yaeK_wjAAD__1FM6pw">