[clang] [clang][bytecode] Use visitExpr() in interpretCall (PR #152857)
via cfe-commits
cfe-commits at lists.llvm.org
Sat Aug 9 06:50:25 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Timm Baeder (tbaederr)
<details>
<summary>Changes</summary>
This is the correct function to use and it will create a variable scope.
Fixes #<!-- -->152822
---
Full diff: https://github.com/llvm/llvm-project/pull/152857.diff
2 Files Affected:
- (modified) clang/lib/AST/ByteCode/EvalEmitter.cpp (+1-1)
- (modified) clang/test/AST/ByteCode/functions.cpp (+5)
``````````diff
diff --git a/clang/lib/AST/ByteCode/EvalEmitter.cpp b/clang/lib/AST/ByteCode/EvalEmitter.cpp
index 9ed61c7b0be78..ecd42012987d4 100644
--- a/clang/lib/AST/ByteCode/EvalEmitter.cpp
+++ b/clang/lib/AST/ByteCode/EvalEmitter.cpp
@@ -98,7 +98,7 @@ bool EvalEmitter::interpretCall(const FunctionDecl *FD, const Expr *E) {
this->Params.insert({PD, {0, false}});
}
- if (!this->visit(E))
+ if (!this->visitExpr(E, /*DestroyToplevelScope=*/true))
return false;
PrimType T = Ctx.classify(E).value_or(PT_Ptr);
return this->emitPop(T, E);
diff --git a/clang/test/AST/ByteCode/functions.cpp b/clang/test/AST/ByteCode/functions.cpp
index 36e7bb32b2d86..0a38122df4fc8 100644
--- a/clang/test/AST/ByteCode/functions.cpp
+++ b/clang/test/AST/ByteCode/functions.cpp
@@ -708,3 +708,8 @@ namespace NoDiags {
return true;
}
}
+
+namespace EnableIfWithTemporary {
+ struct A { ~A(); };
+ int &h() __attribute__((enable_if((A(), true), "")));
+}
``````````
</details>
https://github.com/llvm/llvm-project/pull/152857
More information about the cfe-commits
mailing list