[clang] 6e47330 - [clang][Interp] Ignore FunctionDecls in compound statements
Timm Bäder via cfe-commits
cfe-commits at lists.llvm.org
Mon Apr 29 05:34:18 PDT 2024
Author: Timm Bäder
Date: 2024-04-29T14:34:03+02:00
New Revision: 6e473307ab74263e3b72e67b592579e36cee5b6b
URL: https://github.com/llvm/llvm-project/commit/6e473307ab74263e3b72e67b592579e36cee5b6b
DIFF: https://github.com/llvm/llvm-project/commit/6e473307ab74263e3b72e67b592579e36cee5b6b.diff
LOG: [clang][Interp] Ignore FunctionDecls in compound statements
Added:
Modified:
clang/lib/AST/Interp/ByteCodeStmtGen.cpp
clang/test/AST/Interp/functions.cpp
Removed:
################################################################################
diff --git a/clang/lib/AST/Interp/ByteCodeStmtGen.cpp b/clang/lib/AST/Interp/ByteCodeStmtGen.cpp
index ec2fe39a8aeae9..ff91baf595f1b1 100644
--- a/clang/lib/AST/Interp/ByteCodeStmtGen.cpp
+++ b/clang/lib/AST/Interp/ByteCodeStmtGen.cpp
@@ -332,7 +332,8 @@ bool ByteCodeStmtGen<Emitter>::visitCompoundStmt(
template <class Emitter>
bool ByteCodeStmtGen<Emitter>::visitDeclStmt(const DeclStmt *DS) {
for (auto *D : DS->decls()) {
- if (isa<StaticAssertDecl, TagDecl, TypedefNameDecl, UsingEnumDecl>(D))
+ if (isa<StaticAssertDecl, TagDecl, TypedefNameDecl, UsingEnumDecl,
+ FunctionDecl>(D))
continue;
const auto *VD = dyn_cast<VarDecl>(D);
diff --git a/clang/test/AST/Interp/functions.cpp b/clang/test/AST/Interp/functions.cpp
index f9bb5d53634e0b..a4ae73e423e74c 100644
--- a/clang/test/AST/Interp/functions.cpp
+++ b/clang/test/AST/Interp/functions.cpp
@@ -601,3 +601,13 @@ namespace FromIntegral {
// both-warning {{variable length arrays}}
#endif
}
+
+namespace {
+ template <typename T> using id = T;
+ template <typename T>
+ constexpr void g() {
+ constexpr id<void (T)> f;
+ }
+
+ static_assert((g<int>(), true), "");
+}
More information about the cfe-commits
mailing list