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

    <tr>
        <th>Summary</th>
        <td>
            Clang 15+ crashes on brace initialization of nested no_unique_address with copy assignment
        </td>
    </tr>

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

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

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

<pre>
    ```cpp
struct x {
  auto operator=(const x &);
};

struct y {
  [[no_unique_address]] x foo;
};

struct z {
  y bar;
};

auto f() { z tmp{}; }
```

See https://godbolt.org/z/TxhjsxhE3 for a demo on Compiler Explorer

```
Stack dump:
0.      Program arguments: /opt/compiler-explorer/clang-15.0.0/bin/clang++ -gdwarf-4 -g -o /app/output.s -mllvm --x86-asm-syntax=intel -S --gcc-toolchain=/opt/compiler-explorer/gcc-12.2.0 -fcolor-diagnostics -fno-crash-diagnostics -std=c++2b -O3 <source>
1.      <eof> parser at end of file
2.      <source>:13:6: LLVM IR generation of declaration 'f'
3.      <source>:13:6: Generating code for declaration 'f'
 #0 0x0000556f9c0c0f84 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x0000556f9c0bedac llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x38c8dac)
 #2 0x0000556f9bffcbe8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007f97c09f4420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x0000556f9b822ee1 llvm::Instruction::eraseFromParent() (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x302cee1)
 #5 0x0000556f9c852cbc (anonymous namespace)::AggExprEmitter::VisitInitListExpr(clang::InitListExpr*) CGExprAgg.cpp:0:0
 #6 0x0000556f9c8541b4 (anonymous namespace)::AggExprEmitter::Visit(clang::Expr*) CGExprAgg.cpp:0:0
 #7 0x0000556f9c855dd9 clang::CodeGen::CodeGenFunction::EmitAggExpr(clang::Expr const*, clang::CodeGen::AggValueSlot) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x405fdd9)
 #8 0x0000556f9c7fdc9c clang::CodeGen::CodeGenFunction::EmitExprAsInit(clang::Expr const*, clang::ValueDecl const*, clang::CodeGen::LValue, bool) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x4007c9c)
 #9 0x0000556f9c807319 clang::CodeGen::CodeGenFunction::EmitAutoVarInit(clang::CodeGen::CodeGenFunction::AutoVarEmission const&) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x4011319)
#10 0x0000556f9c8089dc clang::CodeGen::CodeGenFunction::EmitVarDecl(clang::VarDecl const&) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x40129dc)
#11 0x0000556f9c808b25 clang::CodeGen::CodeGenFunction::EmitDecl(clang::Decl const&) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x4012b25)
#12 0x0000556f9c4f4577 clang::CodeGen::CodeGenFunction::EmitDeclStmt(clang::DeclStmt const&) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x3cfe577)
#13 0x0000556f9c50759a clang::CodeGen::CodeGenFunction::EmitSimpleStmt(clang::Stmt const*, llvm::ArrayRef<clang::Attr const*>) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x3d1159a)
#14 0x0000556f9c500e36 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*, llvm::ArrayRef<clang::Attr const*>) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x3d0ae36)
#15 0x0000556f9c506eea clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x3d10eea)
#16 0x0000556f9c56449d clang::CodeGen::CodeGenFunction::EmitFunctionBody(clang::Stmt const*) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x3d6e49d)
#17 0x0000556f9c570d3d clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x3d7ad3d)
#18 0x0000556f9c5c64d7 clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x3dd04d7)
#19 0x0000556f9c5c2c05 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x3dccc05)
#20 0x0000556f9c5c31ab clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x3dcd1ab)
#21 0x0000556f9c5cac0a clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) (.part.0) CodeGenModule.cpp:0:0
#22 0x0000556f9d2e01b1 (anonymous namespace)::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef) ModuleBuilder.cpp:0:0
#23 0x0000556f9d2d319d clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x4add19d)
#24 0x0000556f9e4aa0a4 clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x5cb40a4)
#25 0x0000556f9d2ddcc5 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x4ae7cc5)
#26 0x0000556f9cbe61d1 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x43f01d1)
#27 0x0000556f9cb6ded3 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x4377ed3)
#28 0x0000556f9ccc4adb clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x44ceadb)
#29 0x0000556f99a1bb64 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x1225b64)
#30 0x0000556f99a1510b ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#31 0x0000556f9c9d7969 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#32 0x0000556f9bffcce7 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x3806ce7)
#33 0x0000556f9c9d7f5c clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#34 0x0000556f9c9a1fce clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x41abfce)
#35 0x0000556f9c9a29ed clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x41ac9ed)
#36 0x0000556f9c9ad83c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x41b783c)
#37 0x0000556f99a198e9 clang_main(int, char**) (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x12238e9)
#38 0x00007f97c04a2083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#39 0x0000556f99a14d1e _start (/opt/compiler-explorer/clang-15.0.0/bin/clang+++0x121ed1e)
clang-15: error: clang frontend command failed with exit code 139 (use -v to see invocation)
Compiler returned: 139
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWl9v2zgS_zTKC2GDIvX3IQ-OE_e66GKLpug9GhQ5crSVSB1JZZ1--gMlORYVJ01y7mKBA1rE4p_h7zcznBmRYsZUOwlwGcRXQXx9wTp7p_Rly6yu-HetCtDWXBRKPFwGCR7-8bYN8HWAV8bqjlu0R0F6NbQgxDqrkGpBM6t0QK8DknElTT-KJAHJAzqODdLr4--pvIepvB7XlVTbTlb_6WDLhNBgTBBfB_E12qNSqZ9L_DGV-IAKpl-Y0zMoA5IFJHfz0A9km9YJ6Ici92cYflDIdPYtALqztjUBXQVkE5DNTolC1Xap9C4gmx8B2Xzd3_1p9nc3FJVKI4YENAopidaqaasaNLrZt7XSoKeCZ6vdWsa_I9E1rVuob8LLAOeftdpp1iCmd10D0jocKCAb1dqAbPi4wgIOK5ANr5ncLcJ4iZc4IJuikofGgFwF5AotduIvpstFhBY7tFBOGmtbJ7OzbWeXBi2aur5v0GKxz5IFM83CPEjL9gG9rqSFGi1u0WKx43xhlar5Hatk7xkvgHKDQ7IkS4wWJVe10gtRsZ1UxlbcoEUp1YJrZu78ZmNFQK_5AJwUaPEHRQFdG9VpDgG9GRQVOkUFdA2qDOgNapk2oBGzCKRAqkRlVcMwkowjjwLoKqQBXSVOrZ8-ffsdffyCdiCdv1dKutkCeM3Gx4CkZUDSQRh9UdiHUYjcIa4E9K7xrCgUEIoR3mOMcRwnZc4xx2UWoc-6krb3ja-acbitdpLV_2JS1E6t2b2qREBWzrOHLrN0u5mucP__UXboyy5AMI6cjZ2z0ZV5MMOPdQ1Mdu0fcpAWkKyTfUARqFbOgXLUb6T_wf0CcoX3NOOZYNyFj0eMZIqxKEteQIbWzie-AFf3oB_m7CtpHSJvzFpJC3t7Wg10XCIt85TjvIwigtF2q8FYpWGr7ciuroqAbPZZsk2iRV3Jbr_YyW7oaO2dBiaWRjl-V3gfOikek8hjkhECEE60_VEOYaxScmgAzQxstGo-Mw2OU3Y-RWPCAUIPXuw5QxYTXnC3GpNKPjSqM0iyBkzLOPTx3UFc7XY3-1bfNJW1oIe2b5Wp7EdZ2U-Vsa7X5YZ-_ZHmtKf30fUH97Da7U6bJ5kBi8IiejcwH8zrQaQzELEQOZpIWisBH0B6D5tOTszpsIywnoJAffbsoayfFbva7b6xuoPbWtmzuUKE41KI3HOFzCObloLn_O1ke30aZ-_X8-35XQOvX6WQT_1wN6JQqj6jSnDKcz8M5b79cUrD99i_s-ob00918vPp49SbpjLGJYpRP8kZWYchDY-O4PIDnrHOcvEOR_jGtDOpz3hs_CU8SC64xyOc8yhI_HYeT0n8OgYFiT0GXhrkURnFafo-Bre2sU9ZuNbzM6G8hDhNPSbUYxLjNM7Z25ncVk1bw1MuUx597Dgm2JXW7OELlAFdTyasrJ1EI3pzPu4iDOOcedyjGXcMNHkH9380a8yAJh7reMY6AXiHxd1rk-qkcFz_Xdk71dlbrlqYB9LjqIk_HzLE35xcqQgxgO8DfjkTJ1GUi7dr49BypcTDi75wNiYJRLnwmPg1UZxiQd_IZHwbAtfps_hQq4LVQ8SduvPj_Jcrg_WHw8CPslS_ILCJlAnqq8OvmmKeROKnIfp3JboajmYdaB-wX0NZyWqg-xrlDO1jUXRO2wscCT-K5zOyhOOfZtTTZP8xJDnn2Eu6BM9I0pAV7yP5PLXzwRchKzz44Qw-4_incXcO_6tqP8E91Kdrn6MBli3T1uHLkSfp6duUQ-ZVM4IADovwZ690o9jhyPFj09ZD8_De_zLMD1p1rcuBJEcDrKuuqgXo0-ioj07Q0I_QV4x_BynWSpquObxdvhXHeSpFJkToR2Xi1RgQMYZZNEX_mWkDq9uvs6wBDZtlyrO-U8W8iDCLPKTxTM-C81MxZDVNfXvgnYWx6YwnIhGDlHN_-_uZuoAkFOEU30YraUGKEwDPCo2WOBShB81PvUUiQFA0K4PcYh-lsUxyOK2957mc822GpikI6sH3UyXnERNeYB2BHlncK86egn7C8oz5IIo4MOEHVC_p5SwsiiRCnIfbhjkZ2emq-47NSu018tvIGk1ObM-CPiQkLhJvu_knyTkL4xAX6KDpdfi13-4TDrcNq-tvwB_D7QkqvZsIXd0_E0tnR8y5SPMk79lOMno5ljtb3Sus7x020HB6HtAVZ3VdMP59W0r_RWZYe3SHdbhWTcOkmO_Fk4Y5Nv7RuuVZ7TXeWl3JXT_0ZjRbf-_g-rZbvt-H4fBQMFPxremHj0ryBruGrdWssubQPRPH6tr5t9KTfjdkdQzDvWsMqu-nBCStWVMIFpD0qCuSHc7jf1PFaYM8OU_nkE5scerUfOj50slbVkL94OnzZdud72IAJxy8CpTSuWeVsXc29f_nGbM67FkX8E8hchaWHJ7VXG8y9iTBHdTpxePZRDfAewd_3dCVV4dMuJ0hqIesKIea8lEb8UwbJAfxVm38pgrzvCp-U8WnyvjHES-F2Ufrt6xyhu8vtF6vvdFFfqEOeQ5ezTm7osmZyOize_F68tvL8ycS_HO6_xt1eK5yIizSjHqn0v6dUs7CPIPxTuFQUBxQ94FjdeYCgWbgnfY_XvsM96ARIzijaLutq8IFMaZtD-sVl6F8adQy6dchEc682o_Oi6hIhIAG-eeiFoIIj5v8MCmgKwRau1i6GtSMyrHqRXx0gJJVNQj0V2XvEOwrO1zSh7TXemcALe6RVcgAoGpSlI4rPX7ZocF2WoJzQTd59mnHhbikIqc5u4DLMElJltCUpBd3l5TTkmVAE0pTLAjNeJwUcUmzkjBBS7ioLgkmFIc4IpgQnCwp4SwtE0IpK4s4J0GEoWFVvXR7Y6n07qIypoPLOM9oeFGzAmrTfwREiIS_UN8ZEBLE1xf60s1ZFN3OBBGuK2PNUYqtbA2X615pYRyQK9R_lgEGKYkKzbjTR2UrVlc_Hj-RkGAsCPTkq55BvVy1D2j4MKkBaS86XV_OPqmp7F1XLLlqnFu5zT78WbRa_QncOUlPwARk0xP8bwAAAP__gI0D0w">