https://github.com/tbaederr created https://github.com/llvm/llvm-project/pull/123523
None >From f5544cfbc4a3223d76f1a388bd4c20d78f14da12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timm=20B=C3=A4der?= <tbae...@redhat.com> Date: Sun, 19 Jan 2025 19:48:31 +0100 Subject: [PATCH] [clang][bytecode] Fix discarding DerivedToBase casts --- clang/lib/AST/ByteCode/Compiler.cpp | 6 ++++++ clang/test/AST/ByteCode/records.cpp | 15 +++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/clang/lib/AST/ByteCode/Compiler.cpp b/clang/lib/AST/ByteCode/Compiler.cpp index 7afae97f308ad5..750516efa1a3e1 100644 --- a/clang/lib/AST/ByteCode/Compiler.cpp +++ b/clang/lib/AST/ByteCode/Compiler.cpp @@ -253,6 +253,9 @@ bool Compiler<Emitter>::VisitCastExpr(const CastExpr *CE) { case CK_UncheckedDerivedToBase: case CK_DerivedToBase: { + if (DiscardResult) + return this->discard(SubExpr); + if (!this->delegate(SubExpr)) return false; @@ -282,6 +285,9 @@ bool Compiler<Emitter>::VisitCastExpr(const CastExpr *CE) { } case CK_BaseToDerived: { + if (DiscardResult) + return this->discard(SubExpr); + if (!this->delegate(SubExpr)) return false; diff --git a/clang/test/AST/ByteCode/records.cpp b/clang/test/AST/ByteCode/records.cpp index d329219264d893..b558ee9abec780 100644 --- a/clang/test/AST/ByteCode/records.cpp +++ b/clang/test/AST/ByteCode/records.cpp @@ -1684,3 +1684,18 @@ namespace ExplicitThisInTemporary { constexpr bool g(B b) { return &b == b.p; } static_assert(g({}), ""); } + +namespace IgnoredMemberExpr { + class A { + public: + int a; + }; + class B : public A { + public: + constexpr int foo() { + a; + return 0; + } + }; + static_assert(B{}.foo() == 0, ""); +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits