[clang] [clang][bytecode] Don't diagnose const assignments... (PR #192593)
Timm Baeder via cfe-commits
cfe-commits at lists.llvm.org
Thu Apr 16 22:02:17 PDT 2026
https://github.com/tbaederr created https://github.com/llvm/llvm-project/pull/192593
... when we're in CPCE mode.
>From 68781e1e325e847dce870dcf81cd4351e6e08444 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timm=20B=C3=A4der?= <tbaeder at redhat.com>
Date: Fri, 17 Apr 2026 07:01:19 +0200
Subject: [PATCH] [clang][bytecode] Don't diagnose const assignments...
... when we're in CPCE mode.
---
clang/lib/AST/ByteCode/Interp.cpp | 8 +++++---
clang/test/AST/ByteCode/cxx20.cpp | 9 +++++++++
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/clang/lib/AST/ByteCode/Interp.cpp b/clang/lib/AST/ByteCode/Interp.cpp
index 17d194355208d..f5fb9f6b7bbfa 100644
--- a/clang/lib/AST/ByteCode/Interp.cpp
+++ b/clang/lib/AST/ByteCode/Interp.cpp
@@ -579,9 +579,11 @@ bool CheckConst(InterpState &S, CodePtr OpPC, const Pointer &Ptr) {
if (llvm::is_contained(S.InitializingBlocks, Ptr.block()))
return true;
- const QualType Ty = Ptr.getType();
- const SourceInfo &Loc = S.Current->getSource(OpPC);
- S.FFDiag(Loc, diag::note_constexpr_modify_const_type) << Ty;
+ if (!S.checkingPotentialConstantExpression()) {
+ const QualType Ty = Ptr.getType();
+ const SourceInfo &Loc = S.Current->getSource(OpPC);
+ S.FFDiag(Loc, diag::note_constexpr_modify_const_type) << Ty;
+ }
return false;
}
diff --git a/clang/test/AST/ByteCode/cxx20.cpp b/clang/test/AST/ByteCode/cxx20.cpp
index 4c4624d7505e2..43115416451ec 100644
--- a/clang/test/AST/ByteCode/cxx20.cpp
+++ b/clang/test/AST/ByteCode/cxx20.cpp
@@ -1345,3 +1345,12 @@ namespace ExpandOnOPTEPointers {
}
static_assert(test());
}
+
+namespace ConstIntPotentialConstantExpr {
+ /// NO error about a constexpr function that's never a constant expression.
+ constexpr int Const() {
+ const int a = 10; // both-note {{declared const here}}
+ a = 20; // both-error {{cannot assign to variable 'a' with const-qualified type 'const int'}}
+ return 1;
+ }
+}
More information about the cfe-commits
mailing list