<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/85069>85069</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[DebugInfo][GVNSink] Wrong branch execution caused by instruction sinking
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Apochens
</td>
</tr>
</table>
<pre>
Please check this @SLTozer @dwblaikie
```C
void func(int a, int *b) {
if (a) {
*b = 1;
} else {
*b = 1;
}
}
int main() {
int *b;
func(0, b);
return 0;
}
```
```Bash
$ clang -S -emit-llvm -Xclang -disable-O0-optnone main.c -o main.ll
$ opt -S -passes=mem2reg,gvn-sink main.ll -o main-opt.ll
$ clang main-opt.ll -o main
```
```Bash
$ mylldb a.out
(lldb) target create "a.out"
Current executable set to '/data1/llvm-test/GVNSink/a.out' (x86_64).
(lldb) b func
Breakpoint 1: where = a.out`func + 8 at gvnsink.c:2:9, address = 0x0000000000001138
(lldb) r
Process 2786226 launched: '/data1/llvm-test/GVNSink/a.out' (x86_64)
Process 2786226 stopped
* thread #1, name = 'a.out', stop reason = breakpoint 1.1
frame #0: 0x0000555555555138 a.out`func(a=0, b=0x00007fffffffdac8) at gvnsink.c:2:9
1 void func(int a, int *b) {
-> 2 if (a) {
3 *b = 1;
4 } else {
5 *b = 1;
6 }
7 }
(lldb) s
Process 2786226 stopped
* thread #1, name = 'a.out', stop reason = step in
frame #0: 0x000055555555514f a.out`func(a=0, b=0x00007fffffffdac8) at gvnsink.c:3:12
1 void func(int a, int *b) {
2 if (a) {
-> 3 *b = 1;
4 } else {
5 *b = 1;
6 }
7 }
(lldb) v
(int) a = 0
(int *) b = 0x00007fffffffdac8
(lldb)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVluv4zQQ_jXuy6hVMm5uD31oTyhCQrDSIuANOck0MSe1I9s5F349spP0tHvKwi5CwqoiZ8bzea5fI6yVrSLaseTAknIlRtdps9sPuu5I2VWlm9fdh56EJag7qh_BddIC20Yfv_9J_0HGb5vnqhfyURKwqGTRfn6m0fR7mN6ftGzgNKqaYS6VA8HwAfyG4b5iWADLDtNJAAB5Aoa5eCf3yxsA4yXEjF-pWFYC9Za-xGB29bIJT-_UWUjFML-9_-LtNcocUuTD8XHcKA250SiILsK3q5b0fPJ6ELabRbiFuheqhfVHWNNZunXfP51h_essbaQVVU_rH6O1HpzSioLbmxrWetr1_RuUHlwAGoS1ZBkvz3RGQy3Dh_ZJra1Uj4vRYu9hbzCmi69Uy8kvien82vdNBWKjR7d0DOZe5rPthGnJQW1IOAKGGM4xxOnkw2gMKQf0QvXofPhgyYHTwDBjeGyEEzHDo8_U2pF1DI_f_vzDR6keGR5nrMz31kue_pZuGRabdz5UoaizbwdD4nHQvvYx43t47shQ6KYJLY2mw3iAHISD9kn5XG5qxvfI-L7wjSGaxpC1wSx6ia5WHPP8nQNmknwwuvZWmOUpYgq9GFXdUePd-Opw70Nbp4eBmsWTPbjOkGiAIY99AEqcp6AZZgusl3s7MCSsVkFdXWVrE8-DcDLBGnnkPZ_iT5YV8_wmk2HseTnPEy-n49lpWo2ow1DeTfQydrEfvX_ON2vGvwFcyOIvmIfD1bpPKNuL-h4TJX8PkF4BXITZLVW9NYkNiv-0mtbRAMt0B7L7bCW3p39fSc74PsavLSXA5wsZSv3_K-XTRSKVC0mZmOJa7C-ayOmNRG5y-QnoXUpeNTveFLwQK9rFWRxxjkWSrbpdEp1oWyM1HDlmDa-KvEkLfkqTSiQJJSu5wwi3EY95jFjE2YanTUG8ijNqougkCraN6Cxkv_FctNGmXUlrR9rlSZQWq15U1NvwmYGo6BmC0tN6Uq7MLvBXNbaWbaNeWmffUJx0ffg-Kaka2-_USbOkZMlhobmkhF-MVi1URqi6m_8ZpFZQi9FSA9UrSGWdGesg9Z0mVbsaTb_rnBss43uGR4bHVrpurDa1Ps-MuhDrYPTvVHtuDV5bhscQ1Z8BAAD__xSJeOc">