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

    <tr>
        <th>Summary</th>
        <td>
            [clang] Crash during codegen related to no_unique_address attribute
        </td>
    </tr>

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

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

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

<pre>
    MRE : 

```cpp
struct Empty {};

struct Data {
    [[no_unique_address]] Empty b;
};

struct Foo {
    Data d; // doesn't crash if this is marked NUA
};

auto test() {
    return Foo{};
    // return Foo(); // doesn't crash with parens
}

int main()
{
}
```
https://godbolt.org/z/fvPjvGr3s

Stacktrace : 
```
#2 0x0000563cfa7577c8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007f6368dcc420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x0000563cfa1f2408 llvm::Instruction::eraseFromParent() (/opt/compiler-explorer/clang-trunk/bin/clang+++0x2df2408)
 #5 0x0000563cfae43bb0 (anonymous namespace)::AggExprEmitter::VisitCXXParenListOrInitListExpr(clang::Expr*, llvm::ArrayRef<clang::Expr*>, clang::FieldDecl*, clang::Expr*) CGExprAgg.cpp:0:0
 #6 0x0000563cfae3f95e clang::StmtVisitorBase<std::add_pointer, (anonymous namespace)::AggExprEmitter, void>::Visit(clang::Stmt*) CGExprAgg.cpp:0:0
 #7 0x0000563cfae414ea (anonymous namespace)::AggExprEmitter::Visit(clang::Expr*) CGExprAgg.cpp:0:0
 #8 0x0000563cfae45bc2 (anonymous namespace)::AggExprEmitter::VisitCastExpr(clang::CastExpr*) CGExprAgg.cpp:0:0
 #9 0x0000563cfae3f17b clang::StmtVisitorBase<std::add_pointer, (anonymous namespace)::AggExprEmitter, void>::Visit(clang::Stmt*) CGExprAgg.cpp:0:0
#10 0x0000563cfae41fdd clang::CodeGen::CodeGenFunction::EmitAggExpr(clang::Expr const*, clang::CodeGen::AggValueSlot) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3a41fdd)
#11 0x0000563cfaac402a clang::CodeGen::CodeGenFunction::EmitReturnStmt(clang::ReturnStmt const&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x36c402a)
#12 0x0000563cfaacab11 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*, llvm::ArrayRef<clang::Attr const*>) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x36cab11)
#13 0x0000563cfaacfacc clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x36cfacc)
#14 0x0000563cfab27398 clang::CodeGen::CodeGenFunction::EmitFunctionBody(clang::Stmt const*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3727398)
#15 0x0000563cfab30a3c clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3730a3c)
#16 0x0000563cfab7eb0e clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x377eb0e)
#17 0x0000563cfab7b595 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x377b595)
#18 0x0000563cfab7bacb clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x377bacb)
#19 0x0000563cfab81d47 clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) (.part.5975) CodeGenModule.cpp:0:0
#20 0x0000563cfb8051ee (anonymous namespace)::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef) ModuleBuilder.cpp:0:0
#21 0x0000563cfb7f7ca2 clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x43f7ca2)
#22 0x0000563cfc9efe64 clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x55efe64)
#23 0x0000563cfb80314d clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-trunk/bin/clang+++0x440314d)
#24 0x0000563cfb19d3d1 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3d9d3d1)
#25 0x0000563cfb12f0fa clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3d2f0fa)
#26 0x0000563cfb2717b3 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3e717b3)
#27 0x0000563cf8318d64 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0xf18d64)
#28 0x0000563cf8310cbe ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#29 0x0000563cfaf9fa99 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#30 0x0000563cfa757c45 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3357c45)
#31 0x0000563cfafa2208 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3ba2208)
#32 0x0000563cfaf6dacb clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3b6dacb)
#33 0x0000563cfaf6e5c3 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3b6e5c3)
#34 0x0000563cfaf7542f clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3b7542f)
#35 0x0000563cf8316670 clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0xf16670)
#36 0x0000563cf8230761 main (/opt/compiler-explorer/clang-trunk/bin/clang+++0xe30761)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWVtv3LoR_jX0C2FDInXbBz_sxesmyGmDOE3P24I3rXkikSpFOev--oKU1ivKa8cO1IMWBZzYoqiZ7_tmxBlSpG3lXglxDdIVSDcXpLP32lzvje4Ub3-IqiIdl_qCav54_duXGwjwEoJoA6Ll8H8W9T-safqR1pqOWXhTN_YRgnwF8g3Aq_Ezw4wNscRP8IMQQuhBrJTedUr-sxM7wrkRbQvSDUg3g0V6MvaS4a3WoV3viQO8ggBtAdpCrkWrAMotZIa091CW0N7LFsoW1sR8Fxz-9e_Ll7yQzmpoRWsBKgBahK6MsJ1RDsKEuufXex_N8RZeAfZD2nvYECNUe4IzwiKVhTWRajA0TFlN5x6D1F_eW9u0AC97n3vNqa7slTZ7gLb_AmhbPnz-4-HW4Hbs6c4S9t0awsQ4B0LDAGEEo0MURVGaYVaSPM1zVsC14_JFMP0gzOOd3CtS_YUoXgkDUCGVdSoGc9ZaWXGwVy6p8DLy_3oVAcJ4cJGXGc4KzliCIrjbGdFabcTOWOjV2FaSArQ9FNkuSy4rqbrD5V51_Y3G3htB-FWrryKAVtEhThIUPUno3CQBk7hESVTAqnqonXJ4-UH12Sa16geEIa3YGl1_duF6Sg4PRTcWoC3TdSMrYS7Foam0cey3rCJqf2lNp74DtKUukv0YQKv-Jzog7p0H6NIAnUgwpZFzRpRWj7XuWqhILdqGMOEzzCFc7vc3h8bc1NJaYfqxb7KVdv377x70J9nav5kPSlr3l5sLUNGj8ZP7kSVA65EQS2PI4xdRArw-MxXfuNmjG1spKr4RrBoMnTO_gOtbd7Hc78-nQBayx-UiFWNLd7a2npk2K9IKgNet5f0twvmu0VI5BdD6nZKhNXzQkjtWJ_VCjZzrt5HIJyGME0F-OYQvBOqnIIoJiJQy9Ot5RM5lzWn0LYAW09DGOf2fCi1AOI6moS05H5NYay5uhQoutp0arSYO1oDweWgh06q1z1-gwOxyv_9Gqk7cVdrOtRJh4qmcSg3CcRxwJSyJEHk_1y--JvYKj-mexo-ks9nIZB5rQAZNyBAax-8n85zGmMCb1s-ltaMwu1V0NtKOU0AaT0iXhLH3k17runFdo6P6D2nvdWfvmG7EZDEYzRpFdA2p1tWfns6Z5xqIEZZ9inK8KN4vxnFkpfnjq5kwE5Hc4wyIhB0CxRHB74zqrVDCECvczZDEbaUpqfoqPs7lp-dfX5rWt8eJH1Sp53-xc082UCPsGGguaCR-psZvmneVOAW1Z32EvhGlVLJn-xZt-nGfw7NG3lMJuOYTrjRdpL_G9b-Go6MQcCymHAmjv8bxZWbzoSeMBujDJocWMU_y96L_qptP4kEMWMccnrprT-CqIcZepYs89Y3L2NjZ5gUFzQstojQW4mfN1GDWLRfafKibqh_ud3mvI701umtc_UML2MNadbLiwpxHF7QbNC9zRtBYuhVh34Xia63arj52p-_FMUfcE-yxjeOOgvaCLUQpsmQM_jMxrVjefZ2UDFGTSZXsf88DNE09jgAonuQAjpNzDexyXPYOgnVWDEPz7X6TxHsP4AVFmsYLjnnQpm2NVlYofgbfjMgw944DZGmIDJVROemGe18fVGuJYuK8di9TmbFKcg8uQB9USYryOKc43KF7nCcSD5qR55ifkZyxFggPKkAd1LsCxwV3bxWLd8PJ2Ple-55MGuw1DMeOO8L5wJceWoC9mGCPGBXwKPM6_urf8xGDu5pU1TfBnpbZM0SysCg7G8OBWtBqcSMfXlplwwJVLkqyWHg1RnbLoRHaGS-ov3s80Bw20YxUFSXs-65U4fam9z1kyzpe67omik9f1LOBe9ru68Z5J06DkT7WSLX3M2-GqD49sNuxwyGO-wtKWsl2rZ8-qBhMdgM7a4i07fH2xBypKpf92ozuuynL0wLtM6fX3D8CUF6RmnICUH6SChWVdnmygB81PRsPHE2PVVmSjkJx7vB02D936o6UonoM5Hw9dHO9qtjDHKc7Dg8LSoJQFOyu_u_yYh6lqRcyUDo8ySgzPmmQA6W9X_KsVh7lDxb3yYNuQrCRf9vUZdDQzCuG5xqIgSdiiJTh94rxUdP2ZSU-avpJtuGRxmur9lO2NES6RPFfQd4u3pBS_zkJnUKBhOG5SJmnCSpfgrsZ_R20DGd6hZek_xMlnGm5o16TQLR0Ut2zLI96gMfe5AjaLzPLZ4eDL9XueboRByfAG_R_BcJRnsX---IsDoW3d3J4_Hh4wa8xX-AFuRDXcVYsFlmSRNnF_XUiiiSLcsrjmBCRp4THWZIglCYFikW-uJDXKHIoURwXGKPsCqcsXyS0RBmLBYoxSCJRE1ldOUmvtNlfyLbtxHWWRHF2UREqqtZ_-0ZIiR_Q3wQIgXRzYa7dM5e027cgiSrZ2vZkxUpb-Y_mPcd003-_hLxzdQMyzcVeKGhERazg0Gr47Ks2JNYaSTsrLjpTXU8-ykp739ErpmuAtj4d-l-XjdF_COai4LG2AG09l38HAAD__5CLlqM">