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

    <tr>
        <th>Summary</th>
        <td>
            [clang] Frontend crash when template Derived function uses template Base function as default argument
        </td>
    </tr>

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

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

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

<pre>
    ```
template <typename T>
struct Base {
        int     bar() const { return 0; }
};

template <typename T>
struct Derived: public Base<T> {
        int     foo(int p = Base<T>::bar()) { return p; }
};

int     main() {
        Derived<int>      d;

        d.foo();
}
```
c++ -emit-llvm -Xclang -disable-llvm-passes -c main.cpp -o main.o
PLEASE submit a bug report to https://github.com/Homebrew/homebrew-core/issues and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: c++ -emit-llvm -Xclang -disable-llvm-passes -c main.cpp -o main.o
1.      <eof> parser at end of file
2.      main.cpp:11:5: LLVM IR generation of declaration 'main'
3.      main.cpp:11:5: Generating code for declaration 'main'
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.dylib            0x000000010dbe9410 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 43
1  libLLVM.dylib            0x000000010dbe8e83 llvm::sys::CleanupOnSignal(unsigned long) + 184
2  libLLVM.dylib            0x000000010db479c1 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) + 97
3  libLLVM.dylib            0x000000010db47bbc CrashRecoverySignalHandler(int) + 135
4  libsystem_platform.dylib 0x00007fff6ae75b5d _sigtramp + 29
5  libsystem_platform.dylib 000000000000000000 _sigtramp + 18446603338722616512
6  libclang-cpp.dylib       0x0000000109303429 clang::CodeGen::CodeGenFunction::EmitPointerWithAlignment(clang::Expr const*, clang::CodeGen::LValueBaseInfo*, clang::CodeGen::TBAAAccessInfo*) + 311
7  libclang-cpp.dylib       0x00000001093035b4 clang::CodeGen::CodeGenFunction::EmitPointerWithAlignment(clang::Expr const*, clang::CodeGen::LValueBaseInfo*, clang::CodeGen::TBAAAccessInfo*) + 706
8  libclang-cpp.dylib       0x000000010931cc52 clang::CodeGen::CodeGenFunction::EmitCXXMemberOrOperatorMemberCallExpr(clang::CallExpr const*, clang::CXXMethodDecl const*, clang::CodeGen::ReturnValueSlot, bool, clang::NestedNameSpecifier*, bool, clang::Expr const*) + 1340
9  libclang-cpp.dylib       0x000000010931c289 clang::CodeGen::CodeGenFunction::EmitCXXMemberCallExpr(clang::CXXMemberCallExpr const*, clang::CodeGen::ReturnValueSlot) + 389
10 libclang-cpp.dylib       0x0000000109310c4c clang::CodeGen::CodeGenFunction::EmitCallExpr(clang::CallExpr const*, clang::CodeGen::ReturnValueSlot) + 148
11 libclang-cpp.dylib       0x000000010933d3fd (anonymous namespace)::ScalarExprEmitter::VisitCallExpr(clang::CallExpr const*) + 151
12 libclang-cpp.dylib       0x0000000109331c59 (anonymous namespace)::ScalarExprEmitter::Visit(clang::Expr*) + 43
13 libclang-cpp.dylib       0x000000010933a9ad clang::StmtVisitorBase<std::__1::add_pointer, (anonymous namespace)::ScalarExprEmitter, llvm::Value*>::Visit(clang::Stmt*) + 12523
14 libclang-cpp.dylib       0x0000000109331c59 (anonymous namespace)::ScalarExprEmitter::Visit(clang::Expr*) + 43
15 libclang-cpp.dylib       0x0000000109331c27 clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) + 55
16 libclang-cpp.dylib       0x00000001092fd1e7 clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*, clang::CodeGen::AggValueSlot, bool) + 219
17 libclang-cpp.dylib       0x00000001092fdd51 clang::CodeGen::CodeGenFunction::EmitAnyExprToTemp(clang::Expr const*) + 213
18 libclang-cpp.dylib       0x00000001092a553f clang::CodeGen::CodeGenFunction::EmitCallArg(clang::CodeGen::CallArgList&, clang::Expr const*, clang::QualType) + 1097
19 libclang-cpp.dylib       0x00000001092a4dd9 clang::CodeGen::CodeGenFunction::EmitCallArgs(clang::CodeGen::CallArgList&, clang::CodeGen::CodeGenFunction::PrototypeWrapper, llvm::iterator_range<clang::Stmt::CastIterator<clang::Expr, clang::Expr const* const, clang::Stmt const* const> >, clang::CodeGen::CodeGenFunction::AbstractCallee, unsigned int, clang::CodeGen::CodeGenFunction::EvaluationOrder) + 1555
20 libclang-cpp.dylib       0x000000010931bcb0 commonEmitCXXMemberOrOperatorCall(clang::CodeGen::CodeGenFunction&, clang::CXXMethodDecl const*, llvm::Value*, llvm::Value*, clang::QualType, clang::CallExpr const*, clang::CodeGen::CallArgList&, clang::CodeGen::CallArgList*) + 561
21 libclang-cpp.dylib       0x000000010931b90f clang::CodeGen::CodeGenFunction::EmitCXXMemberOrOperatorCall(clang::CXXMethodDecl const*, clang::CodeGen::CGCallee const&, clang::CodeGen::ReturnValueSlot, llvm::Value*, llvm::Value*, clang::QualType, clang::CallExpr const*, clang::CodeGen::CallArgList*) + 239
22 libclang-cpp.dylib       0x000000010931d966 clang::CodeGen::CodeGenFunction::EmitCXXMemberOrOperatorMemberCallExpr(clang::CallExpr const*, clang::CXXMethodDecl const*, clang::CodeGen::ReturnValueSlot, bool, clang::NestedNameSpecifier*, bool, clang::Expr const*) + 4688
23 libclang-cpp.dylib       0x000000010931c289 clang::CodeGen::CodeGenFunction::EmitCXXMemberCallExpr(clang::CXXMemberCallExpr const*, clang::CodeGen::ReturnValueSlot) + 389
24 libclang-cpp.dylib       0x0000000109310c4c clang::CodeGen::CodeGenFunction::EmitCallExpr(clang::CallExpr const*, clang::CodeGen::ReturnValueSlot) + 148
25 libclang-cpp.dylib       0x000000010933d3fd (anonymous namespace)::ScalarExprEmitter::VisitCallExpr(clang::CallExpr const*) + 151
26 libclang-cpp.dylib       0x0000000109331c59 (anonymous namespace)::ScalarExprEmitter::Visit(clang::Expr*) + 43
27 libclang-cpp.dylib       0x0000000109331c27 clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) + 55
28 libclang-cpp.dylib       0x00000001092fd1e7 clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*, clang::CodeGen::AggValueSlot, bool) + 219
29 libclang-cpp.dylib       0x00000001092fd102 clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*) + 90
30 libclang-cpp.dylib       0x00000001093f6310 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*, llvm::ArrayRef<clang::Attr const*>) + 240
31 libclang-cpp.dylib       0x00000001093fe44d clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) + 257
32 libclang-cpp.dylib       0x0000000109440c03 clang::CodeGen::CodeGenFunction::EmitFunctionBody(clang::Stmt const*) + 79
33 libclang-cpp.dylib       0x00000001094414d5 clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) + 1277
34 libclang-cpp.dylib       0x00000001094575c6 clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) + 274
35 libclang-cpp.dylib       0x0000000109452a33 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) + 429
36 libclang-cpp.dylib       0x0000000109459ae5 clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) + 205
37 libclang-cpp.dylib       0x00000001094b929c (anonymous namespace)::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef) + 118
38 libclang-cpp.dylib       0x000000010943721e clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef) + 178
39 libclang-cpp.dylib       0x000000010870a2c9 clang::ParseAST(clang::Sema&, bool, bool) + 412
40 libclang-cpp.dylib       0x00000001099d8aa9 clang::FrontendAction::Execute() + 77
41 libclang-cpp.dylib       0x00000001099761b4 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 472
42 libclang-cpp.dylib       0x0000000109a2dda3 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 515
43 c++                      0x00000001085e5175 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 1685
44 c++                      0x00000001085e390a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) + 263
45 libclang-cpp.dylib       0x000000010975267d void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, bool*) const::$_1>(long) + 23
46 libLLVM.dylib            0x000000010db4793c llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) + 218
47 libclang-cpp.dylib       0x0000000109751d34 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, bool*) const + 246
48 libclang-cpp.dylib       0x000000010972e84f clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const + 525
49 libclang-cpp.dylib       0x000000010972e9d3 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*> >&) const + 95
50 libclang-cpp.dylib       0x000000010973dfb0 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*> >&) + 212
51 c++                      0x00000001085e311c main + 7324
52 libdyld.dylib            0x00007fff6ac8a3d5 start + 1
53 libdyld.dylib            0x0000000000000008 start + 18446603338724629556
clang-14: error: clang frontend command failed with exit code 139 (use -v to see invocation)
Homebrew clang version 14.0.6
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Users/mjoosten/.brew/opt/llvm/bin
clang-14: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-14: note: diagnostic msg: /var/folders/zz/zyxvpxvq6csfxvn_n000bhch002w34/T/main-e26f9e.cpp
clang-14: note: diagnostic msg: /var/folders/zz/zyxvpxvq6csfxvn_n000bhch002w34/T/main-e26f9e.sh
clang-14: note: diagnostic msg: Crash backtrace is located in
clang-14: note: diagnostic msg: /Users/mjoosten/Library/Logs/DiagnosticReports/clang-14_<YYYY-MM-DD-HHMMSS>_<hostname>.crash
clang-14: note: diagnostic msg: (choose the .crash file that corresponds to your crash)
clang-14: note: diagnostic msg: 

