[clang] 4447461 - [clang][Interp] Don't try to dereference a null type
Timm Bäder via cfe-commits
cfe-commits at lists.llvm.org
Mon May 27 04:53:03 PDT 2024
Author: Timm Bäder
Date: 2024-05-27T12:59:25+02:00
New Revision: 4447461bc4802d4ead02db61c5276c142df3fd0c
URL: https://github.com/llvm/llvm-project/commit/4447461bc4802d4ead02db61c5276c142df3fd0c
DIFF: https://github.com/llvm/llvm-project/commit/4447461bc4802d4ead02db61c5276c142df3fd0c.diff
LOG: [clang][Interp] Don't try to dereference a null type
Added:
Modified:
clang/lib/AST/Interp/ByteCodeExprGen.cpp
clang/test/SemaCXX/recovery-expr-type.cpp
Removed:
################################################################################
diff --git a/clang/lib/AST/Interp/ByteCodeExprGen.cpp b/clang/lib/AST/Interp/ByteCodeExprGen.cpp
index 7aa2105942ecb..737bef85e2fc8 100644
--- a/clang/lib/AST/Interp/ByteCodeExprGen.cpp
+++ b/clang/lib/AST/Interp/ByteCodeExprGen.cpp
@@ -2672,6 +2672,9 @@ bool ByteCodeExprGen<Emitter>::delegate(const Expr *E) {
}
template <class Emitter> bool ByteCodeExprGen<Emitter>::visit(const Expr *E) {
+ if (E->getType().isNull())
+ return false;
+
if (E->getType()->isVoidType())
return this->discard(E);
diff --git a/clang/test/SemaCXX/recovery-expr-type.cpp b/clang/test/SemaCXX/recovery-expr-type.cpp
index 479039f284799..5a42a11b82da5 100644
--- a/clang/test/SemaCXX/recovery-expr-type.cpp
+++ b/clang/test/SemaCXX/recovery-expr-type.cpp
@@ -1,3 +1,5 @@
+// RUN: %clang_cc1 -triple=x86_64-unknown-unknown -o - %s -std=gnu++17 -fsyntax-only -verify -fexperimental-new-constant-interpreter
+// RUN: %clang_cc1 -triple=x86_64-unknown-unknown -o - %s -std=gnu++20 -fsyntax-only -verify -fexperimental-new-constant-interpreter
// RUN: %clang_cc1 -triple=x86_64-unknown-unknown -o - %s -std=gnu++17 -fsyntax-only -verify
// RUN: %clang_cc1 -triple=x86_64-unknown-unknown -o - %s -std=gnu++20 -fsyntax-only -verify
More information about the cfe-commits
mailing list