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

    <tr>
        <th>Summary</th>
        <td>
            Some special loop cases will infinite for SI backend 
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    **The following is opencl code**

unsigned int Lock;
void test(int * a, int * b, int c) {
    while(1) {
          if (atomicExch(&Lock, 1) == 0) {

              if (*b == c) 
                  *a = *b;

              atomicExch(&Lock, 0);
              break;
          }
     }
}

Thanks!
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx1UtuOnDAM_ZrwYnUEgXB5yEO305Fa9W33B3IxkE4giISd9u8bYGem251aVmJjn-ODYun0b07o5-gvPULrrHUXM3ZgPLgJR2VBOY17B0mPJH07l9GbbkQNZgzww6kzyZ_2yqszGgL6QGi9FiMQBKFf4JrIa6IIbYBUbziIdumNjcPq7ENlN9NGhloENxj19ZfqY0JouY2PnDsqP0aH9B3Dvzx3rihIXjG7ngetq8VGsTaugbz97KPu_8lbJd2A7yFyRnF-UCPV8a9Pt-webOdLL8azJzRLkGdlWbOUsTpPNM91kzciCSZY5M9uQPATKiMsWOcmUMKjh4uxNj5Ha0YT1g2Y4fkbSKHOOGpIltnyPoTJkzyuwCl6Z0K_yINyQ0ysfb1en6bZ_UQVn_1kvF8wCjqxummapOdCMyaKqtK0bJs2r2ShM1oyVqStyIWuEiskWs8JeyKUjniBjSLGhB0Tw2lKaZZlLG2KkuYHnVasEEzWFMsCUZMixUEYe1h1HNzcJTPfJMml87FojQ_-XhR-213cxkV-sYTezfy78G4c0HvRYbLN55v-PysL3RE">