********************
make: *** [main.o] Error 139
[main.zip](https://github.com/llvm/llvm-project/files/9315021/main.zip)



</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztW1tz4jgW_jXkRQVly_eHPBCSdLKVTLKB6e7ZF0q2ZPCMsbyyTYf-9XtkyWATSAwztd27NRSdtnX9zv3IPoScbi4HrqG_xvXAGJdslaekZGhgTcpNzjKyYmg2sG5Ud1GKKirRFSlghHelGgdGkGQl_A2JGGB_gAMU8awo5QgkWFmJDBkD6wrur_UMuLC2s_vve81EsmZ0YI1RXoVpEtVIYIoceQBQzDkAgmuUw8LX7dGwBny3iCXoFtz8A7hq-RVJMk1we-8tyokcJkkI6N582TRS6OTm287tjl2pRAN8BV80ZKukHKbpeoWGX6OUZAs0pElBwpTVrcOcFAUr0DBCEtsoynM05Oqaq6WeH27G0xtUVCEshQgKqwUQnXNRopKjZVnmhWQNvoXvIimXVTiK-Apu7viKhYJ9g8ulvhxGXDC4T4qigl1JRlGSRWlFGSqXDEWCFEsUkuiPUpAIBk5QDlsJHjFASVHBK6Ga5UxAzqMEVIAiUWWoiESSlyMFelrCIohWq1xiq5sM6AqeBV8IskJELKoVy0oJHf2FzDLlJiBHxmOpYDkRBROIlIgBYB6jOEmZGolHWh_kMoDCNOGPI-E8PHx-RPcvaMEyJkiZ8EzOpAwQ6dsB9pQmeWot6-han_QaQErEgcsxF--utOMb-gay5FWJis0q5CmS9lXAeJ9lRSUY2vAKLcmaoZozalDyHYhNMtkn0PN4dodgu4KVtXBZtk4EzyTX0ZoIBLoqKZ1Pf3u8enq4_9fNy1xOgWapVzmXRggXSVnreyNEhNIklPNGdANXqPUxXg31MQ0assA2jRqbsttiU6iLZwEL12TOlI75u0GCfJtz8ByMgP66Us-kPUpjBe2wLS3i3hB85luHIExSRrIqf8qmySIjKUCosgIuQZFTni2aDU3f1qrSd0fbCyJTyohkPNuseFUoseU1oYHeXRrZC4v4monNhGcley3vwZeq3juwrJTVY5QjlFw4CC9olK8_ujCMUGd7xQC1p2j209RbjlrfrtcH5oHHn0uXDzq80lup9b04jl3CPCd0KJoDVPAeoMByFSC6XsR5b5E3n71FQBC26xqWZfkexq7pOiZWy7r1srWrGILpdRjQoj2wDMuWQU4O1FIAawTj7NzcVlkkrVI13oAzepZWwMQXMMVxCrySxgNsaq1z85oLFTwHeCxldWyPh88krZiMZ_dZzD8YPLsaj8eR9LrbwUoqFriWmnKvP-VOaP8fUO4ZrqLc70u5GUUOPp3yydevj2wVMvEknnLpvLlQ9xOSppLoLhua1qOskMuBJ6fX4PZ78eulzmhqpk1TXjuAkPN0b8ovDGyJ_gLuZZqzKIkTacDjI4P3ADYWbutsJejPUuyfYUZblh5h4X73eWzSFuJrlyPDTz-ijMiOziDqPHXoQYJp-5oEsycJFrVi-lHgmUYE8g4JTsIH41bNn5PiBGI0Qke7IRP3RWhGTvBnEL51Pi0829zA6guHBIS25TItV2W9Dxf6zFGUVHXN56a6IJTOc-UXpVRPJgbm7LKRWuqShOZkc4BKCarNdezghlD75-K70x8O9k63tR3AD2KQ8n0KnKMTGNPtBw7H1GRngBtnmx7Iji07XiwOuHpFATYbX-b1JoE65tkkzPgMTvXvEtIAawTv9wRGHMeKz3OyY7HYc0udqWrEQyIBuu_HvU7fPyuSzjY521qX0WTUZtCXKJvSc8KhglycS9XHu8Axu-TyqcwXQfJ83_UkpUpr5gKWlK5u3-VoCEV5r0d2xyhtP87o5mKy72D3R8hHQOD-TqVuHBby-UTNR8Y6ByR9YDpNJGuwv_o4_iSo5FUT4xoHgntnEmEUGkDbasWzI6mkxPye3PcAvpX90XTyQGg52nrQDLr7nJLHnKCt7ZFbd-K4Op3AfRMeMwyMc9xJL4GcnLFPPilVbAa_y4ID6f3PIrqdf7d04MF98zuTBq7792HraMS0XV8n9bhvjvq_dNjCffPRn_ewhXvnsD_qsIV7JrL_paQf90xKf0jSj_smpj9v0o_7pqFAgnHGg677RcYFox-SoR8362dFVt9kKHbB2M-Qen3m3T8FH8l0xkKQzQuLu_npuCxb-GWCqTnbPO-y-qYZMbNteoa34qucVxmVyL-o1zjTiMtA3U38dqM6mcOBmPKO9mjanOZ1QM-IbdtGZFin09a0XHG6eVdO-rGtVmarZ9SzbdOmzmmw9Es2Jju7kD6lPCSpTAa6erPLrz_I65qB8mF0S0bN8xivYXrP8Gc7nhN9mCY9clqlbMdyRUUD5ZrFSZYo9H1oVe27FFLri6dfblk9w57tYGJ9qC-Hof81kO3mZZLVMw7aTkDYh7q0D3nG8we2ZhpWG65q2bHQ0LHG6hkI7TDAQfTh-0EFSyXD-y8G3wf3SfAql-6wUVBT5zZWz2hoWx42WZtjVyT6g2V0AqpfrZoc4SwsXoOlX1jzPYPgqJP_Psu3-ePpbM_tsBXZc5ztcGo37wrtnoEroD4hnX1vhXxLm9Fx2xW-sqgqWVNMIj2d9gV2z-ASeK65_2ZulScpE_fgZkgWsc5OevMO6XvAdp7J9hqie0YDgiklVvcUU2-7w7TmEXkL4Q3m1qnebN4gW9sSj4OfttQd5pge2GxkznWxzuFovyR7IR68eKcNGtY8oe082vUbQPYpgKzAIKhhx8Sc1crVgjVdQeb-mUVbcz2AbisZ7Ors2e7pdz0Hux6taWl5yFgHg7mo2VH3NqVJ-n0CZM-pLOWZx1k3PaKy2ElbMtADElyBPe-r9UG27xqfcrk9STuN01Ik2aIeun2y9_Y1SkiKJJoX9VjNrMMDZc-8FCSRZUJq3LE1gVapnupJpRqoALQOCONtnZuaM8C2nH4jiW3VVTSvWGy3f9WHFbVkc6jAQ_W8VNmUxCzddPj7viy3pwLtPu2ewcZzTGp13MvfctenAF1IYPcMih5mvh0f5WTtAMmbyNCwt-Mt9ybKAceeGb4zdKz9yY4mBzeereeZEWgKqHUqTf_gYXGcIOiVjxE7BL3nJd9KMyeJ0EWYJzCjEfkeTwLNEqdn3PcsGofGsV2vW9ed0HggJh5j5Q9iiXIfOiGQbwdPCH2mqWotVYZjYX1ocOq0AjhJj_lGVRMW-cSC0xykBkIJRT_JcqyP5rc-fnt-uxTMdnHgONqalYBNG9iBmBDSI4wVv1Cs06T6zYzkU0wgZaF1hSVir0mpajNNq35mVhUMDdey9LFgDCWtvEcfP5q6Wr06SKGQpZymPTJGGsyMiAWTTh-9-u7ctYckz1M2pER8SzLTH3kj_SRithSMULSC_WWej3JeJK-qq86oUsB5ndS0DPDtrwXsBf-vfue8AIrgcqQrfHkOgr-tdQvfhpA4vWFKxkuZUSKakEUG0xOQbLGoV1YVzPhPfFuV0rpeeTybjSd3aHZ3g26fHh6evtz_8gnd3j_cTNHsqW6--vUTerl5fnqZSS1Wcw9VG_uF1OKjFcfbAYKhOhhALym3S_ZkAb5dy3B0G_OUKiZ__y7_bF7X-ev6325UxK_rbJ6BPobLaGkY-Jtlw4CZFAcYyJBhNw5YXQD8I_YtlqdsO-kWeqOk2LLuRNU5qJQPSSiI2MgrLl9z315vJ77UleuyrdlgDu7tN_gMHx-H19fDu7vHx-kUvJdsX8IceUKG21FdnH4aNj9aAiZV267m1wXgcE-kzQsBR2-e0UIae10zrfZoDP0k6_mLbGhF_mAKvG5GA-dKV7g71-hGejbpqfR-uu97kkMvEPzOzwG0b1CF9IL_DnFH6h3wQ0ojsEzHwKbWqnrBhg3tvxfs0gT_iwPbcYwLemnRwArIRZmUKbsENCpAAdDbrc-t2f5tyTK0_cmI_r0FajJfVMmy_m13_WOVbR8pEGUxqdJy-6uBi0qklyeTqn70ABeOZ5ruxfLS9lzPN4jpB57nUIIt3_Zjzyc0JKHvh_giJSFLC0kXkHSRXGIDY8M34Z_j2MHIM0JqegZEOBZgx_MHtsGAe-lIbjziYnEhLmsMYQVWYBspZEfFrhO8mSxaYM36pCqXXFw2dmTjixrxZQ33PyZXkWU">