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

    <tr>
        <th>Summary</th>
        <td>
            #pragma clang vectorize(disable) isn't respected
        </td>
    </tr>

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

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

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

<pre>
    Both the loops are vectorized by clang trunk

```c
void foo(const int N, const float *a, float *b){ 
   #pragma clang vectorize(disable)
   for (int i = 0; i < N; ++i) {
       b[i] += a[i];
   }
}

void bar(const int N, const float *a, float *b){ 
   #pragma clang vectorize(enable)
   for (int i = 0; i < N; ++i) {
       b[i] += a[i];
   }
}
```

clang -Ofast -fno-exceptions -g0 -Rpass=loop-vectorize -Rpass-missed=loop-vectorize -Rpass-analysis=loop-vectorize -S -o -

```
foo:                                    # @foo
        test    edi, edi
        jle     .LBB0_16
        mov     r9d, edi
        cmp     edi, 8
        jb      .LBB0_2
        lea     rax, [rsi + 4*r9]
        cmp     rax, rdx
        jbe     .LBB0_6
        lea     rax, [rdx + 4*r9]
        cmp     rax, rsi
        jbe     .LBB0_6
.LBB0_2:
        xor     ecx, ecx
.LBB0_12:
        mov     rax, rcx
        not     rax
        add     rax, r9
        mov     rdi, r9
        and     rdi, 3
        je      .LBB0_14
.LBB0_13:                               # =>This Inner Loop Header: Depth=1
        movss   xmm0, dword ptr [rdx + 4*rcx]   # xmm0 = mem[0],zero,zero,zero
        addss   xmm0, dword ptr [rsi + 4*rcx]
        movss   dword ptr [rdx + 4*rcx], xmm0
        inc     rcx
        dec     rdi
        jne     .LBB0_13
.LBB0_14:
        cmp     rax, 3
        jb      .LBB0_16
.LBB0_15:                               # =>This Inner Loop Header: Depth=1
        movss   xmm0, dword ptr [rdx + 4*rcx]   # xmm0 = mem[0],zero,zero,zero
        addss   xmm0, dword ptr [rsi + 4*rcx]
        movss   xmm1, dword ptr [rdx + 4*rcx + 4] # xmm1 = mem[0],zero,zero,zero
        movss   dword ptr [rdx + 4*rcx], xmm0
        addss   xmm1, dword ptr [rsi + 4*rcx + 4]
        movss   dword ptr [rdx + 4*rcx + 4], xmm1
        movss   xmm0, dword ptr [rdx + 4*rcx + 8] # xmm0 = mem[0],zero,zero,zero
        addss   xmm0, dword ptr [rsi + 4*rcx + 8]
        movss   dword ptr [rdx + 4*rcx + 8], xmm0
        movss   xmm0, dword ptr [rdx + 4*rcx + 12] # xmm0 = mem[0],zero,zero,zero
        addss   xmm0, dword ptr [rsi + 4*rcx + 12]
        movss   dword ptr [rdx + 4*rcx + 12], xmm0
        add     rcx, 4
        cmp     r9, rcx
        jne     .LBB0_15
        jmp     .LBB0_16
.LBB0_6:
        mov     ecx, r9d
        and     ecx, -8
        lea     rax, [rcx - 8]
        mov     r8, rax
        shr     r8, 3
        inc     r8
        test    rax, rax
        je      .LBB0_17
        mov     rax, r8
        and     rax, -2
        xor     edi, edi
.LBB0_8:                                # =>This Inner Loop Header: Depth=1
        movups  xmm0, xmmword ptr [rsi + 4*rdi]
        movups  xmm1, xmmword ptr [rsi + 4*rdi + 16]
        movups  xmm2, xmmword ptr [rdx + 4*rdi]
        addps   xmm2, xmm0
        movups  xmm0, xmmword ptr [rdx + 4*rdi + 16]
        addps   xmm0, xmm1
        movups  xmm1, xmmword ptr [rdx + 4*rdi + 32]
        movups  xmm3, xmmword ptr [rdx + 4*rdi + 48]
        movups  xmmword ptr [rdx + 4*rdi], xmm2
        movups  xmmword ptr [rdx + 4*rdi + 16], xmm0
        movups  xmm0, xmmword ptr [rsi + 4*rdi + 32]
        addps   xmm0, xmm1
        movups  xmm1, xmmword ptr [rsi + 4*rdi + 48]
        addps   xmm1, xmm3
        movups  xmmword ptr [rdx + 4*rdi + 32], xmm0
        movups  xmmword ptr [rdx + 4*rdi + 48], xmm1
        add     rdi, 16
        add     rax, -2
        jne     .LBB0_8
        test    r8b, 1
        je      .LBB0_11
.LBB0_10:
        movups  xmm0, xmmword ptr [rsi + 4*rdi]
        movups  xmm1, xmmword ptr [rsi + 4*rdi + 16]
        movups  xmm2, xmmword ptr [rdx + 4*rdi]
        addps   xmm2, xmm0
        movups  xmm0, xmmword ptr [rdx + 4*rdi + 16]
        addps   xmm0, xmm1
        movups  xmmword ptr [rdx + 4*rdi], xmm2
        movups  xmmword ptr [rdx + 4*rdi + 16], xmm0
.LBB0_11:
        cmp     rcx, r9
        jne     .LBB0_12
.LBB0_16:
        ret
.LBB0_17:
        xor     edi, edi
        test    r8b, 1
        jne     .LBB0_10
        jmp     .LBB0_11
bar:                                    # @bar
        test    edi, edi
        jle     .LBB1_16
        mov     r9d, edi
        cmp     edi, 8
        jb      .LBB1_2
        lea     rax, [rsi + 4*r9]
        cmp     rax, rdx
        jbe     .LBB1_6
        lea     rax, [rdx + 4*r9]
        cmp     rax, rsi
        jbe     .LBB1_6
.LBB1_2:
        xor     ecx, ecx
.LBB1_12:
        mov     rax, rcx
        not     rax
        add     rax, r9
        mov     rdi, r9
        and     rdi, 3
        je      .LBB1_14
.LBB1_13:                               # =>This Inner Loop Header: Depth=1
        movss   xmm0, dword ptr [rdx + 4*rcx]   # xmm0 = mem[0],zero,zero,zero
        addss   xmm0, dword ptr [rsi + 4*rcx]
        movss   dword ptr [rdx + 4*rcx], xmm0
        inc     rcx
        dec     rdi
        jne     .LBB1_13
.LBB1_14:
        cmp     rax, 3
        jb      .LBB1_16
.LBB1_15:                               # =>This Inner Loop Header: Depth=1
        movss   xmm0, dword ptr [rdx + 4*rcx]   # xmm0 = mem[0],zero,zero,zero
        addss   xmm0, dword ptr [rsi + 4*rcx]
        movss   xmm1, dword ptr [rdx + 4*rcx + 4] # xmm1 = mem[0],zero,zero,zero
        movss   dword ptr [rdx + 4*rcx], xmm0
        addss   xmm1, dword ptr [rsi + 4*rcx + 4]
        movss   dword ptr [rdx + 4*rcx + 4], xmm1
        movss   xmm0, dword ptr [rdx + 4*rcx + 8] # xmm0 = mem[0],zero,zero,zero
        addss   xmm0, dword ptr [rsi + 4*rcx + 8]
        movss   dword ptr [rdx + 4*rcx + 8], xmm0
        movss   xmm0, dword ptr [rdx + 4*rcx + 12] # xmm0 = mem[0],zero,zero,zero
        addss   xmm0, dword ptr [rsi + 4*rcx + 12]
        movss   dword ptr [rdx + 4*rcx + 12], xmm0
        add     rcx, 4
        cmp     r9, rcx
        jne     .LBB1_15
        jmp     .LBB1_16
.LBB1_6:
        mov     ecx, r9d
        and     ecx, -8
        lea     rax, [rcx - 8]
        mov     r8, rax
        shr     r8, 3
        inc     r8
        test    rax, rax
        je      .LBB1_17
        mov     rax, r8
        and     rax, -2
        xor     edi, edi
.LBB1_8:                                # =>This Inner Loop Header: Depth=1
        movups  xmm0, xmmword ptr [rsi + 4*rdi]
        movups  xmm1, xmmword ptr [rsi + 4*rdi + 16]
        movups  xmm2, xmmword ptr [rdx + 4*rdi]
        addps   xmm2, xmm0
        movups  xmm0, xmmword ptr [rdx + 4*rdi + 16]
        addps   xmm0, xmm1
        movups  xmm1, xmmword ptr [rdx + 4*rdi + 32]
        movups  xmm3, xmmword ptr [rdx + 4*rdi + 48]
        movups  xmmword ptr [rdx + 4*rdi], xmm2
        movups  xmmword ptr [rdx + 4*rdi + 16], xmm0
        movups  xmm0, xmmword ptr [rsi + 4*rdi + 32]
        addps   xmm0, xmm1
        movups  xmm1, xmmword ptr [rsi + 4*rdi + 48]
        addps   xmm1, xmm3
        movups  xmmword ptr [rdx + 4*rdi + 32], xmm0
        movups  xmmword ptr [rdx + 4*rdi + 48], xmm1
        add     rdi, 16
        add     rax, -2
        jne     .LBB1_8
        test    r8b, 1
        je      .LBB1_11
.LBB1_10:
        movups  xmm0, xmmword ptr [rsi + 4*rdi]
        movups  xmm1, xmmword ptr [rsi + 4*rdi + 16]
        movups  xmm2, xmmword ptr [rdx + 4*rdi]
        addps   xmm2, xmm0
        movups  xmm0, xmmword ptr [rdx + 4*rdi + 16]
        addps   xmm0, xmm1
        movups  xmmword ptr [rdx + 4*rdi], xmm2
        movups  xmmword ptr [rdx + 4*rdi + 16], xmm0
.LBB1_11:
        cmp     rcx, r9
        jne     .LBB1_12
.LBB1_16:
        ret
.LBB1_17:
        xor     edi, edi
        test    r8b, 1
        jne     .LBB1_10
        jmp     .LBB1_11
```

