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

    <tr>
        <th>Summary</th>
        <td>
            [Clang] Incorrect optimization with unreachable in bitshift of vectors
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

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

<pre>
    Clang x86 20.1.2 incorrectly assumes that (ret_vector0[n] > 1) on line 59 might be true, thus clearing the whole function while GCC 14.2 generates same code without unreachable().
https://godbolt.org/z/sK4GWYbGW
```
#include <stdbool.h>
#include <stddef.h>
#include <inttypes.h>
#include <string.h>

typedef uint8_t expozig_vector_u8_64 __attribute__ ((vector_size (64)));

uint64_t expozig_tokenizer_v2_ret_bitstring(unsigned char * restrict ptr, const uint8_t is_what){
        uint64_t ret_val = 0;
        expozig_vector_u8_64 input_vector0 = {};
        expozig_vector_u8_64 ret_vector0 = {};
        memcpy(&input_vector0, ptr, 64);
        switch(is_what){
        case 0:
                ret_vector0 = ((input_vector0 == '_') | ((input_vector0 >= 'a') & (input_vector0 <= 'z')) | ((input_vector0 >= 'A') & (input_vector0 <= 'Z')) | ((input_vector0 >= '0') & (input_vector0 <= '9'))) >> 7;
                break;
        case 1:
                ret_vector0 = ((input_vector0 == 33) | (input_vector0 == 34) | ((input_vector0 >= 37) & (input_vector0 <= 47)) | ((input_vector0 >= 58) & (input_vector0 <= 64)) | ((input_vector0 >= 91) & (input_vector0 <= 94)) | ((input_vector0 >= 123) & (input_vector0 <= 126))) >> 7;
                break;
        case 2:
                ret_vector0 = (input_vector0 == '\n') >> 7;
                break;
        default:
                __builtin_unreachable();
                break;
        }
/*
        case 1:
                        case '"':
                        case '\'':
                        case '@':
                        case '=':
                        case '!':
                        case '|':
                        case '(':
                        case ')':
                        case '[':
                        case ']':
                        case ';':
                        case ',':
                        case '?':
                        case ':':
                        case '%':
                        case '*':
                        case '+':
                        case '<':
                        case '>':
                        case '^':
                        case '\\':
                        case '{':
                        case '}':
                        case '~':
                        case '.':
                        case '-':
                        case '/':
                        case '&':
*/
        for(size_t n = 0; n < 64; ++n){
        // Clang "error"
 if(ret_vector0[n] > 1)
            __builtin_unreachable();
                ret_val |= (uint64_t)((uint64_t)ret_vector0[n] << n);
        }
return ret_val;
}
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycV02P4jgT_jXmUhqUlPN54ADpZvTqva402r1ETlIQ7wQH2U73NIf97SsngWW2wTCLUH_kqXqqnip_VIQxcq-IVizesPhlIQbb9nq10SSa3_rDouqbj1XRCbWHH1kCGCzDJYJUda811bb7AGHMcCADthUWGGaabPlGte11wOKNYvELMP4KIcMcegWdVARxDge5by1UBFYPxLAA2w4G6o6ElmoPtiV4b_uOYDeo2spewXsrO4KvRQFhtETYkyItLBkw4kBQ9w3Bu7RtP1gYlCZRt6LqiGHGMF-yYN1aezSMrxluGW73fVP1nV32es9we2K4Nf-Pvn77vfr6jQVrlgTzN1gz5FLV3dAQMF4Y21R93y1bxl9vgQ3tbmNSWftxJHPP08m-YMHa2Ta0g0Eqm5UW6MexP8n9XNpyyMokgrIU1mpZDZbKEkap2Wxg5InckyRimM9fvpm4HWcSXZHa_jspeSJdvmHpGlhJO2XEMBvUuEQaqFuhgeEaNDmwtnC02rWu7pWxl0ylKd9bYV3AdAqYXwKOi0N0wPgLBOd88pvapDoOl5U0Oji69MXvdbX6bvkc6FAfP8ZCJT8FcDJmNVPFzh7mXdq6ZZjdkFULQ07GevqXBfmn8GNLPkmZoLRkmLptwdLijuXrbCnOlpjADbNiNjtNZs9xrp_j_ONXOIPnOPML52js3F8hvdScBXmlSXy_PBgLHf7HQnN-lftti-gJdfyhsOjJOsXZI6bzpn3ElIePmPInmULkj6hCTH65Z_igZ_d2BosLdV5KDyM1tBNDZ69DlWU1yM5KVX66Cu7zuIMimK6H9b11d344Jofu5x0wLkaTu3gUeED-4gEx9IBp4fPMfGDuU7Pxgb5suc8TfdnyrQ9c-2hjH-j19GXLvdm--irkBYt5sdxrqS-n1FP7v-5Dy_vQF195fC1xx8MZxHEbjVa7XjPM3DhSWlCXm3_8c7xs-QbGum_U5W6F-TONajDNnwyRtHZs6Ezkzj9sXtG4z5MnwmVASee7KjvPLuMGyX5-cDN84XSpn3jHg0WTHbQ6j0AzOB0552lz0ax4k_NcLGgVplGY52EaBot2VSeEWZwnFYkQMQqjKs2THaedSKMwCcOFXGGAccDDCJHHYbCMkhoxoqThTdLETcaigA5Cdsuuezu4qXchjRloFfIwCviiExV1ZnwLQKxdvV2Z45eFXjmHL9WwNywKOmms-YfCStuNrw5jh5z8_53fDKA_WnmQJzHN7tK211M5SAVuxmzlzkK_g6mIZjHobvWvOV3adqiWdX9guHWB519fjrr_k2rLcDsKMQy3s5a3Ff4dAAD__4y_fho">