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

    <tr>
        <th>Summary</th>
        <td>
            Clang segfaults when using certain type traits on a class with malformed destructor
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          8080i
      </td>
    </tr>
</table>

<pre>
    ### bug.cpp
```c++
#include <type_traits>

class Foo {
    ~Foo() = {}
};

// All of these crash clang
std::is_trivially_constructible<Foo>::value;
std::is_trivially_default_constructible<Foo>::value;
std::is_trivially_copy_constructible<Foo>::value;
std::is_trivially_move_constructible<Foo>::value;
``` 

### Output
```shell
clang++ bug.cpp
bug.cpp:4:5: error: initializer on function does not look like a pure-specifier
    4 | ~Foo() = {}
      |     ^        ~~
bug.cpp:4:16: error: expected ';' at end of declaration list
    4 |     ~Foo() = {}
      | ^
      |                ;
1.      bug.cpp:8:1: at annotation token
2. /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/type_traits:1217:12: instantiating class definition 'std::is_trivially_constructible<Foo>'
 #0 0x00007f8beef9f876 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0xd9f876)
 #1 0x00007f8beef9d8a0 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0xd9d8a0)
 #2 0x00007f8beef9ff3b (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0xd9ff3b)
 #3 0x00007f8bee05b050 (/lib/x86_64-linux-gnu/libc.so.6+0x3c050)
 #4 0x00007f8bf687a7bd (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xe7a7bd)
 #5 0x00007f8bf687a609 clang::Expr::hasNonTrivialCall(clang::ASTContext const&) const (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xe7a609)
 #6 0x00007f8bf71c4bbb clang::Sema::BuildTypeTrait(clang::TypeTrait, clang::SourceLocation, llvm::ArrayRef<clang::TypeSourceInfo*>, clang::SourceLocation) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x17c4bbb)
 #7 0x00007f8bf751438a (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1b1438a)
 #8 0x00007f8bf751fd7c (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1b1fd7c)
 #9 0x00007f8bf75277e5 (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1b277e5)
#10 0x00007f8bf752d9f7 (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1b2d9f7)
#11 0x00007f8bf752b954 (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1b2b954)
#12 0x00007f8bf75095a0 (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1b095a0)
#13 0x00007f8bf750c227 clang::Sema::SubstBaseSpecifiers(clang::CXXRecordDecl*, clang::CXXRecordDecl*, clang::MultiLevelTemplateArgumentList const&) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1b0c227)
#14 0x00007f8bf750ca44 clang::Sema::InstantiateClass(clang::SourceLocation, clang::CXXRecordDecl*, clang::CXXRecordDecl*, clang::MultiLevelTemplateArgumentList const&, clang::TemplateSpecializationKind, bool) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1b0ca44)
#15 0x00007f8bf750e9a0 clang::Sema::InstantiateClassTemplateSpecialization(clang::SourceLocation, clang::ClassTemplateSpecializationDecl*, clang::TemplateSpecializationKind, bool) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1b0e9a0)
#16 0x00007f8bf75bd05e (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1bbd05e)
#17 0x00007f8bf6db47dd clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x13b47dd)
#18 0x00007f8bf75ae5e1 clang::Sema::RequireCompleteTypeImpl(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1bae5e1)
#19 0x00007f8bf75add9f clang::Sema::RequireCompleteType(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser&) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1badd9f)
#20 0x00007f8bf6e2b9c8 clang::Sema::RequireCompleteDeclContext(clang::CXXScopeSpec&, clang::DeclContext*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x142b9c8)
#21 0x00007f8bf6f272e4 clang::Sema::getTypeName(clang::IdentifierInfo const&, clang::SourceLocation, clang::Scope*, clang::CXXScopeSpec*, bool, bool, clang::OpaquePtr<clang::QualType>, bool, bool, bool, clang::ImplicitTypenameContext, clang::IdentifierInfo**) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x15272e4)
#22 0x00007f8bf659cf89 clang::Parser::ParseDeclarationSpecifiers(clang::DeclSpec&, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, clang::Parser::DeclSpecContext, clang::Parser::LateParsedAttrList*, clang::ImplicitTypenameContext) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xb9cf89)
#23 0x00007f8bf664d570 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xc4d570)
#24 0x00007f8bf664d2b3 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xc4d2b3)
#25 0x00007f8bf664c516 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xc4c516)
#26 0x00007f8bf664a94a clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xc4a94a)
#27 0x00007f8bf65835fe clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xb835fe)
#28 0x00007f8bf83b4025 clang::FrontendAction::Execute() (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x29b4025)
#29 0x00007f8bf832ad74 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x292ad74)
#30 0x00007f8bf842f1ce clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x2a2f1ce)
#31 0x000055b69d298dfa cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/lib/llvm-18/bin/clang+0x12dfa)
#32 0x000055b69d296185 (/usr/lib/llvm-18/bin/clang+0x10185)
#33 0x000055b69d295344 clang_main(int, char**, llvm::ToolContext const&) (/usr/lib/llvm-18/bin/clang+0xf344)
#34 0x000055b69d2a2f16 main (/usr/lib/llvm-18/bin/clang+0x1cf16)
#35 0x00007f8bee04624a (/lib/x86_64-linux-gnu/libc.so.6+0x2724a)
#36 0x00007f8bee046305 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x27305)
#37 0x000055b69d292bb1 _start (/usr/lib/llvm-18/bin/clang+0xcbb1)
clang++: error: unable to execute command: Segmentation fault (core dumped)
clang++: error: clang frontend command failed due to signal (use -v to see invocation)
Debian clang version 18.1.4 (++20240417123804+e6c3289804a6-1~exp1~20240417003947.102)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
``` 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMWktz47gR_jXwBWUVCb4PPsiSlUzF-8jYlezNBQJNCRmI4IKg185hfnsKICkJtPzKMlNRqSyaanR__XUD3QRE21Zsa4ArlFyjZH1BO7NT-ioP8kBclIo_XyES9W9cdtsFaxoUrFGwRGnQvxki1_bd3yWRqJnsOGAUrcxzAw9GU2FaFN0MEu4vk7Rt8UYpjLJhKMYYf98ohUiOSIFRtHbfZethXLZG0fWpDkQ2iGzwUkqsKmx20AJmmrY7zCStt71QaziKlihaivbBaPEoqJTPD0zVrdEdM6KUgKKVNRvd9IKPVHZwMHV-PIeKdtL8aT1MNX8ezF49wieUHAKHfTLHKP_SmaYzE9l2B1IeQldv-5j7GTH-Ey1jFC0TFC0xaK20vRC1MIJK8W_QWNW46mpmhKoxV9DiWhkslfqGpfgGmOKm03DZNsBEJUAfsyPGKFu9lSPYvayQ-0xu8PD6_v0cxDD1MMJTA8wAx4hkli2SYWow1NymFwcmqaYOtBStmaJ6J3uPyFBycw7syesQqXDR3ziizi1qi5UaTOtamR6QUd-g7seQBUZk07UakU0pakQ2iwUiGylKRDZbxhDZPOXpQxpfSlF3T5fbukNkE5JRcPJnmMyIbMZpPgh7U3sZkjBzH32sW0NrI6gR9Rb3M51D5VJA1ZbdT01Kkg18IRIFOHgKgiDIqrwEqIoqz1Is5eO-V9c-t_3Fr1rU5s5Q9u1eUwaI5EchTf94UK3RQPeIpIissKiNi5kN3UBdz5cddBnm56iUory9_cdPi1YtwnwRInIdPHGHB5HiCDicAOY5Dc4B_trVd2JbU_lXWnMJuh3z6M9jsiY9TGRKYhWVszhfRaVnKPIMBUkZJMFgqNdzJhOlKJnVmzqlEQsSH3x8orNK84xmJf80eLeEXbKm8TwAp8yzlkytpUExVBcXtpunRvdXO9r-rOr7PplXVEpE8hPB5d39StUGngx2ae4yr-iv54OfBoUHPz2Fn4UsLsvyFP4d7Gl_dd0Jye-fG7i3U9rHfnJ75Y1WnWZwq5hbhOyXx8Reak2fv0KFotVEUz_qS10pRJZufr-p9PNT4Dw7Yea89-jJPHqSMI5yOpe50mnzzOUTcxXP2HzmrDbPXOGbI1kGyWzmnLaDObvQBRNzvKiy-cxZbZ65cGKuLJJ4PnNWm2eO-OaCIqHBbOacNs9cNDHHCMnOT9y7rmzNNW3hbuyXWn_2rn777SswpfkamLRTzp9v73z9UyeNuIVHkPewbyQ1sNTbbg-1uRWtv5bNxoZ11mMjnrJB4_g8G18OrQesbN_hU_FywfrxPHmjRlkXO9sdO2B_EzW3gqVScl5iaexndTIhFgoafIzY88g_Q_frWs4z_IO5slR4XPm1NCl5kMBs5pw2z5xXm1Jexhnn50Oju_qfwuzuuqoSTMDQ9941fd_7wXo9PpA9aFezH5UYuqrClejZiI2cI56nk7JIIYHwvKdf4fdOaFipfSPBgO0mvuwb-Yms-3tHpR02bToOJk51j7l1VtAKrAXd1qoF7bJ1vuRzFHgcTWo55byoPszR_wM_s1YI5_4pP8RrPlIgZcHyD_Fj15qhMX9RNu-Yatxy83Lh9obNGfvYQfd88zqdtCIZgVeq3xaMpf1nup_E_AuH2rjmwPbdr1WjNzPDkXG2LJ7QtDwuxcfPE-lfGvp7B78a7T8WHLKufxqYKjijyE57wYRzt6Z7OMTCl_LcdvDmjFXiQuHFymsT06RgVe49L_5KtZ0Ox-v1cVvptQbOipzPwhfa-Fgk3wrzkjFo24O1N3SOls-zeyp5Sw30CJbGaNvyvEyVV2M2V0BKR7cXD6-PTtOYJ1nwbjx-0ZuhGq6h-lIb0DWdFJmjr6LsDLSvxOZdCVFvXw_vi0DNRRRzPHhExVOiSBl9NHE9voZdvh9A1zS__pd0kTLy6EomdLEkTN-k6-apT6MT2n4MRfORYH30SEgnJNAipm-ScK8a94jUN_j5-4XBCv5Fq65xO0k3Z0rWofb9pHgnbTuotG2ADczaczDnnOe936AneZRU8ML75d39pPuygHs3_PI22yLogHhIvQY7j8o4IMkp0o22K3HNl24OjxubwDpL4n-1C30eGimcaQ9b4WMjlGdec2P7NCFtAbfPnww8dANgj-CJM3MmASkcvFP83oFElcekChn4G8QO6dGNx0N7lb_l5pxTl1AHy8M9NpVJUqYFJ0XOK4oZCx_21OrNz-_k7qgeu4rD1q13j6ywfXT8MPzxLDF4CgmvvAl2OKYYIaZh_pH9yxOVQZh72XY4kBhVJtG4kTT67Y6Ceq_GfvH0MfleKXluH_8zsKrI34U5HGkMqGy0UmzxfM5bVvnrs3d4ARDEKYnp545fSEb8Vc87UXA6oyDBDw922ENrqDYPJ8A_bCUK_DhlkziRsgxxr_9TnLCyPD5Hn5xbe8e-XU1LCdgoDP1kxUzt97Tm9ss72O6hHo5Z3Zm_BcCUBsy7fQP8XfXuPq6GZWnUjSsqJHDMO2e5dWd_VnXXAr58dPcAsDhZLwY7aygFrQe1j6Bbi8zO9cWw_20RkIDEQRxmIYnyIEbkGlIWkbzIg5iml-F3eGrC76NQEERFnC3CgByM3FO9BWPhD9Fr2EkAe5GdBsrxXnGQVrBRrXjqv3KrmJTA18JR4B1IT36DcMGvIl5EBb2AqzALoyxIiyy82F0FLGV5llS8yGIKlOd5mqRFSLOYJfZJ60Jc9Q6QMIxikoSLimW0BE6DqIxJWVIUB7CnQi5sgiyU3l6Itu3gKi-SOL6QtATZup-9EDIEj6BkfaGvXEKV3bZFcSBFa9qjBiOMhKuVI7-FrcuIFv-xgxp3rTvuBm3sDDDPDeD-fByrGtPhHPwPYXZ4T2Wl9N6GH_oTb6UvOi2vdsY07kDY_bJlK8yuKxdM7YckH3O90epfwAwiG-dQi8jG-fSfAAAA__9F45Y-">