Link:
https://godbolt.org/z/6948cvhjn

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWl9v6jYU_zThxUoVOwGSBx5Ku2mTqk3a9j45sQH3hgTZobe9n37HSUhj40AB0bu7gQDH2Of_8bH9E2nJ3mbzslqhasVRXpYbhajk6IVnVSnFN85Q-oaynBZLVMlt8cULHr3gvv2eBM07a_ovpWBoUZYeibOyUBUSRYV-88gDarqLvKQV8sg91b91vdQjiTedo4YJQvBbuJF0uaat4E4ZYMyEomnONclu-qKUQBJrYQJ54SMKvHBePz6AdHj0yBzeAmgQyOno9Cv1xjAwfqznAClt-0D2rs70sbW3e3g3N6Xymuby4l9g7S7MfeMbVf3fFxQs9RdF6fPXjG8qAaYjfxkg_48NVQqk6KTyO5va3_21UIqzwWFa0PxNCRf9n8gvke_Mw6arMzDcmXzwBZ5HXhRogr6bUMXBKHhxJnTodGOMP-e8bu-e5vPgbzwxR9flS93KhDmps_UG9bjHFu8U9XgTczDntGFNXzUphE8qoaOJIsgsmehYOmW1BJK92tL6lkyOSmOvp0hTtt9c0naGhvfm5FdI9NpNWc1MN735eJ-g83srPbNsLcqqGzcGKGMGYTLAt4mXPUwL1h8OLZN5P5w4MmwIj-dpnaIhrNCf_loJhX4tCi7REywJ9AunjEvN4RHW3Qom4T29ldKOXK8DrRn7WkqGNpXciyR4CopCI0zPruvKmq9hXqCDTB6-cVlaje3CA7L6OVrLcit6REHNt-ZvEIsia9xvh5vxrIuLGZLCWL2hEZJoL62spLbjayxXbOQ0Ht_iaymKjynaPtd7VK0sPl3Zi_KpZ6lDWdPSTtnT5b-TNlpcENv6Oe657Mrx7eSdaXU86PuTrYZd4HPNrgWeaXdDO5R0dSubvS4aqECJc1-z6tnYGm2JXQVqMriHtpuuPsI4N7t23LcOL44TAxjvu7OlmRnXcuwtWa1kbzgcKPmW9N2xbbeP20ytvXh6-PgQuy1vh33rZNadVqwjYyMr_sCB9LKdYAsXty6NoR1MZCZcsdiR4-PkTS5PDnEhLi79FeFQApbApl2KZLA6HLTSFDCkZk9OMFh7D7rDISd0loUdl_CDXCLnMtlxOeLMRgQ5h7znqrMc78gPh0Mud7xDjsNlPTk7LuHZXgmHa_YJXKJ4cKPvKn9TN-y7pHU1sauOWfqHymGc1qwPFkNsHFwD18ZwKzHXKDGfv6y7iA_edDLnPdg6ZxCD2_5RQvLKmDEdvuEPwCxHEthUx4qkdexpaTVadxI0pAnOhobwFaEh_KnQEP5UaAj3oSF8IjSEf0hoCBvQEL5BQ5ai3wEawgY0hC-DhrBx88I3aGhf0Rs0dIOGbtDQ9aAhfBAasgvU_xgawp8IDeEbNPSD3ttu0NDp6XWDhr4PNITPh4awAQ3hGzT0n4eG8IXQEDagIXwUGsLXhYbwQWjoPb2d_3J6EsWXTrdVVW2U7pGf4b0sWVrm1V0pl9D7Bp9JEsXZy-q5aKaP-AxPxkk4iaMkHLFZyJIwoaNKVDmffewvbkiowiPTChymNjCDs9FW5jNLEVGttuldVq6hk-cvu8bfyPIZiKArlNpyBQ_jSTyejlazxZQFAZmGAcYhgS-SZIxPgySIkmBBx2SU05TnagaZ4xFS8K-oZgHPkDIjMSMBIUEMhOMIGNzFJAsZiaOQA9l0gb0o4Gsq8juth_bQSM5qldLtUsFgLlSl3gepUmJZcF6LA_50W61KOVsJSZmo3uioFj6rlf8HYhePkQ">