llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Timm Baeder (tbaederr) <details> <summary>Changes</summary> Otherwise, we have to look at the FunctionDecl at every function call. --- Full diff: https://github.com/llvm/llvm-project/pull/139671.diff 3 Files Affected: - (modified) clang/lib/AST/ByteCode/Function.cpp (+1) - (modified) clang/lib/AST/ByteCode/Function.h (+2) - (modified) clang/lib/AST/ByteCode/Interp.cpp (+1-1) ``````````diff diff --git a/clang/lib/AST/ByteCode/Function.cpp b/clang/lib/AST/ByteCode/Function.cpp index 8a4e089d9ecd0..f790d13738953 100644 --- a/clang/lib/AST/ByteCode/Function.cpp +++ b/clang/lib/AST/ByteCode/Function.cpp @@ -26,6 +26,7 @@ Function::Function(Program &P, FunctionDeclTy Source, unsigned ArgSize, HasRVO(HasRVO) { if (const auto *F = dyn_cast<const FunctionDecl *>(Source)) { Variadic = F->isVariadic(); + Immediate = F->isImmediateFunction(); if (const auto *CD = dyn_cast<CXXConstructorDecl>(F)) { Virtual = CD->isVirtual(); Kind = FunctionKind::Ctor; diff --git a/clang/lib/AST/ByteCode/Function.h b/clang/lib/AST/ByteCode/Function.h index 436574dd3a4c7..c21ac441ad5d5 100644 --- a/clang/lib/AST/ByteCode/Function.h +++ b/clang/lib/AST/ByteCode/Function.h @@ -155,6 +155,7 @@ class Function final { /// Checks if the function is virtual. bool isVirtual() const { return Virtual; }; + bool isImmediate() const { return Immediate; } /// Checks if the function is a constructor. bool isConstructor() const { return Kind == FunctionKind::Ctor; } @@ -292,6 +293,7 @@ class Function final { bool Defined = false; bool Variadic = false; bool Virtual = false; + bool Immediate = false; public: /// Dumps the disassembled bytecode to \c llvm::errs(). diff --git a/clang/lib/AST/ByteCode/Interp.cpp b/clang/lib/AST/ByteCode/Interp.cpp index 43f8d156589b6..a13b56c82cb44 100644 --- a/clang/lib/AST/ByteCode/Interp.cpp +++ b/clang/lib/AST/ByteCode/Interp.cpp @@ -1502,7 +1502,7 @@ bool Call(InterpState &S, CodePtr OpPC, const Function *Func, InterpFrame *FrameBefore = S.Current; S.Current = NewFrame.get(); - InterpStateCCOverride CCOverride(S, Func->getDecl()->isImmediateFunction()); + InterpStateCCOverride CCOverride(S, Func->isImmediate()); // Note that we cannot assert(CallResult.hasValue()) here since // Ret() above only sets the APValue if the curent frame doesn't // have a caller set. `````````` </details> https://github.com/llvm/llvm-project/pull/139671 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits