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

    <tr>
        <th>Summary</th>
        <td>
            ICE / LLVM oom after allocd[32] = '\2'; in C and C++ related to CodeGen
        </td>
    </tr>

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

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

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

<pre>
    In C++ it happens since clang 15 until trunk and in C since 3.0.0

## Assertion

No assertion given

## Stack dump

```
Stack dump:
0.      Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/clang++ -gdwarf-4 -g -o /app/output.s -mllvm --x86-asm-syntax=intel -fno-verbose-asm -S --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -fcolor-diagnostics -fno-crash-diagnostics -x c++ -std=c++23 <source>
1.      <eof> parser at end of file
2.      Per-file LLVM IR generation
3.      <source>:2:13: Generating code for declaration 'allocd'
 #0 0x0000000003f98e38 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3f98e38)
 #1 0x0000000003f96ac4 llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3f96ac4)
 #2 0x0000000003edb6f8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007b2b24642520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007b2b246969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #5 0x00007b2b24642476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #6 0x00007b2b246287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #7 0x0000000003ee6efb (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3ee6efb)
 #8 0x0000000003f15ead llvm::SmallVectorBase<unsigned long>::grow_pod(void*, unsigned long, unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3f15ead)
 #9 0x000000000450bf3b clang::CodeGen::CodeGenModule::GetConstantArrayFromStringLiteral(clang::StringLiteral const*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x450bf3b)
#10 0x000000000434e03c clang::StmtVisitorBase<llvm::make_const_ptr, (anonymous namespace)::ConstExprEmitter, llvm::Constant*, clang::QualType>::Visit(clang::Stmt const*, clang::QualType) CGExprConstant.cpp:0:0
#11 0x0000000004350313 clang::CodeGen::ConstantEmitter::tryEmitPrivateForVarInit(clang::VarDecl const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4350313)
#12 0x0000000004350591 clang::CodeGen::ConstantEmitter::tryEmitForInitializer(clang::VarDecl const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4350591)
#13 0x000000000453a4ce clang::CodeGen::CodeGenModule::EmitGlobalVarDefinition(clang::VarDecl const*, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x453a4ce)
#14 0x000000000455ef31 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x455ef31)
#15 0x000000000456b797 clang::CodeGen::CodeGenModule::EmitDeferred() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x456b797)
#16 0x000000000456dd23 clang::CodeGen::CodeGenModule::Release() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x456dd23)
#17 0x000000000494640e (anonymous namespace)::CodeGeneratorImpl::HandleTranslationUnit(clang::ASTContext&) ModuleBuilder.cpp:0:0
#18 0x0000000004942825 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4942825)
#19 0x000000000662637c clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x662637c)
#20 0x0000000004942fd8 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4942fd8)
#21 0x0000000004c39725 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4c39725)
#22 0x0000000004bb834e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4bb834e)
#23 0x0000000004d2d289 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4d2d289)
#24 0x0000000000daba2f cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xdaba2f)
#25 0x0000000000da1bfa ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#26 0x00000000049aa2c9 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
#27 0x0000000003edbb94 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3edbb94)
#28 0x00000000049aa8df clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#29 0x000000000496c6ad clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x496c6ad)
#30 0x000000000496d73e clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x496d73e)
#31 0x0000000004975a25 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4975a25)
#32 0x0000000000da7998 clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xda7998)
#33 0x0000000000c2d064 main (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xc2d064)
#34 0x00007b2b24629d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#35 0x00007b2b24629e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#36 0x0000000000da16a5 _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xda16a5)
```


## Program

```
#include <stdlib.h>
char static allocd[((size_t)-1) / 256] = "\1";
int main(void)
{
    free(malloc(0));
    allocd[32] = '\2';
}
```

To quickly reproduce:

