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

    <tr>
        <th>Summary</th>
        <td>
            Front end crash with `const` qualifier on class member `operator new()`
        </td>
    </tr>

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

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

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

<pre>
    Compiling the following C++ code (minimal reproducible example) with Clang:
```c++
#include <cstddef>

class Test {
 public:
  // The problem is the `const` qualifier. If it is removed, then the frontend does not crash.
  void* operator new(size_t bytes) const { return nullptr; }
};

int main() {
  new Test();
  return 0;
}
```

Gives the following stacktrace:
```
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: /usr/bin/clang++ -I/home/hgruniaux/CLionProjects/iris-cxx/inc -g -std=gnu++20 -fcolor-diagnostics -MD -MT CMakeFiles/iris_cxx.dir/src/main.cpp.o -MF CMakeFiles/iris_cxx.dir/src/main.cpp.o.d -o CMakeFiles/iris_cxx.dir/src/main.cpp.o -c /home/hgruniaux/CLionProjects/iris-cxx/src/main.cpp
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module '/home/hgruniaux/CLionProjects/iris-cxx/src/main.cpp'.
4.      Running pass 'X86 Assembly Printer' on function '@_ZNK4TestnwEm'
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-16.so.1 0x00007f01193c975a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 58
1  libLLVM-16.so.1    0x00007f01193c7994 llvm::sys::RunSignalHandlers() + 84
2  libLLVM-16.so.1    0x00007f0119306494
3  libc.so.6 0x00007f0117c42910
4  libLLVM-16.so.1    0x00007f01195155f4 llvm::MDString::getString() const + 4
5  libLLVM-16.so.1 0x00007f0119c9429a llvm::DwarfUnit::updateAcceleratorTables(llvm::DIScope const*, llvm::DIType const*, llvm::DIE const&) + 74
6  libLLVM-16.so.1 0x00007f0119c94419 llvm::DwarfUnit::createTypeDIE(llvm::DIScope const*, llvm::DIE&, llvm::DIType const*) + 153
7  libLLVM-16.so.1 0x00007f0119c9558a llvm::DwarfUnit::constructSubprogramArguments(llvm::DIE&, llvm::DITypeRefArray) + 282
8  libLLVM-16.so.1    0x00007f0119c9724d llvm::DwarfUnit::applySubprogramAttributes(llvm::DISubprogram const*, llvm::DIE&, bool) + 1197
9  libLLVM-16.so.1    0x00007f0119c92e45 llvm::DwarfUnit::getOrCreateSubprogramDIE(llvm::DISubprogram const*, bool) + 293
10 libLLVM-16.so.1    0x00007f0119c936d6 llvm::DwarfUnit::constructTypeDIE(llvm::DIE&, llvm::DICompositeType const*) + 662
11 libLLVM-16.so.1    0x00007f0119c94503 llvm::DwarfUnit::createTypeDIE(llvm::DIScope const*, llvm::DIE&, llvm::DIType const*) + 387
12 libLLVM-16.so.1    0x00007f0119c92d65 llvm::DwarfUnit::getOrCreateSubprogramDIE(llvm::DISubprogram const*, bool) + 69
13 libLLVM-16.so.1    0x00007f0119c6737f llvm::DwarfCompileUnit::constructSubprogramScopeDIE(llvm::DISubprogram const*, llvm::LexicalScope*) + 79
14 libLLVM-16.so.1    0x00007f0119c780e1 llvm::DwarfDebug::endFunctionImpl(llvm::MachineFunction const*) + 929
15 libLLVM-16.so.1    0x00007f0119c5ae84 llvm::DebugHandlerBase::endFunction(llvm::MachineFunction const*) + 100
16 libLLVM-16.so.1    0x00007f0119c441e7 llvm::AsmPrinter::emitFunctionBody() + 11303
17 libLLVM-16.so.1    0x00007f011bd1fbca
18 libLLVM-16.so.1 0x00007f011975fd9b llvm::MachineFunctionPass::runOnFunction(llvm::Function&) + 635
19 libLLVM-16.so.1    0x00007f011950536d llvm::FPPassManager::runOnFunction(llvm::Function&) + 653
20 libLLVM-16.so.1    0x00007f011950b143 llvm::FPPassManager::runOnModule(llvm::Module&) + 51
21 libLLVM-16.so.1 0x00007f0119505a25 llvm::legacy::PassManagerImpl::run(llvm::Module&) + 965
22 libclang-cpp.so.16 0x00007f012170877b clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) + 3339
23 libclang-cpp.so.16 0x00007f0121a69f7f
24 libclang-cpp.so.16 0x00007f01207ddf32 clang::ParseAST(clang::Sema&, bool, bool) + 850
25 libclang-cpp.so.16 0x00007f012241d2a9 clang::FrontendAction::Execute() + 89
26 libclang-cpp.so.16 0x00007f0122398184 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 724
27 libclang-cpp.so.16 0x00007f0122496a64 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 660
28 clang++            0x00005566ba773d86 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 2374
29 clang++            0x00005566ba770e00
30 libclang-cpp.so.16 0x00007f0122070536
31 libLLVM-16.so.1 0x00007f0119306224 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) + 148
32 libclang-cpp.so.16 0x00007f012206fbe7 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const + 359
33 libclang-cpp.so.16 0x00007f012203ac86 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const + 854
34 libclang-cpp.so.16 0x00007f012203aeee clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const + 158
35 libclang-cpp.so.16 0x00007f012205572e clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) + 334
36 clang++            0x00005566ba77058a clang_main(int, char**) + 11882
37 libc.so.6          0x00007f0117c280d0
38 libc.so.6 0x00007f0117c28189 __libc_start_main + 137
39 clang++ 0x00005566ba76d3a5 _start + 37
clang: error: clang frontend command failed with exit code 139 (use -v to see invocation)
Ubuntu clang version 16.0.6 (15)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
```

