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

    <tr>
        <th>Summary</th>
        <td>
            [clang] Assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"` failed
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang:frontend,
            crash,
            generated by fuzzer
      </td>
    </tr>

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

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

<pre>
    Goes back to clang-6: https://godbolt.org/z/ss7hKK4YK

Generated by fuzzer that randomly adds `consteval` specifier to functions.

Simplified Test:

```c++
template<typename T>
consteval int foo(int i) {
    T instance;
    return i;
}

using func_type = int(int);
func_type* p = __builtin_addressof(foo);
```

Stack Dump:

```
clang++: /root/llvm-project/llvm/include/llvm/Support/Casting.h:578: decltype(auto) llvm::cast(From*) [with To = clang::OverloadExpr; From = clang::Expr]: Assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
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-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 <source>
1.      <source>:8:40: current parser token ';'
 #0 0x0000000003fbcfa8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3fbcfa8)
 #1 0x0000000003fba3d4 llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3fba3d4)
 #2 0x0000000003efeba8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x0000799cd8242520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x0000799cd82969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #5 0x0000799cd8242476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #6 0x0000799cd82287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #7 0x0000799cd822871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #8 0x0000799cd8239e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #9 0x000000000688cd17 clang::OverloadExpr::find(clang::Expr*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x688cd17)
#10 0x0000000006f2856f clang::Sema::ResolveAddressOfOverloadedFunction(clang::Expr*, clang::QualType, bool, clang::DeclAccessPair&, bool*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6f2856f)
#11 0x0000000006f2c1ea IsStandardConversion(clang::Sema&, clang::Expr*, clang::QualType, bool, clang::StandardConversionSequence&, bool, bool) SemaOverload.cpp:0:0
#12 0x0000000006f2d5ad TryImplicitConversion(clang::Sema&, clang::Expr*, clang::QualType, bool, clang::Sema::AllowedExplicit, bool, bool, bool, bool) SemaOverload.cpp:0:0
#13 0x0000000006f3d952 clang::Sema::TryImplicitConversion(clang::Expr*, clang::QualType, bool, clang::Sema::AllowedExplicit, bool, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6f3d952)
#14 0x0000000006cf870f clang::InitializationSequence::InitializeFrom(clang::Sema&, clang::InitializedEntity const&, clang::InitializationKind const&, llvm::MutableArrayRef<clang::Expr*>, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6cf870f)
#15 0x0000000006a36371 clang::Sema::AddInitializerToDecl(clang::Decl*, clang::Expr*, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6a36371)
#16 0x000000000669c27a clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x669c27a)
#17 0x00000000066aaad9 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::Parser::ParsedTemplateInfo&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x66aaad9)
#18 0x000000000666851e clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x666851e)
#19 0x0000000006668cb9 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6668cb9)
#20 0x000000000667094a clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x667094a)
#21 0x00000000066718e5 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x66718e5)
#22 0x00000000066636ba clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x66636ba)
#23 0x000000000496e308 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x496e308)
#24 0x0000000004c61c75 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4c61c75)
#25 0x0000000004bde97e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4bde97e)
#26 0x0000000004d55741 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4d55741)
#27 0x0000000000d9e07f cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xd9e07f)
#28 0x0000000000d94c5a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#29 0x00000000049d59c9 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
#30 0x0000000003eff044 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3eff044)
#31 0x00000000049d5fdf 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
#32 0x0000000004997eed clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4997eed)
#33 0x0000000004998f7e 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+++0x4998f7e)
#34 0x00000000049a1bc5 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x49a1bc5)
#35 0x0000000000d9a52f clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xd9a52f)
#36 0x0000000000c4ea64 main (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xc4ea64)
#37 0x0000799cd8229d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#38 0x0000799cd8229e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#39 0x0000000000d94705 _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xd94705)
clang++: error: clang frontend command failed with exit code 134 (use -v to see invocation)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWl9z2yoW_zTkhbFHQv8f8qA6TTe3vdNu7bkz--RBgGy2MugCSpN--h1Atv44SZvdOi97J3cqw-Gc3_lxOByQsNZ8Jxi7Bsk7kNxc4c7spbr-2ul9GKAouqokfbz-IJmGFSbfoJGQNFjsFimISrg3ptUgKgG6Beh2J2klG7OUagfQ7Q-AbrXO9h8_xv_6CIISBOUHJpjChlFYPcK6-_GDKWj22ECFBZWH5hFiSjUEaUCk0Ibd4wakAdQtI7zmVljCuhPEcCn00utc80Pb2F4KN0wbC8a1gzTwfwSgd_YvKA07tA02DEQr89gygQ8MbkD0HgTlyR7kwsBaSoBy-8QBKiDI7GgIIdxALrTBgjAQHdsUM50SkPsWkN14-53mYufQbq0xCKIbq9vrBajw4qd-gErYOqHttup4Y7jYYkoV01rWAOUOUj_o5FrPgLETc9Md2nPnrWt2unoOohICdKukNADdNs39YdEq-W9Gjj8BuuWCNB1lQ8O6a1uprMQKa8PFbrkHUZlkudVGGWk8_Bx3xkKEblhUgqgkWFt_b5U8AFQ6JpN337nZw410rnpoTvbzPVONxPT9Q6tA9A7aQXMZ15fcWLul1kzZMLDBwjUG0Woj7VSi_C_cOFMoBSiFACEHI1ptHn2_7cRq1x2YMFDWkAsiDy02vGoY9L6EACGAMlhj3jBqA-3Lp_fl-j3UXXXgBmJYdTuomOXFxuRsGXCz76olsV4fSZxxzbXumAboFmJBYU85NHsGicJ675aaUZgwgFawVaxVkjCtGYVadso325FYa0m4W1GqE1ATxVuzPMUEPcVEsARB8UXJncKHk_e6jwfZWkyWBd4wtWAPbSMVU7bNLXV8JFsvjOrEN4BuKy6O3T604GJHv2NVL2K42MGFtHpx21rtnWk7s9RwcbAswMXiIU8XWB8W-lEY_ACiGy4Ma-CiFnJxz1QlNbP9cLGGi8WOkIWRsiF7zAWIbl7Ea4W1wK3eSwMXNZGNVAvK8U5IbTjR3objeNIMolVPrMsGoWVr0haVNtzjwDJGOqVs7LRYaZeTvjEBAcrs4kSZzQoARQEMHoLjf1FdkRrno6WhH7V_-KK4MG62Nn6-80FI4e9bqY1i-OCieeUTiI3t_DdNG0Dvgocens0vHnw4A48jGj8FftUwLLr2s1jznbDLLu-E204obKQ1cQmoFswAFU2gsppVOIcrO8FfGZH3TD16bP_AgjbWYp9-pzIrKQx7MEvS2vUSuP-9_qjXnxUFoTmKUYKC3qmGVwDdPuTpNo0XDRfdw2InOt9BllouUwfZDRkAx1OFRVrUBLZmrxim22-8aV6n3Y0ftCdzuHGWwp12FLwWdpylg-J0qhjlWR1BXNkE-Cq1buCgNjtTG1avVhhWg8J8qjAqWJG-TqEbMigsxgGW5jmhYfb8xmVbai4oQPl84-p3wN-7HnpAHq5duZO8k9YoT9J6DHfNDtg_fWVaNves9EXG5_roCKO3fYn1jBOrsb5_drjZuE1zBSspm1n3DSNNSeze9QVz1WcxL3cROrzDAx3hjA4SMgzv9NpgQbGiKynumdJnvjqWPNj_lYFzU2v2d8dsCTlm4_hvAa3t41zMEpL1CM08ogmmcKMe72wZTLh5C5dOMVQ2jfzObOw72-fuvNq9aOpeRIsEPW37F3x-K-8uEMfO8SGO4wktpM6zYLKs7wQ3HDf8BzbjCJv2MV-J_zwqhhH0vTDcPEJ3PnpB0Jn9yAWdSA4lw5-dwVXDSqXw41dWg2j1xDTZ8vzy1HryBmqTCbU4SqMsfCYeKB2YURtpk9uUTt8yD7hRGF7KKQ97cCqdOJUWBGV4DOmLq11HzxY5Vm4ay9owdfwtVSloaYziVWfskWXurhc6D40zC3TTH7_vRC2fC6jxqFupvmKxY5bzC20XnpiBtmxKG8aYFj-l7YOSXTslxvZxsbO965aRcz8H5vrS8ykeJry_jt9z-bU7y3ySBPutfR6kb82843ZgPp8yn-ZJyH7K_Gd1LFVuWH0nDFP-FPJ6In8q8eJs-gpnfbymughfjpGBr2LOF6l-Hqn9Ap_Qxm1Gm2-cF2FtHnFvwxqphihD0-o4zYIifjktvn_wQTVi722YugAXztuBi3DGRZiz5EUuNrL9xO5Zc77tfW7x3x37YtR0Xz8lR7fjv38iJ5221j8l7Rp2d2ilMmuDjS-OL0GCdXMgAc2WUZRW5wFRrjfPVk2XrlY8pAHwpD6Oi5RFQT4GvJKUfWCi9Ae4vvxgpDOsPJ7pLgCzBzLAnNSrMUlDkk2C61bZbU_QJ3BeCKHHMCCclH1xRVmRsSmR3ubd6cL_KS6fd-ki8dvjHLyY1HkxTZIsDqelp8M7OHN_KgDyl5y9SArq8Q3oJ-VWQAsWZDUkJNwesFUwugodHxz2WB3Lx-OZYdqGVvBecnoZJzzKwYd85kNMEgyPtK_CjcsLI0_WB9w0fzFipLLH1ycdmh2erI6-TBzVzQWkit8zdX6IRsU0SdCkIIWjZKT0-B5tqxyrrtcvPX_f7d7fNE2FybdtLaaJ3RvuQ2cVruThgAWdr-InZ0-bXk621jq2BIzIMYqLXb9d-Kk9DdhuycNDGPofFdacbLUT7ymcCNuGrVGYG33snqnDTWOXglSjfitSzm6oPOFuCEBZgw8VxQBlA1UoP951_yGr88mYvQlgdR3E48v0p-6h-wu6TqxxzZrHCZcvz9sFbtw94lPAT18O2OCq6eQq4v8uOCzjyxYrswyejwI0Za3IGKPPsuZmDZ_tjEcqJ6l7NtAKPHe4fkG0nJQzI8d-b5Xg3B5CaVbMFHk93YN_hZQ_ZKWfZ-QPWX3i2jxzK3Wei08R0GJuJ9-9LPp1EvsweRMqLVkDldOCq8BhRZLnYN-MnicFwhOVwXNT8IZUXqBadfQM5CWzPRwnqE9px0rkCN6lkrJPBD_foX977WGRDbgn1V9AYobTGFrEv9uwVz0Ynr-2K2jxyreibsigMJ8rZHEAt1s7ZqsNVmY7cuuXTbB4ZKKYF2pZkECv_PfPk1XuTY_7ohIypeyuUvrwgnV_aICkj3__yQl0X8mwB27DiTIYRrHF2GkGF_fQSKgZg3xUzBfjj36u6HVEi6jAV-w6zBKUxWkUplf76yyiWZ1XNKqqKK-yICEBqWmQJ1mSEVqEV_waBSgJsjALiiSP0mUWFmmB8yCq6pzUBQJxwA6YN0sb-0updlfuU5brMC5QHlw1uGKNdt-SIXRc6Ucf3Uc1K9thS57Tr935R2G2L7m5Utfus5mq22kQBw3XRg92DTeN-2rNm0lu3uKboDToJ-iqU831f__ZT0_X_TX6TwAAAP__GlEi-A">