https://godbolt.org/z/KbjTcdzKM
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWl1z4ygW_TXkhZJLBkmWHvzgOHFvZnp2ezvZfnUhQA4TBFpAaad__RZIjizFyXSm4n7ZrnQ55uNyzrmXy5UIsVbsFOdLkF6C9OqCtO5em2VNjOCOzxHCF6VmT8sbBdcAXQJ0CYWD96RpuLLQCkU5pJKoHZynsFVOSOhMqx4gUQwKBdf9GDyLZzGIV_4HYYAwXFnLjRNada3_1JAcWuBOPHI1Gn3rCH2ArK2bvjmL-594ddSHfV88A3HxxeidITUkZtfWXDkL8AoCtNGNA2hDdd0IyU3E943Uhhvf5mlEzyBsFIgAtCmFOnT3EkQ79p2YKkpgtIOR9nZJ03jrrWtaN7MwqqV8rGEU7fMsIraO7JNyZA_wlVCOSxhVSkeP3JTact8Po1sYRTtKI6e1pPdEKICv3sTrB1tFGnuvHYwqqqU2ERNkp7R1gtpuDWqIvR837yE98LCOAXzVf0UYAry2ujWUA3wN4tXcKwnwmusK4GvYEGO5gcRBrhjUFayE5CBeoSA4N5H_Dj9__vYHvPkKd1xxQ3oP497SYB2vEMCrOfZ--dQPVTtINeOw0gYyTiXp5kOAFkRKTRlACxB7P-IYxvv48A9XRc5xDr3mPgbwyj7Z7pcvRigXIuTOEMoByodBhnzfausMJzVAGUBrKJQDqIAA5R8UKgBdxvseHkBFD34-AZ8RmpwCv5acqLb5l7oVO0UkQHmrwn5lUGq_xDmgejADVDSCylmZVTlc-6D6yql-5Oapw_YPopj0K-a9hqMxa60c37sZbfwejcP_zj7u7S9KVKIkS1CK4p6UFCVAm32ebbMkkkK1-2in2q6DzqyeZQFymDIATsYGi6yoKGzcveGEbR-ElO-zHuYP1tMp3GSRwZ0NErwXdrLIBsPZ2DDKFxWGpNTGvc9smDiYXYzdxzNelR8eM53ZYdF8HN7zlBN2FN63NZHyG6dOm0tiOcDrcVSH5ADwamf0922jGUD5oxYMoJXfopMd8KLhDFsiEBjoFcf0kjQuK1x2h2C_azXjn7gafflDs1byrukTd2utrCPKrYwhTxuj61tnhNp9Fo6bsM-PzI26IPUzgxQfTrSn0hH1WWqUYxOc8BhTOEJWu2_CisGRg5Nr8sC3Aey2ccb7CaCcKK2eat1aqEjNbRMScnEQSll3vW_MdS2c42HKYO4gWB8ERyD-3RJ599Tw57AJiKYS1u5IudPzfc765AEc1ppkK6_IfKxIGuM5fsP1nZ0DodDozJP__sWIR-L4RptvxNyoKeBvxFxx-uzt7Bze7tAP3kZTbmkx_1vcNjowEkSKH-FE-PXE0mI-EMPj_YpJcihaf26_ek6fpC6JDOgr4clp9SaxEGWl1vIs-zRQGAgmY4Ipr_BbnnuD4GvsDr1UjrflQRbZ8nPlpMBm4JqOuWbloli8l-sVr7gxnAWsZ4AcQA2QswlkxtBbSeMF5K9ccp9ez4XW4xnQjiqGpEiyJOZ_nbsDaF_Da3NTN7Jr7mrCO0OUlaGQ_8-LRLe6vetrwz4ZdMQvWyEZNycycD6Bh3KUHot5SegDV8znp7Y-JKa_A-Sjde6gDjqPqogsQxlejA7XL_5ha3V7NznJeE36Z5Uuu5wty_SQngGjeKp8xfITYbyiIX10m23Paet433Se-O2ADDDHRzTFxWIcIBvj3azYCZxnQthhGBCOD9qyzHEyOY-6NW_CEUv5aS1fp3Se-O1wDizGpypDDOXFMYse70DmUVPyEvsLsuc5Rjp8A_rRkRkzUhJUQUrn25p4A0cvCUKJ_pVXAK_pPTHDAY-vQyU5akNr-Pyo8uEkOpQDh3TCYV5WBB5kX8_vQl7ITz53dTn6BKFsfL57G31aHJVszIjHU-kZjc-6ghBEiyDJkdGqVSFQtyaoGnq7rfdcw1MiZUnow7ZSHuYQLt3Cfeis52td10Sx6S4-6b3wrsu36cavTuToeaV7ygojr3vXPk_Ybul-P593X0piBd3aMLyXcDTYN2ydIcLZQ_fEXHiV5U_Ko34_5KhmDOHTCR6mALSQpC4ZAWgxSIXywyPvb7o84YzF9N1NWRy_Zjr1hqavOFp1Syoun0Zavu23Mzx4d4iHgM-nwZWzCv4_B4dXfNYQ42bx61Ewfl1RZDQj7FXVgtfIi5PxIOUodU8m-gFHSWL9xhrHQ1ejcuaI2MdWCYH2cyjhSTGTsQXm7xXlN13a1xX5TZefhXUjRd7Kxc8R0BDhnR9eo_68iH2Y_BIpvViDlOOCq1ikZFxwHcO-Ovp9VCCcqAxec8EvlPIM1WqQZxAPTc7wRVH0RfWhEjmAD6lk1SeCvz6hP7z28MgG3KPqL6aIxVkCPeKPXrgzPSw8eb2PCla8874gTBkMplODPInhduvnbK0jxm2PaP30Ejw5WiKbFmoZSWFn_OP95I33Sx_dkY4uU_u70Zc3qQBhoahsGYfdNpKinN13d4GhVrSOOEFhfxmXXgb0uRU_-NYBVETzLvQ2EKUZSK8gwFcQIATS9dx_4EsQr4RysI_trlYOWBe-C0IIK8P9KV2HNQDKg46-xDgMeF4co2GJBUjXyH-EYWBx9ZL_nYb_bQV9kE_Q8MZo1naPVqHz3rkmXLqhDUCbnWallm6mzQ6gzQ-ANr-Xf95R9uP3Py7YErMCF-SCL-eLZIGKRRbHF_dLnNCYUJSlSYwrQhgqUEmyfJ7OKxInqLgQSxSjNE7naZyjLIlnnCUloaSK0yopGctBEvOaCDnzu9uvfSGsbflynsQxwheSlFzacFGPkOLfYegN6l5dmKWfFJXtzoIklsI6O5hxwkm-vFlfB9eE-1mta0gqx81fytnd4vsEefgDAMMlcZxBp2H_zH_RGrmcSCjcfVvOqK797vDpqvuIGqP_5NSHe8BvAdr0BB-X6H8BAAD__-Vb5Hs">