diff options
Diffstat (limited to 'clang/lib/AST/ByteCode/EvalEmitter.cpp')
-rw-r--r-- | clang/lib/AST/ByteCode/EvalEmitter.cpp | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/clang/lib/AST/ByteCode/EvalEmitter.cpp b/clang/lib/AST/ByteCode/EvalEmitter.cpp index 976b7c0..68f46c1 100644 --- a/clang/lib/AST/ByteCode/EvalEmitter.cpp +++ b/clang/lib/AST/ByteCode/EvalEmitter.cpp @@ -98,10 +98,7 @@ bool EvalEmitter::interpretCall(const FunctionDecl *FD, const Expr *E) { this->Params.insert({PD, {0, false}}); } - if (!this->visit(E)) - return false; - PrimType T = Ctx.classify(E).value_or(PT_Ptr); - return this->emitPop(T, E); + return this->visitExpr(E, /*DestroyToplevelScope=*/false); } void EvalEmitter::emitLabel(LabelTy Label) { CurrentLabel = Label; } @@ -292,7 +289,7 @@ bool EvalEmitter::emitGetLocal(uint32_t I, const SourceInfo &Info) { Block *B = getLocal(I); - if (!CheckLocalLoad(S, OpPC, Pointer(B))) + if (!CheckLocalLoad(S, OpPC, B)) return false; S.Stk.push<T>(*reinterpret_cast<T *>(B->data())); |