<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/77553>77553</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
LLVM ERROR while InstCombine
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ParkHanbum
</td>
</tr>
</table>
<pre>
```
$ bllvm0/bin/clang --version
clang version 18.0.0git (git@github.com:ParkHanbum/llvm-project.git a9f39ff2b628e38826d5b95c1e8ae3cb7c692de9)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/m/bllvm0/bin
```
my clang version.
IR that caused the error
```
define i32 @no_trans_select_xor_eq0_xor_and(i32 %x, i32 %y) {
; CHECK-LABEL: @no_trans_select_xor_eq0_xor_and(
; CHECK-NEXT: [[XOR:%.*]] = xor i32 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT: [[XOR0:%.*]] = icmp eq i32 [[XOR]], 0
; CHECK-NEXT: [[AND:%.*]] = and i32 [[X]], [[Y]]
; CHECK-NEXT: [[COND:%.*]] = select i1 [[XOR0]], i32 [[XOR]], i32 [[AND]]
; CHECK-NEXT: ret i32 [[COND]]
;
%xor = xor i32 %x, %y
%xor0 = icmp eq i32 %xor, 0
%and = and i32 %x, %y
%cond = select i1 %xor0, i32 %xor, i32 %and
ret i32 %cond
}
```
and Debug message :
```
$ bllvm0/bin/opt -passes=instcombine temp.ll -debug
INSTCOMBINE ITERATION #1 on no_trans_select_xor_eq0_xor_and
ADD: ret i32 %cond
ADD: %cond = select i1 %xor0, i32 %xor, i32 %and
ADD: %and = and i32 %x, %y
ADD: %xor0 = icmp eq i32 %xor, 0
ADD: %xor = xor i32 %x, %y
IC: Visiting: %xor = xor i32 %x, %y
IC: Visiting: %xor0 = icmp eq i32 %xor, 0
IC: Visiting: %and = and i32 %x, %y
IC: Visiting: %cond = select i1 %xor0, i32 %xor, i32 %and
IC: Mod = %cond = select i1 %xor0, i32 %xor, i32 %and
New = %cond = select i1 %xor0, i32 0, i32 %and
ADD: %cond = select i1 %xor0, i32 0, i32 %and
IC: Visiting: %cond = select i1 %xor0, i32 0, i32 %and
IC: Visiting: ret i32 %cond
INSTCOMBINE ITERATION #2 on no_trans_select_xor_eq0_xor_and
ADD: ret i32 %cond
ADD: %cond = select i1 %xor0, i32 0, i32 %and
ADD: %and = and i32 %x, %y
ADD: %xor0 = icmp eq i32 %xor, 0
ADD: %xor = xor i32 %x, %y
IC: Visiting: %xor = xor i32 %x, %y
IC: Visiting: %xor0 = icmp eq i32 %xor, 0
IC: Old = %xor0 = icmp eq i32 %xor, 0
New = <badref> = icmp eq i32 %x, %y
ADD: %xor0 = icmp eq i32 %x, %y
IC: ERASE %1 = icmp eq i32 %xor, 0
ADD DEFERRED: %xor = xor i32 %x, %y
IC: ERASE %xor = xor i32 %x, %y
IC: Visiting: %xor0 = icmp eq i32 %x, %y
IC: Visiting: %and = and i32 %x, %y
IC: Visiting: %cond = select i1 %xor0, i32 0, i32 %and
IC: Visiting: ret i32 %cond
```
If time isn't tight, I'd like to take on this issue.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8V1FvozgQ_jXOyyiRY0MgDzwkgWij6yanbLXae6oMGPAVcBabbfbfnwxoS1pypZveSVUD9sz3zXyeMTZTSqQl5x6y18j2J6zWmay8P1n1-ImVYV1MQhn_9NACd3_YR3iFiAVhnv8oMCLbUJSIbKOclSlMpz94pYQsW7t2sBuCuTvDM5wKDYi4qdDIMi9ZHc4iWSC6eiZFZGvQp6dK_s0jPTM-bJnQZZKQcEFcTl2XLGI7XNrRnLuM0yh0osWSxHyJyLIlv2dVyjWiKzi7i4eFNa3Lx1I-ldNclPV5mpZ1Z5dVnMVQyJjnxvoklTi3U7tSaZbnPPZFZaYQ2Way4IhsTYgXCrS6XMpU_IQLBWadVYt9BJ0xDRGrFY9BZxx4VclqECnmiSg5CEoAWbiUD7pipXpQPOeRfjjL6oF_x80vK2NE3MaQ2GdENtA9_0RkCchZd_h0DZtPweaP6d1qHdw1yY0Bfum9D77dN86mfNbfDkdEV4jYM0RWyPaR7QOiPpxl1YbRWr20MVG2U3-9mrrCB_BMiQc5RVScgH_v8x6Oz3z4TeTV3h8EZmV8kcyrFMYFvjlcwW-1BzHvZ_iL5Eo6z8Mm7LciqLjueTSRXLq0D9DUkKwu17Arq6akLszwa92b8Z7cjakR8ELIYcRIdnY9QVqeXlV38N2bqdEO4FeKLVCXmeMPtlf738Tj87BOoeBKsZSDWZ9B-9f7nzxpmJ6YUlwh6otS6UgWoWlazYvTLM9hGhvsrvn3X-43h8_r3T6A3X1wXN3vDntAhM5BlvBWGzYQK9-Uz3Ce3dzNMnY4o9aszzmuGF54vFFlu40x_iqU0KJMb3IcHeEVzrfFuOJ4y1q0kJ9lC_ABHQKw50_vAcP_UiK3QPy2WKPRhjeD_sf4Wj-S9_bjFbIPkKkPMbod_7dmvLGHRzfjIe81wNiPzkWp003I4ooniAaDvr-xrQ1lGRxXX4LWbz5KfvCDbXA8Bu9fhx7Vx6_BKO__cEe8scmHPvS7BLQoOAhVIuJo0CLNtKHZIeLEkItHDlqCZo_ctL_OhAKhVM0vDvCT2KPxki7ZhHtzB1vuAlPLnWSeg5PQJsxJYhw5CyvB7iKJqE05jR0rXLgT4RFMLDyfY2zNl9idETt2SMQSGmKbxhZFFuYFE_nMnDFmskonDb3nOLZNJzkLea6aGxshJX9qY0OEmAtc5TU3p7BOFbJwLpRWzyha6Jx7d3dfP0NwPB6O8JSJnIO55mza08qkrnIv0_qkmrPpFpFt747WXste3M4Q2TYBKES2TYD_BAAA__-i6tso">