reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
71 if (S.Stk.pop<bool>()) 79 if (!S.Stk.pop<bool>()) 102 return ReturnValue<T>(S.Stk.pop<T>(), Result); 192 const auto &Ptr = S.Stk.pop<Pointer>(); 202 S.Stk.push<Pointer>(reinterpret_cast<Block *>(It->second.get())); 216 S.Stk.push<T>(*reinterpret_cast<T *>(B + 1)); 230 *reinterpret_cast<T *>(B + 1) = S.Stk.pop<T>();tools/clang/lib/AST/Interp/Interp.cpp
36 const T &Ret = S.Stk.pop<T>(); 38 assert(S.Current->getFrameOffset() == S.Stk.size() && "Invalid frame"); 46 S.Stk.push<T>(Ret); 59 assert(S.Current->getFrameOffset() == S.Stk.size() && "Invalid frame"); 88 if (S.Stk.pop<bool>()) { 95 if (!S.Stk.pop<bool>()) {tools/clang/lib/AST/Interp/Interp.h
107 S.Stk.push<T>(Result); 112 S.Stk.push<T>(Result); 133 const T &RHS = S.Stk.pop<T>(); 134 const T &LHS = S.Stk.pop<T>(); 141 const T &RHS = S.Stk.pop<T>(); 142 const T &LHS = S.Stk.pop<T>(); 149 const T &RHS = S.Stk.pop<T>(); 150 const T &LHS = S.Stk.pop<T>(); 164 const T &RHS = S.Stk.pop<T>(); 165 const T &LHS = S.Stk.pop<T>(); 166 S.Stk.push<BoolT>(BoolT::from(Fn(LHS.compare(RHS)))); 178 const Pointer &RHS = S.Stk.pop<Pointer>(); 179 const Pointer &LHS = S.Stk.pop<Pointer>(); 188 S.Stk.push<BoolT>(BoolT::from(Fn(Compare(VL, VR)))); 196 const Pointer &RHS = S.Stk.pop<Pointer>(); 197 const Pointer &LHS = S.Stk.pop<Pointer>(); 201 S.Stk.push<BoolT>(BoolT::from(Fn(ComparisonCategoryResult::Equal))); 203 S.Stk.push<BoolT>(BoolT::from(Fn(ComparisonCategoryResult::Nonequal))); 208 S.Stk.push<BoolT>(BoolT::from(Fn(ComparisonCategoryResult::Unordered))); 213 S.Stk.push<BoolT>(BoolT::from(Fn(Compare(VL, VR)))); 268 const T RHS = S.Stk.pop<T>(); 269 const T LHS = S.Stk.pop<T>(); 270 const T Value = S.Stk.pop<T>(); 272 S.Stk.push<bool>(LHS <= Value && Value <= RHS); 282 S.Stk.push<T>(S.Stk.peek<T>()); 282 S.Stk.push<T>(S.Stk.peek<T>()); 288 S.Stk.pop<T>(); 298 S.Stk.push<T>(Arg); 308 S.Stk.push<T>(S.Current->getLocal<T>(I)); 314 S.Current->setLocal<T>(I, S.Stk.pop<T>()); 323 S.Stk.push<T>(S.Current->getParam<T>(I)); 329 S.Current->setParam<T>(I, S.Stk.pop<T>()); 335 const Pointer &Obj = S.Stk.peek<Pointer>(); 343 S.Stk.push<T>(Field.deref<T>()); 349 const T &Value = S.Stk.pop<T>(); 350 const Pointer &Obj = S.Stk.peek<Pointer>(); 364 const Pointer &Obj = S.Stk.pop<Pointer>(); 372 S.Stk.push<T>(Field.deref<T>()); 386 S.Stk.push<T>(Field.deref<T>()); 394 const T &Value = S.Stk.pop<T>(); 410 S.Stk.push<T>(B->deref<T>()); 422 S.P.getGlobal(I)->deref<T>() = S.Stk.pop<T>(); 434 Field.deref<T>() = S.Stk.pop<T>(); 447 const auto &Value = S.Stk.pop<T>(); 461 Field.deref<T>() = S.Stk.pop<T>(); 469 const T &Value = S.Stk.pop<T>(); 470 const Pointer &Field = S.Stk.pop<Pointer>().atField(I); 479 const T &Value = S.Stk.pop<T>(); 480 const Pointer &Field = S.Stk.pop<Pointer>().atField(F->Offset); 489 const T &Value = S.Stk.pop<T>(); 490 const Pointer &Ptr = S.Stk.pop<Pointer>(); 503 S.Stk.push<Pointer>(S.Current->getLocalPointer(I)); 511 S.Stk.push<Pointer>(S.Current->getParamPointer(I)); 516 S.Stk.push<Pointer>(S.P.getPtrGlobal(I)); 521 const Pointer &Ptr = S.Stk.pop<Pointer>(); 528 S.Stk.push<Pointer>(Ptr.atField(Off)); 538 S.Stk.push<Pointer>(This.atField(Off)); 543 const Pointer &Ptr = S.Stk.pop<Pointer>(); 551 S.Stk.push<Pointer>(std::move(Field)); 564 S.Stk.push<Pointer>(std::move(Field)); 569 const Pointer &Ptr = S.Stk.pop<Pointer>(); 572 S.Stk.push<Pointer>(Ptr.atField(Off)); 582 S.Stk.push<Pointer>(This.atField(Off)); 593 S.Stk.push<Pointer>(Base.atField(Field->Offset)); 598 const Pointer &Ptr = S.Stk.pop<Pointer>(); 620 const Pointer &Ptr = S.Stk.peek<Pointer>(); 623 S.Stk.push<T>(Ptr.deref<T>()); 629 const Pointer &Ptr = S.Stk.pop<Pointer>(); 632 S.Stk.push<T>(Ptr.deref<T>()); 638 const T &Value = S.Stk.pop<T>(); 639 const Pointer &Ptr = S.Stk.peek<Pointer>(); 648 const T &Value = S.Stk.pop<T>(); 649 const Pointer &Ptr = S.Stk.pop<Pointer>(); 658 const T &Value = S.Stk.pop<T>(); 659 const Pointer &Ptr = S.Stk.peek<Pointer>(); 672 const T &Value = S.Stk.pop<T>(); 673 const Pointer &Ptr = S.Stk.pop<Pointer>(); 686 const T &Value = S.Stk.pop<T>(); 687 const Pointer &Ptr = S.Stk.pop<Pointer>(); 697 const T &Value = S.Stk.pop<T>(); 698 const Pointer &Ptr = S.Stk.peek<Pointer>().atIndex(Idx); 708 const T &Value = S.Stk.pop<T>(); 709 const Pointer &Ptr = S.Stk.pop<Pointer>().atIndex(Idx); 723 const T &Offset = S.Stk.pop<T>(); 724 const Pointer &Ptr = S.Stk.pop<Pointer>(); 735 S.Stk.push<Pointer>(Index.isZero() ? Ptr.atIndex(0) : Ptr); 775 S.Stk.push<Pointer>(Ptr.atIndex(static_cast<unsigned>(Result))); 806 S.Stk.push<U>(U::from(S.Stk.pop<T>())); 806 S.Stk.push<U>(U::from(S.Stk.pop<T>())); 816 S.Stk.push<T>(T::zero()); 822 S.Stk.push<T>(); 840 S.Stk.push<Pointer>(This); 866 S.Stk.push<T>(T::from(0, V.bitWidth())); 868 S.Stk.push<T>(T::from(V >> RHS, V.bitWidth())); 889 S.Stk.push<T>(V); 891 S.Stk.push<T>(T::from(0, V.bitWidth())); 893 S.Stk.push<T>(T::from(V.toUnsigned() << RHS, V.bitWidth())); 900 const auto &RHS = S.Stk.pop<typename PrimConv<TR>::T>(); 901 const auto &LHS = S.Stk.pop<typename PrimConv<TL>::T>(); 915 const auto &RHS = S.Stk.pop<typename PrimConv<TR>::T>(); 916 const auto &LHS = S.Stk.pop<typename PrimConv<TL>::T>(); 943 const Pointer &Ptr = S.Stk.pop<Pointer>(); 944 S.Stk.push<Pointer>(Ptr.narrow()); 949 const Pointer &Ptr = S.Stk.pop<Pointer>(); 950 S.Stk.push<Pointer>(Ptr.expand());tools/clang/lib/AST/Interp/InterpFrame.cpp
24 Args(static_cast<char *>(S.Stk.top())), FrameOffset(S.Stk.size()) { 24 Args(static_cast<char *>(S.Stk.top())), FrameOffset(S.Stk.size()) { 53 TYPE_SWITCH(Ty, S.Stk.discard<T>());