The used Clang version is 16.0.6. I have no tested if the bug is still there on more recent versions of Clang.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEWVtv47a2_jXKC2FDou4PeXDsuE1PciaYpMU5fTEocsnmrkSqJJU4_fUblChbduIo0w10D4JJRC5yfevCdSGJ1nwrAK69-MaLV1ekNTuprndb1QpO2v1VIdnb9VLWDa-42CKzA1TKqpKv9mvp4RsP3yAqGSAPZzUXvCYVUtAoyVrKiwoQ7EndVODhHL1ys0PLioitFy48f-X5Cy_x-x_a7-VGccgFrVq7bbik2jAGpRfeutnuf1oRrdEzaIO81K1DTVtUnB52R8jDaw-v0fMOUKNkUUGNuO7EsDyl0MZLfPRnSypeclBzdFcibiyNglq-APPw0pKLXnQlhQHBEJOgkZAGUUX0bj5we5GceXiBZAOKGKmQgFcPZ5r_BRuDijcD2uqh42tRIwWmVQKJtqoao7zwBnnpykmZrrzwZiwxFwbVhAsPZ3aXo9SWTaeJfuawDA37-8edDtsPih9z-Im_gD4zsjaE_mEUofDeaP3n4_3t4ukW6baouUEEFe3WuoBUBhmJdsY02i7tLLHlZtcWcyprD6-r6mX4NWuU_BdQ4-E117q1elojIhga_MCC6pSNigMevERN52sUtAaGtGxVP2xXEq0l5cQAQ6oVSFPFG-NM9WSFQqytm4NQ_tzz80clt4rUiKhtW4MwFrj1oVYrD68Lq_s17Ry49_zZnYfXO1mD_TUcGg-vl_dcisdeJCsKV1zP6N5OcUHRbItm2jAvXG1F22-FfTQrqaykmjFOtkJqw6lGs4cVmj08o-UD-QPWvIJhtw3d7-eMW1haUQ-vrWfMadPMJZo9rH9owZyhmfxBFhT9sOSnm_RaD6zWvXAJ0p5v1BClQSFikD1lskQlr6CnxJZyaSPNFoQ9XlyKfia0M99bIay7NjYqeDhdt4JaEvRoBx6IIFtQHk6RFKiWrK1sxEr_Uxlw6hwq-gjD_2UJWmgNdVG9oUfFhTlAKAd4FkTkb37_3_-J7AkWr7e1HTrz0i50ytYg_VYXskKC1GBZZCB0qwC9yRbtyAug7iz1RPwvUIgLO6fQ4-L5ZyQV0mC6owTihSsprI-jF6JsNLy__-1h8_T_Dzff7u9-v_2-sUtscDQSNdLGHiMRN118GY4MQhUv7LpZkMy1nAfI3_u-76elHwR5SPM0Jh0kuyRc6Dfd_9HpopPuuT_I2ZFIkdeN1EYBqT2c2MPMheniHb5Bcebc5j1nhM6Yp3kefcT8eyue-FaQ6mciWAVKD_EU36Ascs42vb-fRLmjDjtqaumSMVFKI5wHLkpGk1vGQRyXY8gPqyejeJ8tw8UWjPvs8bosgm-QgxF_bg6aRzgfm2P1SlT5q-Cm_2wbRgwsKIWqz17PpOiCwcg4q7snKhvoeXt4Yc0znn1--2TydphJBnWnDnkyiTwK8svIqQJiwPJe3d3-EN5b52KfyNAjDeKwh5pOQY3j7BMld_uqlpqntmj6ZLM45JpT5JewfYdyoRR5G6DhDPfQskkPo3mKI3YZHWma6m2EzBjFi9a8d4IDyaRmCymrgxKD3EW2_AtQMUTxZahbMN_UsjP8Ec0H5v8Y6RgVzp1pA38aVJiw5AvW_dgXP7Kora2l5r37vnO7JHG2DYJpbFHsh__VQxJmzrwB_oJ5WfKPmDfJHaZwElOShml5jqlvfuDTI9zp78vojiT3sOeUVN3ykR7TAXI0CTnNfAjOIa-gaF3SAMGGSuiubqoTgA-E7riAQ6V0bs4cDzjiSRwxgWycujoILsHeEA3v0PwQksB3STRIJpFEUQDpCMlC10Pp1WOouRkY3Uj2Nsr-QRD6QyxIJxgVLCgLShx19mlSSOOS5QW6KK8tUV3x04pv4kMVHQcP2TMJY8c-nywt_DhMxoF__WiZDmXx3-A95EM8GTRjvwii8Au8H7qy_NQx3NCBbxw4tu_j4Zm8BI_DSwVbQt9c9Xnk3p2JAcHnnPPEaRt3wa3rAme2GbLMx2UfDlI_S9MC0eGmI1zc1tzcEPoHCPatNU1rO_XR9OrY8d2KLRfgIu6I5GcgDNQTEEV33xprDT0qp05IbZP0E4gJqmeibJD9nOieiO1HJEc99SXpdyhPhwf1Lc42dEpYOH9aoq4N7spPwf9sYdNdgyxP24HmVXEDm6EpGC1iUJK2MhsGFRiYWBje2p8hV4Whi244nLInSfIyLR11NEHtp4yVIR4L_Wi72sXT86nRn6AmJ0XSad7KYhfzcDzBEUcBwyQfc1y7iyqn594H90BbA-NuZ9BAMsUhzLMgi06drEuL6k5oQwSFEx6DebPLkEZNAB6arnRS0DwhyQkMx_CI5kVS8p75O7TjEmvQc4bGVzujfz2EOE6SgqRpyLIEURps3F3cKNXYstwehXBJd0Qd05h1uyU6HcPL4brwUIiGQz-E869B8WFIjKE_pTs_tTnAUX8ePUM_wXiczZeK6N13oPIF1NvS2nFvjs00KaF6O1HEcLuxUZ0yrJxouJs8nMAgcs18OBVQsZ-UBaRjuzPFX4bksVwGS1nXRLBzR__QNIfgIbvARqqTsHGMZy5cjKLNZkP3-yDoPwqiObWhpWvQO4OfENuBjVGEGz1Mn21Hqso6q1SjeUsyKmEXp41-GLsTG07FLOyHhFo_vaCy7jyQd8Fh0OPJ4TlbaAku5YtPSBdnDeFRqiwe7lGmYquVCgB-VKpfZKEvi_SLLO65NpfyW02q6jegRrpi4eg_DeHWdN311Ne14Ix8QRfBcMMVTkZ9P45TfFEXq9HfJ0Hyg-h4SYf_oC6GpDx4QvLFABhnpKccovGAoDuOi3EPEWTDRUmYju7rznZ2F3c489kQWrNLt3s4C7IcbTZ2eqMNUaZD0bMLXS8cnsbyE_wJC0mM-qW9AtLD41anQARK2fiw6Pc4PkBRp8qS8ApY_7IGe276t7ggtDJnrQY0e0FGIg2A-Cg3ujDya9EK07q9X0Bp23wFydyfJ3Z9EB8o-2rRAtlnySaJZg2dVVy0-9lWtI5kp4AwVEsGtqZGjdR83091abeqgK24eveicvk56nkHqNXA-jfDA0CuHcY5uutvvYVEBrQBhnjZXW8X7daSacOryg4o6O_9FSAFtLv07jfTSJb99vMrdh2yPMzJFVwHqZ9EUY5xcrW79mnKII8Z84s8LX2aACY4KxPKsoDEUX7Fr7GPIz_AWRBGPk7mccgKoAHzcyBFQZkX-VATXs3tWZpLtb3qHrmu0zyNsquKFFDp7gkWYwGvqJv0MPbi1ZW67q70i3arvcivuDb6uIvhpoLrrrLqHkz6B7LOGT583rRK6N9Na6gL6K79z94qrcUT_6pV1fXff7nr5Pp3AAAA__-Pqxc_">