reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

tools/clang/lib/AST/Interp/EvalEmitter.cpp
   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>());