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

    <tr>
        <th>Summary</th>
        <td>
            Missing exception handling codegen for copy constructor of vector even with -fexceptions
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            question,
            libc++
      </td>
    </tr>

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

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

<pre>
    There is no exception handling for if/when `operator new` fails? gcc generates exception handling code. I'm curious if this is the intended behavior?

Repro: https://godbolt.org/z/hc5PEffK8

```cpp
#include<vector>
#include <ranges>

std::vector<int> td() {
  int arr[]{-5, 10, 15, -5, 10, 15, -5, 10, 15, -5, 10, 15, -5, 10, 15, -5, 10, 15, -5, 10, 15,-5, 10, 15 -5, 10, 15, -5, 10, 15, -5, 10, 15, -5, 10, 15, -5, 10, 15, -5, 10, 15, -5, 10,-5, 10, 15, -5, 10, 15, -5, 10, 15, -5, 10, 15, -5, 10, 15, -5, 10,-5, 10, 15, -5, 10, 15, -5, 10, 15, -5, 10, 15, -5, 10, 15, -5, 10,-5, 10, 15, -5, 10, 15, -5, 10, 15, -5, 10, 15, -5, 10, 15, -5, 10,-5, 10, 15, -5, 10, 15, -5, 10, 15, -5, 10, 15, -5, 10, 15, -5, 10,};
  auto b = std::ranges::begin(arr);
  auto e = std::ranges::end(arr);
 std::vector<int> dd(b, e);
  return dd;
}
```

$ clang++ -O3 -std=c++23 -stdlib=libc++ -g0 -fexceptions

