[clang] [clang][bytecode] Only override constant-context state if we have an EvalEmitter (PR #211475)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Jul 23 00:05:19 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Timm Baeder (tbaederr)
<details>
<summary>Changes</summary>
This does not make sense when emitting bytecode, as the bytecode would just contain a `PushCC`/`PopCC` pair with nothing in between.
---
Full diff: https://github.com/llvm/llvm-project/pull/211475.diff
1 Files Affected:
- (modified) clang/lib/AST/ByteCode/Compiler.cpp (+8-4)
``````````diff
diff --git a/clang/lib/AST/ByteCode/Compiler.cpp b/clang/lib/AST/ByteCode/Compiler.cpp
index 35667a9132680..337f65d02ef50 100644
--- a/clang/lib/AST/ByteCode/Compiler.cpp
+++ b/clang/lib/AST/ByteCode/Compiler.cpp
@@ -8276,12 +8276,16 @@ bool Compiler<Emitter>::visitDeclRef(const ValueDecl *D, const Expr *E) {
bool IsConstexprUnknown = true) -> bool {
llvm::SaveAndRestore CURS(this->VariablesAreConstexprUnknown,
IsConstexprUnknown);
- if (!this->emitPushCC(VD->hasConstantInitialization(), E))
- return false;
+ if constexpr (std::is_same_v<Emitter, EvalEmitter>) {
+ if (!this->emitPushCC(VD->hasConstantInitialization(), E))
+ return false;
+ }
auto VarState = this->visitDecl(VD);
- if (!this->emitPopCC(E))
- return false;
+ if constexpr (std::is_same_v<Emitter, EvalEmitter>) {
+ if (!this->emitPopCC(E))
+ return false;
+ }
if (VarState.notCreated())
return true;
``````````
</details>
https://github.com/llvm/llvm-project/pull/211475
More information about the cfe-commits
mailing list