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

    <tr>
        <th>Summary</th>
        <td>
            ICE in llvm::Type::isIntegerTy(unsigned int) const
        </td>
    </tr>

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

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

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

<pre>
    split from #60431 

The following program ICEs in clang 16.0.0rc1:

```c++
template<auto F> constexpr auto x = F();
template<class> constexpr int a() { return 1; }
int f(auto) {
 return []<class T>(T) {
        return x<[] constexpr { return a<T>(); }>;
    }(2);
}
int i = f(3);
```

```
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: /opt/compiler-explorer/clang-trunk/bin/clang++ -gdwarf-4 -g -o /app/output.s -mllvm --x86-asm-syntax=intel -S --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -fcolor-diagnostics -fno-crash-diagnostics -std=c++2b -O3 -stdlib=libc++ <source>
1.      <eof> parser at end of file
2.      <source>:3:5: instantiating function definition 'f<int>'
3.      <source>:1:33: Generating code for declaration 'x'
 #0 0x000055a0373b5a6f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3bb4a6f)
 #1 0x000055a0373b3a9c llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3bb2a9c)
 #2 0x000055a037306828 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007fa41f8b9420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x000055a036c7a0c6 llvm::Type::isIntegerTy(unsigned int) const (/opt/compiler-explorer/clang-trunk/bin/clang+++0x34790c6)
 #5 0x000055a037941d1d clang::CodeGen::CodeGenTypes::ConvertTypeForMem(clang::QualType, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x4140d1d)
 #6 0x000055a03781411d clang::CodeGen::CodeGenModule::EmitNullConstant(clang::QualType) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x401311d)
 #7 0x000055a0378d9dc9 clang::CodeGen::CodeGenModule::EmitGlobalVarDefinition(clang::VarDecl const*, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x40d8dc9)
 #8 0x000055a0378fdf2d clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x40fcf2d)
 #9 0x000055a0378fe4c3 clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x40fd4c3)
#10 0x000055a037905f13 clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) (.part.0) CodeGenModule.cpp:0:0
#11 0x000055a03a43fa40 clang::Sema::InstantiateVariableDefinition(clang::SourceLocation, clang::VarDecl*, bool, bool, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x6c3ea40)
#12 0x000055a039a30fd5 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x622ffd5)
#13 0x000055a039e15c63 DoMarkVarDeclReferenced(clang::Sema&, clang::SourceLocation, clang::VarDecl*, clang::Expr*, llvm::DenseMap<clang::VarDecl const*, int, llvm::DenseMapInfo<clang::VarDecl const*, void>, llvm::detail::DenseMapPair<clang::VarDecl const*, int>>&) SemaExpr.cpp:0:0
#14 0x000055a039e16484 MarkExprReferenced(clang::Sema&, clang::SourceLocation, clang::Decl*, clang::Expr*, bool, llvm::DenseMap<clang::VarDecl const*, int, llvm::DenseMapInfo<clang::VarDecl const*, void>, llvm::detail::DenseMapPair<clang::VarDecl const*, int>>&) SemaExpr.cpp:0:0
#15 0x000055a039e185e0 clang::Sema::BuildDeclRefExpr(clang::ValueDecl*, clang::QualType, clang::ExprValueKind, clang::DeclarationNameInfo const&, clang::NestedNameSpecifierLoc, clang::NamedDecl*, clang::SourceLocation, clang::TemplateArgumentListInfo const*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x66175e0)
#16 0x000055a039e1927c clang::Sema::BuildDeclarationNameExpr(clang::CXXScopeSpec const&, clang::DeclarationNameInfo const&, clang::NamedDecl*, clang::NamedDecl*, clang::TemplateArgumentListInfo const*, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x661827c)
#17 0x000055a03a294643 clang::Sema::BuildTemplateIdExpr(clang::CXXScopeSpec const&, clang::SourceLocation, clang::LookupResult&, bool, clang::TemplateArgumentListInfo const*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x6a93643)
#18 0x000055a03a3e00af clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformUnresolvedLookupExpr(clang::UnresolvedLookupExpr*) SemaTemplateInstantiate.cpp:0:0
#19 0x000055a03a3c19a3 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) SemaTemplateInstantiate.cpp:0:0
#20 0x000055a03a3c2c45 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformInitializer(clang::Expr*, bool) SemaTemplateInstantiate.cpp:0:0
#21 0x000055a03a3c44f7 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformReturnStmt(clang::ReturnStmt*) SemaTemplateInstantiate.cpp:0:0
#22 0x000055a03a3f4493 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*, bool) SemaTemplateInstantiate.cpp:0:0
#23 0x000055a03a3c0df7 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformLambdaExpr(clang::LambdaExpr*) SemaTemplateInstantiate.cpp:0:0
#24 0x000055a03a3c1b62 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) SemaTemplateInstantiate.cpp:0:0
#25 0x000055a03a3caf4d clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCallExpr(clang::CallExpr*) SemaTemplateInstantiate.cpp:0:0
#26 0x000055a03a3c2002 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) SemaTemplateInstantiate.cpp:0:0
#27 0x000055a03a3c2c45 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformInitializer(clang::Expr*, bool) SemaTemplateInstantiate.cpp:0:0
#28 0x000055a03a3c44f7 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformReturnStmt(clang::ReturnStmt*) SemaTemplateInstantiate.cpp:0:0
#29 0x000055a03a3f4493 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*, bool) SemaTemplateInstantiate.cpp:0:0
#30 0x000055a03a3f92b5 clang::Sema::SubstStmt(clang::Stmt*, clang::MultiLevelTemplateArgumentList const&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x6bf82b5)
#31 0x000055a03a442217 clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, clang::FunctionDecl*, bool, bool, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x6c41217)
#32 0x000055a03a44010f clang::Sema::PerformPendingInstantiations(bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x6c3f10f)
#33 0x000055a039a50fc7 clang::Sema::ActOnEndOfTranslationUnitFragment(clang::Sema::TUFragmentKind) (.part.0) Sema.cpp:0:0
#34 0x000055a039a515ed clang::Sema::ActOnEndOfTranslationUnit() (/opt/compiler-explorer/clang-trunk/bin/clang+++0x62505ed)
#35 0x000055a0398e9a6d clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x60e8a6d)
#36 0x000055a0398d8baa clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x60d7baa)
#37 0x000055a0386aa245 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-trunk/bin/clang+++0x4ea9245)
#38 0x000055a037f84a11 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-trunk/bin/clang+++0x4783a11)
#39 0x000055a037f08e53 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x4707e53)
#40 0x000055a038068f0b clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x4867f0b)
#41 0x000055a034b8589c cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x138489c)
#42 0x000055a034b8105c ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#43 0x000055a037d69cf9 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
#44 0x000055a037306c87 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3b05c87)
#45 0x000055a037d69f2c 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
#46 0x000055a037d3240c clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-trunk/bin/clang+++0x453140c)
#47 0x000055a037d32dfd 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+++0x4531dfd)
#48 0x000055a037d3d24c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x453c24c)
#49 0x000055a034b839a3 clang_main(int, char**) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x13829a3)
#50 0x00007fa41f367083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#51 0x000055a034b7d19e _start (/opt/compiler-explorer/clang-trunk/bin/clang+++0x137c19e)
clang-17: error: clang frontend command failed with exit code 139 (use -v to see invocation)
Compiler returned: 139
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkW1tT3Dj2_zTmRdWULMm3Bx46DeTP_JMJm2Zm542SJbnRRpa8skya_fRbst1gmW4SqE625lJM6JZ1Ob_fuej4SNC2lRstxFmUvIuS8xPauTtjzwSjru7sSWn4w1nbKOlAZU0NIoRTSHAMIngeweXw782dAJVRynyVegMaazaW1uBqddECqQFTVG9AnJ7CU2hZHOHldGyUwuGHReid_-lbnagbRZ2I8Ip2zoDLCF8AZnTrxLaxoG_bggifg8sI5REqIvx8JFO0bcOBUjtAhxEgyt4BK1xnNYgj_A5E2fkwhe9URSj3q4wdhwe77gNVuxXATYQvIpTfhH3H_8Yh2wivhmETaSYS0AivxnkGNL04-OIRl5_LN6EcTeEGQsueES86DvrsKN7L-_D1-sPFcn0B2q6spQMUlN0GWNEY64Az4M65pvWKQ5cRutxId9eVp8zUEbpU6n73a9FY8y_BXIQuZdt2oo3QJaCaA6mZ6rgA7k4AZml7B0rKvjhLmYjQCjRWNNYw0baCg9Z0dmj2I2nbGiapExzYToOWWdm400HktaPsC-Bd3TyaFDyNYHE92h-1m64W2nnBQYQuTeMlY6ZupBJ2IbaNMlZY3-YtdOFsp79E6LKUetc2mCRYbPhXaqsFAYsNWBg_GW0aP2Xnms6dtmBRewLAYrHN0wVt60X7oB3dRvhcaicUWKzBYrFhbOGMUeyOSh3h8xdl8p1bTZv2zjiwqJhRxi64pBttWidZCxaVNouezbC5dTzC56M3oRIsPuG-UckywudKluMjEOHVSDa-GOiLPX0RXglTebdpqG2FBdQBoTkwFaikEkNPNPZ8mgAvcYSXieda6tZR7SR1PhxUnWZOGg24qKSW_ccIZVWEV1K73uSzYVK8Z1IfLrCfGbwXWthhSma4DzgWcMEU9Y3DnNvHqXycggBuIYQwSSjEGS4TmlagN1e8jPCyfWiHD9dWatcb081gkflTJ0u_3prWWUHrCKXeKr3M3s-9n77dpCL0Dm5xWRKaVt5VH4WOZ0JjWrB9Qq-UoLprPum13GiqIpR3ug_kHCjjVzmaiIgWLBARhSLCNEc5WHlD_CyYuRf2YZDp_6jmyq-Uj5wFfVZGO7F1p6zx7gv7_x-XwOMSWUVJXOVlQRAEt7dWtM5YcWvdCM7bNLrc5ultShZK6m672OhueNC4OysoP23NKeyxxIQgGCAhUyQpyyhk6YTsm4dGDJ9ke6Wd2Ah78zBlesTVB_Tj0E2yArI0EDIJ6C5IzGM-7KmjJRgu3gsdfPGS7wzF6HthnW-5NPajqCOUT0b_o6Oqx4lWoDRGHctwSEwgj3mAJA2Q5DGJv43ko-GdGrVwUUv3a6fUygwB5hCSIyGAMY5nCLIQAS84K16L4L0yJVW_U3v-GA9DIP0jpgazitDy6KqBPOesCIDlIbCKV-jVqhmAHUK1e8qUx_PkZDs6VCd6rMfCWLEKhcorZhgFYfhtGA8jO5r0nDD8KL3fF8LdrIBJFb9a-hvTfBD3YpR1imFo2dF_2lDrfNQsQDDT82DtJQu2LEpwRQmcSrYWNR0-XT0mBuJ3aiUtlThkLus-B_hgGB2ercBzDwl8Y_77OJpIGRaUwEATwf5XUAwrnuzHazv9T-nu1l1VSSbFmGWsmyHLeBHtk4Ps8qdbK3zOdG8kB7u3hIuj4USoqngS4MQBThEnLMXg3Hyk9suogM-iElZoJvgMjmdgSJfeptLJg4ttY8fWJ07OhW7FR9oMr2AvBc5-i9439EpX5tvDPds9zdMpuHBUqnC6ayrt90nj09qLnp0CeKI8wP2ORWYKSElOgKffDzki998kfudZfzcFJDMF5Ik4ENnedVLx0SUG4sIdXXViP8vT_GtGfj_q_6Xme9Q1vvT8SmvhedxhnKv9V9E6wX2vdSOYrKSwHwybd6K14Pule9FsbsZKy3J8z_4gWzcV5mibeZrGWSLCIJzOVFOgjH1DNRPOnqto9ccfa2aanqdDbL6G-MOcvvDoOxg98vaWxjnKWMBskONSVJCU4BeY3cl8xd9G6osm9sGYL13zWbSd2g3dxaL_iSHSAqckzMuCzJliASGtAuGsEDeW6rYyto7wKkI51UY_1KZrgaa1aId0oAixPKVKxg6VkH6ucZ7ftBWtUfeCDww9p35_j-Uu5j1f5kByV4TwWFxQ_MPhPYfzRvERnImPGEl-uPhXPqGlSv5HHELx5MWvQhPP0BBSZT8czee-QL129ex9e9r-esWgEEpFSPHj7Wpl6sZ0mj8HEz55u4bwTEOQ_wQNfaB1yelzp5m2v15DZO75ZYr-RJ6fzMSnFeE_3sCoUnu2wcfW18NI5wEMwj-TFrK_VPzN_zrxt_hLxl882--rApUHajPrrmzdc0EmAkxaP3bKyb50ti_XnKS2R8ozyypHZVCNwbMqG0Eozr5ZZbsca0dvqrI9Df5JpTYSozgLQKMZaBjDaj_oa2G9hV0LzaXePFEgjW4jlB-5JljFsAoEDWtlNIEVO6CdJXOf9IXmn6reLVQv4m9auktLN96i9pRzBi_6bddjqAnMK7W-536nIDPh4kTwVwq3uzJxlFJjAhPBA_rCQksuCpoGEl73J9GTz4cr2Z8a-u9OXLtZMch3fG-Nf5msduWf1X4Shlr3Vd0Y69aOOnFMz4Yip2kIPixl5DwvKX0Gfrm-OVjn-yHeCHlWUhoIGmzmeUopCjfz8axg2UeN3Y4rWOfE2HQ8IyKCFoiEETI8w6pyQuM4iGfWaCc03yPfMSXLckzjOJAsPHmqYC6S2dnNsNYQtpjYz91hKMezT5LBTCRBhYMEe2oO07yCZVir7OV8AnH_uJ_Mt_gA5BFP-_I0q2AZSB3sl6TMk7xggLH4tqZ-jskdj6W19KEPCyt2R-1T1WgoO4dtu5L08YSPcU7yIqjBETQTPoYJAzueV_FN7-gTCOuaKvW7YM7Yq7pRe5H0NsKtvBf7q90k2MMynhasKnqw330Y1XdhVKmSsi-3lQ5D8LD2aAyreGXqmmo-98O9eunvNPk20_jVqUc4Qe-s1JsxsA9Kexxwe8u22zgevpS0ley27buPHAWdfcOts1S6dvd4Nh1Vyhu3sZPnvsskO1o-XgkZhkQoU_2LeISyybldvrum84sp9-uDzO_ZsDybqGLfbZrxzaDTa1oJ9RDQ-VPOEXEJE5YHSRxJ5nZVoaBU_7ezi1nidtAAwvsyHCMCDxPXK4w-29l2bAaheDbQdzhUnn-h6zJIP455DYokOCYwDInZnAxe8deS8Ysp28NM_GLK2dvc9MzxeYh9VH4zHD2OJ53fS97TMeSPopBXQaJJ8hmFHJGD9nQ--Rxs8Ht29kPU_0QKj5RHJJghEtpdMduK8eMByC6T2AndR43lcTMDVNAgGUtgcDMSpxnMMbi9VbL0AYxa10v1Hdcj2WlrTtN-HURgHq4yS54yHhcCDPMfCVnG4kI8rjmMibMIL4Gw1ofR5fh3A9WY6gI2ar-iUgkOvkp3B8RWuuE2cIx7zrtWgMU9cAa0QgA5SUXHlXZZ6HjvXnj784Nnl-JP-BnmBS7oiTiL0yxBEOYxOrk7SwTMMC4YL1EWlygtaUHSnCQ4IzBLYXUizxBEGMY4RjHGGJ3SHNGKUsRSUVRxmkYEippKdeod49TYzUl_Wf4shQSjE0VLodr-jzEQ0uIr6B9GCEXJ-Yk966_Zl92mjQhUsnXt0yxOOiXOrlYXQOq3XmI96aw6e_tl_x7CfwMAAP__ZlxnDA">