```
td(): # @td()
        push    r14
        push    rbx
 push    rax
        mov     rbx, rdi
        xorps   xmm0, xmm0
 movups  xmmword ptr [rdi], xmm0
        mov     qword ptr [rdi + 16], 0
        mov     edi, 444
        call    operator new(unsigned long)@PLT
        mov     qword ptr [rbx], rax
        lea     r14, [rax + 444]
        mov     qword ptr [rbx + 16], r14
        lea rsi, [rip + .L__const.td().arr]
        mov     edx, 444
        mov rdi, rax
        call    memcpy@PLT
        mov     qword ptr [rbx + 8], r14
        mov     rax, rbx
        add     rsp, 8
        pop rbx
        pop     r14
        ret
.L__const.td().arr:
 .long   4294967291                      # 0xfffffffb
        .long   10 # 0xa
        .long   15 # 0xf
        .long   4294967291                      # 0xfffffffb
        .long   10                              # 0xa
 .long   15                              # 0xf
        .long   4294967291 # 0xfffffffb
        .long   10 # 0xa
        .long   15                              # 0xf
 .long   4294967291                      # 0xfffffffb
        .long   10 # 0xa
        .long   15 # 0xf
        .long   4294967291                      # 0xfffffffb
        .long   10                              # 0xa
 .long   15                              # 0xf
        .long   4294967291 # 0xfffffffb
        .long   10 # 0xa
        .long   15                              # 0xf
 .long   4294967291                      # 0xfffffffb
        .long   10 # 0xa
        .long   15 # 0xf
        .long   4294967291                      # 0xfffffffb
        .long   10                              # 0xa
 .long   10                              # 0xa
        .long   10 # 0xa
        .long   15 # 0xf
        .long   4294967291                      # 0xfffffffb
 .long   10                              # 0xa
        .long   15 # 0xf
        .long   4294967291 # 0xfffffffb
        .long   10                              # 0xa
 .long   15                              # 0xf
        .long 4294967291                      # 0xfffffffb
        .long   10 # 0xa
        .long   15                              # 0xf
        .long   4294967291                      # 0xfffffffb
 .long   10                              # 0xa
        .long   15 # 0xf
        .long   4294967291 # 0xfffffffb
        .long   10                              # 0xa
 .long   15                              # 0xf
        .long 4294967291                      # 0xfffffffb
        .long   10 # 0xa
        .long   4294967291                      # 0xfffffffb
        .long   10                              # 0xa
 .long   15                              # 0xf
        .long   4294967291 # 0xfffffffb
        .long   10 # 0xa
        .long   15                              # 0xf
 .long   4294967291                      # 0xfffffffb
        .long   10 # 0xa
        .long   15 # 0xf
        .long   4294967291                      # 0xfffffffb
        .long   10                              # 0xa
 .long   15                              # 0xf
        .long   4294967291 # 0xfffffffb
        .long   10 # 0xa
        .long   15                              # 0xf
 .long   4294967291                      # 0xfffffffb
        .long   10 # 0xa
        .long   4294967291 # 0xfffffffb
        .long   10                              # 0xa
        .long   15                              # 0xf
        .long 4294967291                      # 0xfffffffb
        .long   10 # 0xa
        .long   15 # 0xf
        .long   4294967291                      # 0xfffffffb
 .long   10                              # 0xa
        .long   15 # 0xf
        .long   4294967291 # 0xfffffffb
        .long   10                              # 0xa
 .long   15                              # 0xf
        .long 4294967291                      # 0xfffffffb
        .long   10 # 0xa
        .long   15                              # 0xf
        .long   4294967291                      # 0xfffffffb
 .long   10                              # 0xa
        .long   4294967291 # 0xfffffffb
        .long   10 # 0xa
        .long   15                              # 0xf
 .long   4294967291                      # 0xfffffffb
        .long   10 # 0xa
        .long   15 # 0xf
        .long   4294967291                      # 0xfffffffb
        .long   10                              # 0xa
 .long   15                              # 0xf
        .long   4294967291 # 0xfffffffb
        .long   10 # 0xa
        .long   15                              # 0xf
 .long   4294967291                      # 0xfffffffb
        .long   10 # 0xa
        .long   15 # 0xf
        .long   4294967291                      # 0xfffffffb
        .long   10                              # 0xa
 .long   4294967291                      # 0xfffffffb
        .long   10 # 0xa
        .long   15 # 0xf
        .long   4294967291                      # 0xfffffffb
        .long   10                              # 0xa
 .long   15                              # 0xf
        .long   4294967291 # 0xfffffffb
        .long   10 # 0xa
        .long   15                              # 0xf
 .long   4294967291                      # 0xfffffffb
        .long   10 # 0xa
        .long   15 # 0xf
        .long   4294967291                      # 0xfffffffb
        .long   10                              # 0xa
 .long   15                              # 0xf
        .long   4294967291 # 0xfffffffb
        .long   10 # 0xa
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWV1vozgX_jXOzVEiY0MSLrhokon06p3VjlZzPzLYgFdgM7ZJ0_31K0PIlDTZbWe6VWcXVGF6Pnye82VXPcxaWSghEhRtULSbsdaV2iSlNIxL98BmqeYPyedSGAHSgtIgjplonNQKSqZ4JVUBuTYgc0T296VQgJZYN8Iwpw0ocY-WGHImK4voHoosg0IozxX22laZ5mIB_0NkVUPWGqlbCzIHV0rr7btSgFROKC44pKJkB6kNonuEdwjf9e_fRGM0ondQOtdYRO8Q2SOyLzRPdeUW2hSI7P9AZF9m0acPef7_9WNttMT9T9Y0JwqhUmVVywWi24PInLf44ZIHiG4NU4Ww35jd2zruMdC7QXUrlUP0AziOyBqRGNBq04uC9w2YMX0y0GozjxDZQoC7d_f9hpQx4S0tP6ZMRt6fEbTaIXouWtY6DSkguoNzsQ-t4L9TUUiFyNoXNokvFcVtRaH4FbWbDcW9dOpBirEdI1xrlOcPNO_AuN1HZwAJIauYKhDZILKB-a8U5p3ZXdaTSE-oZIrorpJpNkgWGOb5-VyzV0-W_teh_f1JhQgFFOIz6YS7f5rWln41QXiDkR5PjDOFHceitT7AIEq2YLgc84_aNNavdd1lvFt7iVofWs871vW9NhwaZwBFG79FtLuQvbD29UIBfIiC5UnvhpLg0nPD8MLbjFWVX0d3C1m3qrvAOFTa5ytGIf708fNz8KTHE5An0aoEgyHiZNsJs2MH3qOKds_bfeztk-x5I8bKwYBsOvnFxy9fMq2sWwzFsOjugxs2BT9eDZbnmz6QT7wbAlmLOmseXhKvDuH6lkPnGmN9jaUXdhnnPd82nr--KGbdPFXxxKulb4TrCTfiRU89BwtfFgAQkjiMlysSB3D18R2Ij3n_pGNjwx4BPomxG_xo2OY6_5Uw_OUzBvgI2TO0_h72K0XpBVim_E35-xfk70Va78Ht10H-fGTvsnfeqGi_F96U2ved2um-mO6LKX8_FLvn9tfrp-KHojBS_mlLeboopr8BXrf_ftKDZroopvz9M_n7b3s_Ve-Uv-_N33maMuMJ5TGN2UwkwSrAYRRjup6VSRjRWOCYkzzkKceMBZTmeRBwEgYpIeFMJgSTENMgJJRiulrkcb7CIQnFMgyIWGIUYlEzWS2q6lAvtClm0tpWJOuI0nBWsVRUthucE_K1FdZJrRAhiGwRId-GQp4U7WYm8bvM07awKMSVtM5-29dJV4nkF2mtVMWtuXghVDdqz3TzAN0_vU2bOW1A59DPwkAchIJ76crRFGrWmiq5mIZLV7bpItM1InsP47TMG6N_F5lDZN_5ahHZd-7-GQAA__9BYmqU">