https://github.com/c8ef created https://github.com/llvm/llvm-project/pull/94299
close: #93650 >From 0150bd8d4d94cc25c194722471bac8a4485f6e6e Mon Sep 17 00:00:00 2001 From: c8ef <c...@outlook.com> Date: Tue, 4 Jun 2024 00:59:38 +0000 Subject: [PATCH] fix typeid with pack index --- clang/lib/AST/Expr.cpp | 4 +--- clang/test/SemaCXX/GH93650.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 clang/test/SemaCXX/GH93650.cpp diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp index ac0b1b38f0162f..f9d634550dc061 100644 --- a/clang/lib/AST/Expr.cpp +++ b/clang/lib/AST/Expr.cpp @@ -3618,12 +3618,10 @@ bool Expr::HasSideEffects(const ASTContext &Ctx, case ConceptSpecializationExprClass: case RequiresExprClass: case SYCLUniqueStableNameExprClass: + case PackIndexingExprClass: // These never have a side-effect. return false; - case PackIndexingExprClass: - return cast<PackIndexingExpr>(this)->getSelectedExpr()->HasSideEffects( - Ctx, IncludePossibleEffects); case ConstantExprClass: // FIXME: Move this into the "return false;" block above. return cast<ConstantExpr>(this)->getSubExpr()->HasSideEffects( diff --git a/clang/test/SemaCXX/GH93650.cpp b/clang/test/SemaCXX/GH93650.cpp new file mode 100644 index 00000000000000..cc82bd084248e6 --- /dev/null +++ b/clang/test/SemaCXX/GH93650.cpp @@ -0,0 +1,12 @@ +// RUN: %clang_cc1 -std=c++2c -fsyntax-only -verify %s +// expected-no-diagnostics + +namespace std { +struct type_info { + const char *name; +}; +} // namespace std + +namespace GH93650_bug { +auto func(auto... inputArgs) { return typeid(inputArgs...[0]); } +} // namespace GH93650_bug _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits