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

    <tr>
        <th>Summary</th>
        <td>
            Comparison of object against addrspacecasted null pointer are not optimized out 
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:AMDGPU
      </td>
    </tr>

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

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

<pre>
    I recently saw a test case where a conditional branch was left behind that should be trivially optimized out. A constant addrspacecast from a generic null pointer is compared to a valid object:

```
@lds = linkonce_odr hidden addrspace(3) global [128 x i32] undef, align 16

define void @foo() {
bb0:
  br i1 icmp eq ([128 x i32] addrspace(3)* addrspacecast ([128 x i32]* null to [128 x i32] addrspace(3)*), [128 x i32] addrspace(3)* @lds), label %bb1, label %bb2

bb1:
  store volatile i32 0, i32 addrspace(1)* null
  ret void

bb2:
  ret void
}
```

opt -O3 leaves behind this branch, which should trivially fold to false
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyNk0tv2zAMxz-NfSEa2HL9yMGHtEGHHYbtsvOgB21rVSRPkpN1n360kyyP7lBAkC2J5J-kfhJOvbWfwaNEG80bBH4ADhFDBMkDwmFAj7QjnVU6ame5AeG5lQMceACDXQSBg7YK4sAjhMFNRtEWRK_3mhuK6caod_oPKnBTXMFmDhYitxG4Uj6MXCJpRei825FUjxa9lmAnY2B02kb0oAN57UbuKUp0ZLXnRlNA8RNlTIpNkm2T7DxX2Wkcl4-ZUQGSYgtG21dnJf5wysOglUJ7ySFhTZGwNfTGCaoyKZ9y1sBv0AVLyi1MVmGXsGcg4d5CXl1L0pG2CHtHOZFe5xxFm4Ml9dPRQojsX5pALQSdg5a7EfAXzLZ3avdZJWxz1633TrPN0jRq0AfiLfPzRyzh2MKTg-ECqT2sFCK_W7PrnszHl4pDdH5ukOFRG5zFIJu9559ryfwkORdy9vUYl9beRmdX0e8s6u3_SVhmwhEevhbELt9juNBLiB3JntM6DJoQP9F8QblzZuGv4yZgim1eVVVdZSWrU9UWal2seRp1NNg-L7Tq4Cy47sQp8J5rQv_2JonoG9SJcbAu3j4bSCdv2iHGMcxlsxcavY7DJFb0LmhhzP78eRi9W54Fe9EhTEgX91I2VV6nQytY8VipdS2rIitRVmvVqKJsuJJCyKYR6XKboSUqEsYEl69oFSluvmw_fftOW4RIqluWMZZnjCrPWFateFWXhXgs1lmOGeFPvOCOa7Oa01k536e-XTITUx9mmHSI4XLIQ6AnhXhWlXxwzp7E-BQH51vuA9pduhTULtX8BdzOdBs">