[PATCH] D133948: [clang][C++20] Fix clang/clangd assert/crash after compilation errors
Dmitry Polukhin via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sat Sep 17 07:54:07 PDT 2022
This revision was automatically updated to reflect the committed changes.
Closed by commit rG133b6d7db90d: [clang][C++20] Fix clang/clangd assert/crash after compilation errors (authored by DmitryPolukhin).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D133948/new/
https://reviews.llvm.org/D133948
Files:
clang/lib/Sema/SemaExpr.cpp
clang/test/SemaCXX/remove-nested-immediate-invocation-crash.cpp
Index: clang/test/SemaCXX/remove-nested-immediate-invocation-crash.cpp
===================================================================
--- /dev/null
+++ clang/test/SemaCXX/remove-nested-immediate-invocation-crash.cpp
@@ -0,0 +1,11 @@
+// RUN: not %clang_cc1 -fsyntax-only -verify -std=gnu++20 -ferror-limit 19 %s
+// Creduced test case for the crash in RemoveNestedImmediateInvocation after compliation errros.
+
+a, class b { template < typename c> consteval b(c
+} template <typename...> using d = b;
+auto e(d<>) -> int:;
+}
+f
+}
+g() {
+ auto h = "":(::i(e(h))
Index: clang/lib/Sema/SemaExpr.cpp
===================================================================
--- clang/lib/Sema/SemaExpr.cpp
+++ clang/lib/Sema/SemaExpr.cpp
@@ -17624,9 +17624,13 @@
Transformer.AllowSkippingFirstCXXConstructExpr = false;
ExprResult Res = Transformer.TransformExpr(It->getPointer()->getSubExpr());
- assert(Res.isUsable());
- Res = SemaRef.MaybeCreateExprWithCleanups(Res);
- It->getPointer()->setSubExpr(Res.get());
+ // The result may not be usable in case of previous compilation errors.
+ // In this case evaluation of the expression may result in crash so just
+ // don't do anything further with the result.
+ if (Res.isUsable()) {
+ Res = SemaRef.MaybeCreateExprWithCleanups(Res);
+ It->getPointer()->setSubExpr(Res.get());
+ }
}
static void
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D133948.461007.patch
Type: text/x-patch
Size: 1438 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20220917/4e6f2e4b/attachment.bin>
More information about the cfe-commits
mailing list