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

    <tr>
        <th>Summary</th>
        <td>
            Clang++ crashes when instanciating a static data member declared as decltype(...)
        </td>
    </tr>

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

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

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

<pre>
    This program crashes clang++ (since version 12.0.0):
```
template <typename>
struct a {
    static char const b{};
    static decltype(&b) constexpr c{&b};
};

auto x = a<int>::c;
```
Either of the following  changes make it to compile:
1. replace `decltype(&b)` with `auto`;
2. declare `x` as `const`.

See https://godbolt.org/z/1oxWGfE3T

Here is the crash report:
--->8---
```
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: clang++ -c main.cpp
1.      <eof> parser at end of file
2.      main.cpp:7:6: LLVM IR generation of declaration 'x'
3. main.cpp:7:6: Generating code for declaration 'x'
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  libLLVM-17.so 0x00007e1271581cb0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 64
1  libLLVM-17.so      0x00007e127157f18d llvm::sys::CleanupOnSignal(unsigned long) + 141
2  libLLVM-17.so 0x00007e127146f479
3  libc.so.6          0x00007e12709d1ae0
4 libLLVM-17.so      0x00007e127179d0f6 llvm::Type::isIntegerTy(unsigned int) const + 6
5  libclang-cpp.so.17 0x00007e127b4a09ce
6 libclang-cpp.so.17 0x00007e127a54a60d clang::CodeGen::ConstantEmitter::tryEmitPrivate(clang::APValue const&, clang::QualType) + 1469
7  libclang-cpp.so.17 0x00007e127a54af44 clang::CodeGen::ConstantEmitter::tryEmitPrivateForMemory(clang::APValue const&, clang::QualType) + 132
8  libclang-cpp.so.17 0x00007e127a54d024 clang::CodeGen::ConstantEmitter::tryEmitForInitializer(clang::VarDecl const&) + 52
9  libclang-cpp.so.17 0x00007e127a6e7f87 clang::CodeGen::CodeGenModule::EmitGlobalVarDefinition(clang::VarDecl const*, bool) + 503
10 libclang-cpp.so.17 0x00007e127a6f8d45 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) + 437
11 libclang-cpp.so.17 0x00007e127a6f94e3 clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl) + 1747
12 libclang-cpp.so.17 0x00007e127a700daf
13 libclang-cpp.so.17 0x00007e127a76aaf7
14 libclang-cpp.so.17 0x00007e127a671188
15 libclang-cpp.so.17 0x00007e12794a2d83 clang::ParseAST(clang::Sema&, bool, bool) + 579
16 libclang-cpp.so.17 0x00007e127ad6b4f9 clang::FrontendAction::Execute() + 393
17 libclang-cpp.so.17 0x00007e127ad57df7 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 391
18 libclang-cpp.so.17 0x00007e127ae3ac92 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 450
19 clang++            0x00005d6aac2a1c18 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 3928
20 clang++            0x00005d6aac2a710f
21 libclang-cpp.so.17 0x00007e127aa7cfdd
22 libLLVM-17.so 0x00007e127146f8ca llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) + 42
23 libclang-cpp.so.17 0x00007e127aa84174
24 libclang-cpp.so.17 0x00007e127aa454f1 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const + 161
25 libclang-cpp.so.17 0x00007e127aa458ad clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const + 253
26 libclang-cpp.so.17 0x00007e127aaa407c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) + 412
27 clang++            0x00005d6aac2a977b clang_main(int, char**, llvm::ToolContext const&) + 8939
28 clang++            0x00005d6aac29dd54 main + 52
29 libc.so.6          0x00007e12709bac88
30 libc.so.6 0x00007e12709bad4c __libc_start_main + 140
31 clang++ 0x00005d6aac29dd95 _start + 37
clang++: error: clang frontend command failed with exit code 139 (use -v to see invocation)
clang version 17.0.6
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
clang++: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang++: note: diagnostic msg: /tmp/main-473bc6.cpp
clang++: note: diagnostic msg: /tmp/main-473bc6.sh
clang++: note: diagnostic msg: 

********************
```
--->8---
Preprocessed source and associated script attached (with extensions changed to `txt` to bypass GitHub's refusal to attach `.cpp` and `.sh`)
[main-473bc6-sh.txt](https://github.com/user-attachments/files/17138569/main-473bc6-sh.txt)
 [main-473bc6-cpp.txt](https://github.com/user-attachments/files/17138553/main-473bc6-cpp.txt)
 





</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8WV9z4jgS_zTKSxeULRv_eeCBEMhkK3OTS7jZuntJyXIbdGtbLklmYD_9lWwBhiTD7MzWUakEW93qX_-XOkxrsa4Rp2RySyZ3N6w1G6mm3L6XNSpxk8l8P11thIZGybViFXDF9AY18JLVa0JvCb0FQhMtao6wRWU5wadjb-wRmpJgRrw74s1I5Lmf7tFg1ZTMIJBgbvYN1qxCEiz6RW1Uyw0wIPFt_wYAQBtmBAe-YQq4rLWBzK7HdyR4S5UjL-2-hCaERhmhac-Du0YBt3z27YD37Hv3m7VGwg5IcAeMBHNRGwswmJFgxk-k52othNmgAlmA2SAUsizlN1GvwaKu16ihYn8gCANGApdVI0o8Wsgfg8KmZByBRN5bBUjkwTdhNnbVYrNCDzDouNOYqY53Z0mZtl87pUnkjYeavSDCxphGW9l0SehyLfNMlmYs1ZrQ5Z-ELn25-_2-WASrIeMnVAhCd8p1cWARS2WOOoxGIxIsEvvnPfM8PS5mLwvQbVYJ69-sXbsdrEEuIAmzabMxlxWhy7LcHv6MGiX_i9wQuhRat6gJXQKrcxA1L9scB-Ayxv8winEkdA6NwkZJjlpjDlq2qn9tOZnWkgtmMAfV1qC5Eo1xFnsxjP8BeVs1RyW9MTy5ZGBq3VZYGwv7LCNGHCom6jFvmqN3uw8J5igLEiygYUqjAmYA69yGTGGj4eDO7nPcIpjFJJhFVsrj49fP8PAMa6xRMWOzTRbO-_0jofGO0LjfKhi_u8u9467XwGVuQ1V9vMfJBl0AytaA3leZLMGmrbbpj7VuFcJetrBhW4TOUz2R-BMViNquKXiarT6BVKDRdI7CeiuUrK0NYcuUDVmr4OvLvz_ffnl8-M_i-dWy2IA2Ehop6i5UhBnWFg-gFJnlG_nxWEvwdp7neTH6NPYnic8zrwPUJ6_e6_7LkxK16XRb9UGSnIgU-_YqtVHIKkIjGyg2_2kK1rlR6Hx6Kbf7nAmPCz_J3xM-L5HVbfOlfhHrmpWEJm3dFeMcSmnDqBflh74Lie_pGEZFGKfO4R0hH2s5juD4GVB7ae4zdBkZXtMgTnOviAYarGxR6r4J_VAbXKNa7YfwnaH6Et2Zqxc16YHZJBnxprEA_XgoKwuZl3KXAtEVYjYJWeTlLul6k8oc77E-PNTasNosKmEMqv6lUXv7_KTElhnr8AH37OkrK1vscTufD5b_2bKyU_3omMgZPL6ml4VahOGvQF1K9Rkrqfa_hjmgPeTkByDnHv05yEupHmphBOsy_xzwV6bukJcDwD2yiQOWXgUWYVwk8XeAdQ-fZd6WLkwtpvtSZqzspBfCgpP1d4HNrCUzKcsjQC9wOe9dRVgkeTj5OYQfwTus8tICOyXjQa-yxQ50DzYMXOH2_etg0xCDnwP7MUQXbnF4wEGv4Yg9L2eFow6uUkeMFYe9w6s6xr6fJI56coU6DRnNkzOLPNlGPXtZnev7ghVzKdcHykXAHOqxf7WS5VEWFulQ4lLJ2mCdz3gXCr3dd8hb058HexFBeojJ-KqISZwXF1nTnT7VQ5fIHM-EOLln-l5gOuVukLoW5SfXYGDAeEqHMJzAE5qt5Oyt8DdoB8E-ca3MT89OYHDZ_CZ5xBinzOd-Apz7r_ZcdNb0Z0qx_TMWJJifbhlWVLDoKuvZOzqHrRT5AEmQUhdl1PsxKLHvuZinVzOVxbzIc0dNv38YSDgbFIm5PQw_I5dbVPu59eLO9CvPbf3CCiz3Z2Yo2rrz8avqTGG1hD7sOkM4s7uKTa8mK0tCP3YnJno1WVk4CQt_GCK5EttDi-njgL3JirmsKlbn50FzwWgJPuqU3yGdnSX58FzjR4ez2bWiYrVKWP5XtfpNZvpjlX6T2aPQ5kylkxNfKlaWX5EbqR6qpiTBXJu8X2qYUO5C-xesYO--iw9tQSeuFtGr5Y6x0Iv5R3LvBt_PisM7VeEjG_4fbeGSwT9kQ_xjiZ_GcdZTHqrQAcGGqS7mZucqrKQsXeq-OTwlaeB6DU1-SHya55OwuxaeHb5oevXmkDF-6KSBN6C-IMpDDq-vdvlVG6bM61GWH7pqHfhnUC_xpRPoWfvK6nr9gMNeYlEpqY43byhchwLu_FUwUWLeD01wJ0x_1fUDa7ak1Qijrb1MakQQg8aTDoSdJlrx2Bu7m8yKqTXaEgq7JHqNwlHDR6Wo291oXbeOZKOQ5VDJHEtL2Egtdv1S18PKEvM70YEndNlqRegyE_W7atbS2PYMuWDrWmojOFR63bH2Qxb6Cz-D6Y6bzsxWq9n8E6w-LWD55fHxy-8P_7iH5cPj4gVWX7rXt_-6h-fF05fn1fEK_vTedCXRNkQ_nLAcCRRCaa2PObDTLOnHrUCXpmoIXdooG4VxkPHoNHj5tW305udc8nc55nx-djlee8fql-buTQ3MGMY32DVylw8GaxvZ2s0mc5sKJPLMzrhpS7ZvmNZwL8ynNiM01qCwaDUr7WK_oWXoTB15nWD7qDcW7yGLyOR2YM-R3oytgMkdocl35n2tRjXqRfTjNbosRNnN-vzYD5JJlJ476rDxQSxcyLWt6G8RPAkuBB92PkkeRsCb3zf5NMjTIGU3OPVjGtM0CdLkZjMNAuolYeFRr_BoGsRJxPKCs4nnR8i8IroRU-rR0EvphPpeFCTjIgizNMas8HgRJFFGQg8rJsqxbRtjqdY33YB06vueF_o3Jcuw1N2on1IXz5RM7m7UtJvWZe1ak9ArhTb6tIURpsTpfFCqD_8A-LbBGkR_IBf9KJEdx-_MMKiwyvAwVrS5rYdj-fF4TGh606py-vODX6fadkr_FwAA__-5vFbS">