<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/61908>61908</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
A throw exception pragram was coredump after bolt optimize.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
lingchengfenzi
</td>
</tr>
</table>
<pre>
There is a demo code that was throw execption and would catch it. It would to coredump after I use llvm-bolt to optimize it. The source code is:
```
#include <stdio.h>
class ExceptionA {
};
void foo() {
int count = 0;
while(true){
try {
printf("ttttt\n");
if(count++ < 2){
throw ExceptionA();
}
return;
}
catch(ExceptionA&){
printf("cccc\n");
continue;
}
}
}
int main() {
foo();
return 0;
}
```
I use the command to compile it and bolt optimized:
```
clang++ main.cc -pthread -fPIC -std=libc++ -Wl,-q -lc++abi -std=gnu++14 -o main
llvm-bolt main -o main.bolt
./main.bolt
# after run it, it was output like:
ttttt
Segmentation fault (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx0VM2OozgQfhrnUgLRBtLJgUMnmUh9W2lH2rMxBXjX2Kxdnp6Zp1_ZkIT0zqDIgfJX_1-V8F4NBrFh9YnVl50INFrXaGUGOaIZejQ_1a613Y_m64gOQXkQ0OFkQdoOgUZB8CE80OjsB-B3lDMpa0CYDj5s0B1IQXIERTm80yqiqO2wC9MMoid08A7BI2j9bcpaqyki7ExqUj8xqX4dEbwNTuLiV3lWvrHiworbuS_W3_LJS2WkDh0CK8-eOmXzkZVftipSC-_hy3eJKeQ3YK-n9f71wsrTFvvNqg56axk_MH58IAGUIZA2GAJWXqC46wF8jEoj4wdyARk_bnTI_diaAJidMtQn45ziw-qzYZxHtXKDUxGTvDF-YvwUkwP-bDw-SzceqS1hP5mKOd4_HFJwZnO_uU39Y_ywtbZ_crmNXkopfxO8tIaUCfgrN794SWes7iSU-X_d783YmFvS2DThYe0TPdK5kI7GyKlpioxNxJxmpSPrEocTG29U7B6ke7YntTDD2pIYbi4lZDONDkUHkPV_vJ8h89Sx8qJVK1dk9pdm_Jz9C5DpVSZaBTfkYMIifKkgs0sZkrfHmETZ7S6PkgWQM379JLqPxTpwLhhQxPg5JhoH2AaaA4FW_-A9y4WK6fVPHCY0JNJw9yJogkRFhxDHGLvYiefS7Lqm7I7lUeywedkfirqoivK4G5uubMta1Lxq-RHrrpC9kLWsXqujFDVW_U41vOBlhBf7qJOLw-u-5UVVF3350mLNqgInoXQeS5FbN-yU9wGb_cuxOOy0aFH720pzzVKvMHhWFVp58g81UqSxebuvr5XiMDsxODGlynxaVU-MyHfB6WYkmtNC4lfGr4OiMbS5tBPj1-hp_ctmZ_9GSYxfU7Se8WsK-L8AAAD__48cnOI">