File tree Expand file tree Collapse file tree 3 files changed +30
-1
lines changed Expand file tree Collapse file tree 3 files changed +30
-1
lines changed Original file line number Diff line number Diff line change @@ -821,6 +821,7 @@ Miscellaneous Clang Crashes Fixed
821821^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
822822
823823- Fixed crash when ``-print-stats`` is enabled in compiling IR files. (#GH131608)
824+ - Fix code completion crash involving PCH serialzied templates. (#GH139019)
824825
825826OpenACC Specific Changes
826827------------------------
Original file line number Diff line number Diff line change @@ -65,7 +65,9 @@ void TemplateArgumentHasher::AddTemplateArgument(TemplateArgument TA) {
6565
6666 switch (Kind) {
6767 case TemplateArgument::Null:
68- llvm_unreachable("Expected valid TemplateArgument");
68+ // These can occur in incomplete substitutions performed with code
69+ // completion (see PartialOverloading).
70+ break;
6971 case TemplateArgument::Type:
7072 AddQualType(TA.getAsType());
7173 break;
Original file line number Diff line number Diff line change 1+ // RUN: rm -rf %t
2+ // RUN: mkdir %t
3+ // RUN: split-file %s %t
4+ //
5+ // RUN: %clang_cc1 -std=c++20 %t/test.hpp -emit-pch -o %t/1.pch
6+ // RUN: %clang_cc1 -std=c++20 %t/test.cpp -include-pch %t/1.pch -code-completion-at=%t/test.cpp:7:17
7+
8+ //--- test.hpp
9+ #pragma once
10+ class provider_t
11+ {
12+ public:
13+ template<class T>
14+ void emit(T *data)
15+ {}
16+ };
17+
18+ //--- test.cpp
19+ #include "test.hpp"
20+
21+ void test()
22+ {
23+ provider_t *focus;
24+ void *data;
25+ focus->emit(&data);
26+ }
You can’t perform that action at this time.
0 commit comments