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

Derived Classes

tools/clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h
  355 class Variable : public SExpr {
  435 class Future : public SExpr {
  487 class Undefined : public SExpr {
  509 class Wildcard : public SExpr {
  529 class Literal : public SExpr {
  635 class LiteralPtr : public SExpr {
  662 class Function : public SExpr {
  713 class SFunction : public SExpr {
  763 class Code : public SExpr {
  798 class Field : public SExpr {
  837 class Apply : public SExpr {
  872 class SApply : public SExpr {
  910 class Project : public SExpr {
  963 class Call : public SExpr {
  993 class Alloc : public SExpr {
 1029 class Load : public SExpr {
 1056 class Store : public SExpr {
 1091 class ArrayIndex : public SExpr {
 1128 class ArrayAdd : public SExpr {
 1164 class UnaryOp : public SExpr {
 1202 class BinaryOp : public SExpr {
 1253 class Cast : public SExpr {
 1291 class Phi : public SExpr {
 1344 class Terminator : public SExpr {
 1499 class BasicBlock : public SExpr {
 1686 class SCFG : public SExpr {
 1785 class Identifier : public SExpr {
 1810 class IfThenElse : public SExpr {
 1855 class Let : public SExpr {

References

include/llvm/Support/Casting.h
   57   static inline bool doit(const From &Val) {
  104   static inline bool doit(const From *Val) {
  106     return isa_impl<To, From>::doit(*Val);
  263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  265   return cast_convert_val<X, Y*,
  266                           typename simplify_type<Y*>::SimpleType>::doit(Val);
  342 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type dyn_cast(Y *Val) {
  342 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type dyn_cast(Y *Val) {
  366 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type
  367 dyn_cast_or_null(Y *Val) {
include/llvm/Support/PointerLikeTypeTraits.h
   56   static inline void *getAsVoidPointer(T *P) { return P; }
   57   static inline T *getFromVoidPointer(void *P) { return static_cast<T *>(P); }
   59   enum { NumLowBitsAvailable = detail::ConstantLog2<alignof(T)>::value };
   91   typedef PointerLikeTypeTraits<T *> NonConst;
   93   static inline const void *getAsVoidPointer(const T *P) {
   96   static inline const T *getFromVoidPointer(const void *P) {
tools/clang/include/clang/Analysis/Analyses/ThreadSafetyCommon.h
   63 inline bool equals(const til::SExpr *E1, const til::SExpr *E2) {
   63 inline bool equals(const til::SExpr *E1, const til::SExpr *E2) {
   67 inline bool matches(const til::SExpr *E1, const til::SExpr *E2) {
   67 inline bool matches(const til::SExpr *E1, const til::SExpr *E2) {
   79 inline bool partiallyMatches(const til::SExpr *E1, const til::SExpr *E2) {
   79 inline bool partiallyMatches(const til::SExpr *E1, const til::SExpr *E2) {
   89 inline std::string toString(const til::SExpr *E) {
  273   const til::SExpr* CapExpr;
  279   CapabilityExpr(const til::SExpr *E, bool Neg) : CapExpr(E), Negated(Neg) {}
  281   const til::SExpr* sexpr() const { return CapExpr; }
  379   til::SExpr *translate(const Stmt *S, CallingContext *Ctx);
  382   til::SExpr *lookupStmt(const Stmt *S);
  395   til::SExpr *translateDeclRefExpr(const DeclRefExpr *DRE,
  397   til::SExpr *translateCXXThisExpr(const CXXThisExpr *TE, CallingContext *Ctx);
  398   til::SExpr *translateMemberExpr(const MemberExpr *ME, CallingContext *Ctx);
  399   til::SExpr *translateObjCIVarRefExpr(const ObjCIvarRefExpr *IVRE,
  401   til::SExpr *translateCallExpr(const CallExpr *CE, CallingContext *Ctx,
  403   til::SExpr *translateCXXMemberCallExpr(const CXXMemberCallExpr *ME,
  405   til::SExpr *translateCXXOperatorCallExpr(const CXXOperatorCallExpr *OCE,
  407   til::SExpr *translateUnaryOperator(const UnaryOperator *UO,
  409   til::SExpr *translateBinOp(til::TIL_BinaryOpcode Op,
  412   til::SExpr *translateBinAssign(til::TIL_BinaryOpcode Op,
  415   til::SExpr *translateBinaryOperator(const BinaryOperator *BO,
  417   til::SExpr *translateCastExpr(const CastExpr *CE, CallingContext *Ctx);
  418   til::SExpr *translateArraySubscriptExpr(const ArraySubscriptExpr *E,
  420   til::SExpr *translateAbstractConditionalOperator(
  423   til::SExpr *translateDeclStmt(const DeclStmt *S, CallingContext *Ctx);
  426   using StatementMap = llvm::DenseMap<const Stmt *, til::SExpr *>;
  432   using NameVarPair = std::pair<const ValueDecl *, til::SExpr *>;
  465   void insertStmt(const Stmt *S, til::SExpr *E) {
  469   til::SExpr *getCurrentLVarDefinition(const ValueDecl *VD);
  471   til::SExpr *addStatement(til::SExpr *E, const Stmt *S,
  471   til::SExpr *addStatement(til::SExpr *E, const Stmt *S,
  473   til::SExpr *lookupVarDecl(const ValueDecl *VD);
  474   til::SExpr *addVarDecl(const ValueDecl *VD, til::SExpr *E);
  474   til::SExpr *addVarDecl(const ValueDecl *VD, til::SExpr *E);
  475   til::SExpr *updateVarDecl(const ValueDecl *VD, til::SExpr *E);
  475   til::SExpr *updateVarDecl(const ValueDecl *VD, til::SExpr *E);
  477   void makePhiNodeVar(unsigned i, unsigned NPreds, til::SExpr *E);
  508   std::vector<til::SExpr *> CurrentInstructions;
tools/clang/include/clang/Analysis/Analyses/ThreadSafetyLogical.h
   43   til::SExpr *Expr;
   46   Terminal(til::SExpr *Expr) : LExpr(LExpr::Terminal), Expr(Expr) {}
   48   const til::SExpr *expr() const { return Expr; }
   49   til::SExpr *expr() { return Expr; }
tools/clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h
  322   SExpr(const SExpr &E) : Opcode(E.Opcode), Flags(E.Flags) {}
  334 inline bool isTrivial(const SExpr *E) {
  355 class Variable : public SExpr {
  368   Variable(StringRef s, SExpr *D = nullptr)
  373   Variable(SExpr *D, const ValueDecl *Cvd = nullptr)
  379   Variable(const Variable &Vd, SExpr *D)  // rewrite constructor
  384   static bool classof(const SExpr *E) { return E->opcode() == COP_Variable; }
  398   SExpr *definition() { return Definition; }
  399   const SExpr *definition() const { return Definition; }
  403   void setDefinition(SExpr *E) { Definition = E; }
  427   SExpr *Definition;
  435 class Future : public SExpr {
  446   static bool classof(const SExpr *E) { return E->opcode() == COP_Future; }
  449   virtual SExpr *compute() { return nullptr; }
  452   SExpr *maybeGetResult() const { return Result; }
  455   SExpr *result() {
  480   SExpr* force();
  483   SExpr *Result = nullptr;
  487 class Undefined : public SExpr {
  492   static bool classof(const SExpr *E) { return E->opcode() == COP_Undefined; }
  509 class Wildcard : public SExpr {
  514   static bool classof(const SExpr *E) { return E->opcode() == COP_Wildcard; }
  529 class Literal : public SExpr {
  536   static bool classof(const SExpr *E) { return E->opcode() == COP_Literal; }
  635 class LiteralPtr : public SExpr {
  640   static bool classof(const SExpr *E) { return E->opcode() == COP_LiteralPtr; }
  662 class Function : public SExpr {
  664   Function(Variable *Vd, SExpr *Bd)
  669   Function(const Function &F, Variable *Vd, SExpr *Bd) // rewrite constructor
  674   static bool classof(const SExpr *E) { return E->opcode() == COP_Function; }
  679   SExpr *body() { return Body; }
  680   const SExpr *body() const { return Body; }
  707   SExpr* Body;
  713 class SFunction : public SExpr {
  715   SFunction(Variable *Vd, SExpr *B)
  722   SFunction(const SFunction &F, Variable *Vd, SExpr *B) // rewrite constructor
  729   static bool classof(const SExpr *E) { return E->opcode() == COP_SFunction; }
  734   SExpr *body() { return Body; }
  735   const SExpr *body() const { return Body; }
  759   SExpr* Body;
  763 class Code : public SExpr {
  765   Code(SExpr *T, SExpr *B) : SExpr(COP_Code), ReturnType(T), Body(B) {}
  765   Code(SExpr *T, SExpr *B) : SExpr(COP_Code), ReturnType(T), Body(B) {}
  766   Code(const Code &C, SExpr *T, SExpr *B) // rewrite constructor
  766   Code(const Code &C, SExpr *T, SExpr *B) // rewrite constructor
  769   static bool classof(const SExpr *E) { return E->opcode() == COP_Code; }
  771   SExpr *returnType() { return ReturnType; }
  772   const SExpr *returnType() const { return ReturnType; }
  774   SExpr *body() { return Body; }
  775   const SExpr *body() const { return Body; }
  793   SExpr* ReturnType;
  794   SExpr* Body;
  798 class Field : public SExpr {
  800   Field(SExpr *R, SExpr *B) : SExpr(COP_Field), Range(R), Body(B) {}
  800   Field(SExpr *R, SExpr *B) : SExpr(COP_Field), Range(R), Body(B) {}
  801   Field(const Field &C, SExpr *R, SExpr *B) // rewrite constructor
  801   Field(const Field &C, SExpr *R, SExpr *B) // rewrite constructor
  804   static bool classof(const SExpr *E) { return E->opcode() == COP_Field; }
  806   SExpr *range() { return Range; }
  807   const SExpr *range() const { return Range; }
  809   SExpr *body() { return Body; }
  810   const SExpr *body() const { return Body; }
  828   SExpr* Range;
  829   SExpr* Body;
  837 class Apply : public SExpr {
  839   Apply(SExpr *F, SExpr *A) : SExpr(COP_Apply), Fun(F), Arg(A) {}
  839   Apply(SExpr *F, SExpr *A) : SExpr(COP_Apply), Fun(F), Arg(A) {}
  840   Apply(const Apply &A, SExpr *F, SExpr *Ar)  // rewrite constructor
  840   Apply(const Apply &A, SExpr *F, SExpr *Ar)  // rewrite constructor
  843   static bool classof(const SExpr *E) { return E->opcode() == COP_Apply; }
  845   SExpr *fun() { return Fun; }
  846   const SExpr *fun() const { return Fun; }
  848   SExpr *arg() { return Arg; }
  849   const SExpr *arg() const { return Arg; }
  867   SExpr* Fun;
  868   SExpr* Arg;
  872 class SApply : public SExpr {
  874   SApply(SExpr *Sf, SExpr *A = nullptr) : SExpr(COP_SApply), Sfun(Sf), Arg(A) {}
  874   SApply(SExpr *Sf, SExpr *A = nullptr) : SExpr(COP_SApply), Sfun(Sf), Arg(A) {}
  875   SApply(SApply &A, SExpr *Sf, SExpr *Ar = nullptr) // rewrite constructor
  875   SApply(SApply &A, SExpr *Sf, SExpr *Ar = nullptr) // rewrite constructor
  878   static bool classof(const SExpr *E) { return E->opcode() == COP_SApply; }
  880   SExpr *sfun() { return Sfun; }
  881   const SExpr *sfun() const { return Sfun; }
  883   SExpr *arg() { return Arg ? Arg : Sfun; }
  884   const SExpr *arg() const { return Arg ? Arg : Sfun; }
  905   SExpr* Sfun;
  906   SExpr* Arg;
  910 class Project : public SExpr {
  912   Project(SExpr *R, const ValueDecl *Cvd)
  917   static bool classof(const SExpr *E) { return E->opcode() == COP_Project; }
  919   SExpr *record() { return Rec; }
  920   const SExpr *record() const { return Rec; }
  957   SExpr* Rec;
  963 class Call : public SExpr {
  965   Call(SExpr *T, const CallExpr *Ce = nullptr)
  967   Call(const Call &C, SExpr *T) : SExpr(C), Target(T), Cexpr(C.Cexpr) {}
  969   static bool classof(const SExpr *E) { return E->opcode() == COP_Call; }
  971   SExpr *target() { return Target; }
  972   const SExpr *target() const { return Target; }
  988   SExpr* Target;
  993 class Alloc : public SExpr {
 1000   Alloc(SExpr *D, AllocKind K) : SExpr(COP_Alloc), Dtype(D) { Flags = K; }
 1001   Alloc(const Alloc &A, SExpr *Dt) : SExpr(A), Dtype(Dt) { Flags = A.kind(); }
 1003   static bool classof(const SExpr *E) { return E->opcode() == COP_Call; }
 1007   SExpr *dataType() { return Dtype; }
 1008   const SExpr *dataType() const { return Dtype; }
 1025   SExpr* Dtype;
 1029 class Load : public SExpr {
 1031   Load(SExpr *P) : SExpr(COP_Load), Ptr(P) {}
 1032   Load(const Load &L, SExpr *P) : SExpr(L), Ptr(P) {}
 1034   static bool classof(const SExpr *E) { return E->opcode() == COP_Load; }
 1036   SExpr *pointer() { return Ptr; }
 1037   const SExpr *pointer() const { return Ptr; }
 1051   SExpr* Ptr;
 1056 class Store : public SExpr {
 1058   Store(SExpr *P, SExpr *V) : SExpr(COP_Store), Dest(P), Source(V) {}
 1058   Store(SExpr *P, SExpr *V) : SExpr(COP_Store), Dest(P), Source(V) {}
 1059   Store(const Store &S, SExpr *P, SExpr *V) : SExpr(S), Dest(P), Source(V) {}
 1059   Store(const Store &S, SExpr *P, SExpr *V) : SExpr(S), Dest(P), Source(V) {}
 1061   static bool classof(const SExpr *E) { return E->opcode() == COP_Store; }
 1063   SExpr *destination() { return Dest; }  // Address to store to
 1064   const SExpr *destination() const { return Dest; }
 1066   SExpr *source() { return Source; }     // Value to store
 1067   const SExpr *source() const { return Source; }
 1085   SExpr* Dest;
 1086   SExpr* Source;
 1091 class ArrayIndex : public SExpr {
 1093   ArrayIndex(SExpr *A, SExpr *N) : SExpr(COP_ArrayIndex), Array(A), Index(N) {}
 1093   ArrayIndex(SExpr *A, SExpr *N) : SExpr(COP_ArrayIndex), Array(A), Index(N) {}
 1094   ArrayIndex(const ArrayIndex &E, SExpr *A, SExpr *N)
 1094   ArrayIndex(const ArrayIndex &E, SExpr *A, SExpr *N)
 1097   static bool classof(const SExpr *E) { return E->opcode() == COP_ArrayIndex; }
 1099   SExpr *array() { return Array; }
 1100   const SExpr *array() const { return Array; }
 1102   SExpr *index() { return Index; }
 1103   const SExpr *index() const { return Index; }
 1121   SExpr* Array;
 1122   SExpr* Index;
 1128 class ArrayAdd : public SExpr {
 1130   ArrayAdd(SExpr *A, SExpr *N) : SExpr(COP_ArrayAdd), Array(A), Index(N) {}
 1130   ArrayAdd(SExpr *A, SExpr *N) : SExpr(COP_ArrayAdd), Array(A), Index(N) {}
 1131   ArrayAdd(const ArrayAdd &E, SExpr *A, SExpr *N)
 1131   ArrayAdd(const ArrayAdd &E, SExpr *A, SExpr *N)
 1134   static bool classof(const SExpr *E) { return E->opcode() == COP_ArrayAdd; }
 1136   SExpr *array() { return Array; }
 1137   const SExpr *array() const { return Array; }
 1139   SExpr *index() { return Index; }
 1140   const SExpr *index() const { return Index; }
 1158   SExpr* Array;
 1159   SExpr* Index;
 1164 class UnaryOp : public SExpr {
 1166   UnaryOp(TIL_UnaryOpcode Op, SExpr *E) : SExpr(COP_UnaryOp), Expr0(E) {
 1170   UnaryOp(const UnaryOp &U, SExpr *E) : SExpr(U), Expr0(E) { Flags = U.Flags; }
 1172   static bool classof(const SExpr *E) { return E->opcode() == COP_UnaryOp; }
 1178   SExpr *expr() { return Expr0; }
 1179   const SExpr *expr() const { return Expr0; }
 1197   SExpr* Expr0;
 1202 class BinaryOp : public SExpr {
 1204   BinaryOp(TIL_BinaryOpcode Op, SExpr *E0, SExpr *E1)
 1204   BinaryOp(TIL_BinaryOpcode Op, SExpr *E0, SExpr *E1)
 1209   BinaryOp(const BinaryOp &B, SExpr *E0, SExpr *E1)
 1209   BinaryOp(const BinaryOp &B, SExpr *E0, SExpr *E1)
 1214   static bool classof(const SExpr *E) { return E->opcode() == COP_BinaryOp; }
 1220   SExpr *expr0() { return Expr0; }
 1221   const SExpr *expr0() const { return Expr0; }
 1223   SExpr *expr1() { return Expr1; }
 1224   const SExpr *expr1() const { return Expr1; }
 1246   SExpr* Expr0;
 1247   SExpr* Expr1;
 1253 class Cast : public SExpr {
 1255   Cast(TIL_CastOpcode Op, SExpr *E) : SExpr(COP_Cast), Expr0(E) { Flags = Op; }
 1256   Cast(const Cast &C, SExpr *E) : SExpr(C), Expr0(E) { Flags = C.Flags; }
 1258   static bool classof(const SExpr *E) { return E->opcode() == COP_Cast; }
 1264   SExpr *expr() { return Expr0; }
 1265   const SExpr *expr() const { return Expr0; }
 1283   SExpr* Expr0;
 1291 class Phi : public SExpr {
 1293   using ValArray = SimpleArray<SExpr *>;
 1308   static bool classof(const SExpr *E) { return E->opcode() == COP_Phi; }
 1327     for (const auto *Val : Values)
 1344 class Terminator : public SExpr {
 1347   Terminator(const SExpr &E) : SExpr(E) {}
 1350   static bool classof(const SExpr *E) {
 1374   static bool classof(const SExpr *E) { return E->opcode() == COP_Goto; }
 1407   Branch(SExpr *C, BasicBlock *T, BasicBlock *E)
 1413   Branch(const Branch &Br, SExpr *C, BasicBlock *T, BasicBlock *E)
 1419   static bool classof(const SExpr *E) { return E->opcode() == COP_Branch; }
 1421   const SExpr *condition() const { return Condition; }
 1422   SExpr *condition() { return Condition; }
 1450   SExpr *Condition;
 1458   Return(SExpr* Rval) : Terminator(COP_Return), Retval(Rval) {}
 1459   Return(const Return &R, SExpr* Rval) : Terminator(R), Retval(Rval) {}
 1461   static bool classof(const SExpr *E) { return E->opcode() == COP_Return; }
 1466   SExpr *returnValue() { return Retval; }
 1467   const SExpr *returnValue() const { return Retval; }
 1481   SExpr* Retval;
 1499 class BasicBlock : public SExpr {
 1501   using InstrArray = SimpleArray<SExpr *>;
 1537   static bool classof(const SExpr *E) { return E->opcode() == COP_BasicBlock; }
 1587   void addInstruction(SExpr *V) {
 1619     for (const auto *E : Args) {
 1623     for (const auto *E : Instrs) {
 1686 class SCFG : public SExpr {
 1708   static bool classof(const SExpr *E) { return E->opcode() == COP_SCFG; }
 1785 class Identifier : public SExpr {
 1790   static bool classof(const SExpr *E) { return E->opcode() == COP_Identifier; }
 1810 class IfThenElse : public SExpr {
 1812   IfThenElse(SExpr *C, SExpr *T, SExpr *E)
 1812   IfThenElse(SExpr *C, SExpr *T, SExpr *E)
 1812   IfThenElse(SExpr *C, SExpr *T, SExpr *E)
 1814   IfThenElse(const IfThenElse &I, SExpr *C, SExpr *T, SExpr *E)
 1814   IfThenElse(const IfThenElse &I, SExpr *C, SExpr *T, SExpr *E)
 1814   IfThenElse(const IfThenElse &I, SExpr *C, SExpr *T, SExpr *E)
 1817   static bool classof(const SExpr *E) { return E->opcode() == COP_IfThenElse; }
 1819   SExpr *condition() { return Condition; }   // Address to store to
 1820   const SExpr *condition() const { return Condition; }
 1822   SExpr *thenExpr() { return ThenExpr; }     // Value to store
 1823   const SExpr *thenExpr() const { return ThenExpr; }
 1825   SExpr *elseExpr() { return ElseExpr; }     // Value to store
 1826   const SExpr *elseExpr() const { return ElseExpr; }
 1848   SExpr* Condition;
 1849   SExpr* ThenExpr;
 1850   SExpr* ElseExpr;
 1855 class Let : public SExpr {
 1857   Let(Variable *Vd, SExpr *Bd) : SExpr(COP_Let), VarDecl(Vd), Body(Bd) {
 1861   Let(const Let &L, Variable *Vd, SExpr *Bd) : SExpr(L), VarDecl(Vd), Body(Bd) {
 1865   static bool classof(const SExpr *E) { return E->opcode() == COP_Let; }
 1870   SExpr *body() { return Body; }
 1871   const SExpr *body() const { return Body; }
 1898   SExpr* Body;
 1901 const SExpr *getCanonicalVal(const SExpr *E);
 1901 const SExpr *getCanonicalVal(const SExpr *E);
 1902 SExpr* simplifyToCanonicalVal(SExpr *E);
 1902 SExpr* simplifyToCanonicalVal(SExpr *E);
tools/clang/include/clang/Analysis/Analyses/ThreadSafetyTraverse.h
   74   typename R::R_SExpr traverseSExpr(SExpr *E, typename R::R_Ctx Ctx) {
   79   typename R::R_SExpr traverseByCase(SExpr *E, typename R::R_Ctx Ctx) {
  142   using R_SExpr = SExpr *;
  294   bool traverse(SExpr *E, TraversalKind K = TRV_Normal) {
  299   static bool visit(SExpr *E) {
  315   bool compareByCase(const SExpr *E1, const SExpr* E2) {
  315   bool compareByCase(const SExpr *E1, const SExpr* E2) {
  341   bool compare(const SExpr *E1, const SExpr* E2) {
  341   bool compare(const SExpr *E1, const SExpr* E2) {
  355   static bool compareExprs(const SExpr *E1, const SExpr* E2) {
  355   static bool compareExprs(const SExpr *E1, const SExpr* E2) {
  375   bool compare(const SExpr *E1, const SExpr *E2) {
  375   bool compare(const SExpr *E1, const SExpr *E2) {
  393   static bool compareExprs(const SExpr *E1, const SExpr* E2) {
  393   static bool compareExprs(const SExpr *E1, const SExpr* E2) {
  420   static void print(const SExpr *E, StreamType &SS) {
  442   unsigned precedence(const SExpr *E) {
  498   void printSExpr(const SExpr *E, StreamType &SS, unsigned P, bool Sub=true) {
  652     const SExpr *B = E->body();
  683     const SExpr *F = E->fun();
  732     const SExpr *T = E->target();
  823   void printBBInstr(const SExpr *E, StreamType &SS) {
  845     for (const auto *A : E->arguments())
  848     for (const auto *I : E->instructions())
  851     const SExpr *T = E->terminator();
  866       for (const auto *V : E->values()) {
tools/clang/lib/Analysis/ThreadSafety.cpp
  900       llvm::PointerIntPair<const til::SExpr *, 2, UnderlyingCapabilityKind>;
tools/clang/lib/Analysis/ThreadSafetyCommon.cpp
   63 static bool isIncompletePhi(const til::SExpr *E) {
   71 til::SExpr *SExprBuilder::lookupStmt(const Stmt *S) {
  180   til::SExpr *E = translate(AttrExp, Ctx);
  198 til::SExpr *SExprBuilder::translate(const Stmt *S, CallingContext *Ctx) {
  204   if (til::SExpr *E = lookupStmt(S))
  273 til::SExpr *SExprBuilder::translateDeclRefExpr(const DeclRefExpr *DRE,
  302 til::SExpr *SExprBuilder::translateCXXThisExpr(const CXXThisExpr *TE,
  311 static const ValueDecl *getValueDeclFromSExpr(const til::SExpr *E) {
  323 static bool hasAnyPointerType(const til::SExpr *E) {
  346 til::SExpr *SExprBuilder::translateMemberExpr(const MemberExpr *ME,
  348   til::SExpr *BE = translate(ME->getBase(), Ctx);
  349   til::SExpr *E  = new (Arena) til::SApply(BE);
  361 til::SExpr *SExprBuilder::translateObjCIVarRefExpr(const ObjCIvarRefExpr *IVRE,
  363   til::SExpr *BE = translate(IVRE->getBase(), Ctx);
  364   til::SExpr *E = new (Arena) til::SApply(BE);
  374 til::SExpr *SExprBuilder::translateCallExpr(const CallExpr *CE,
  393   til::SExpr *E = translate(CE->getCallee(), Ctx);
  395     til::SExpr *A = translate(Arg, Ctx);
  401 til::SExpr *SExprBuilder::translateCXXMemberCallExpr(
  407       auto *E = translate(ME->getImplicitObjectArgument(), Ctx);
  416 til::SExpr *SExprBuilder::translateCXXOperatorCallExpr(
  422       auto *E = translate(OCE->getArg(0), Ctx);
  430 til::SExpr *SExprBuilder::translateUnaryOperator(const UnaryOperator *UO,
  479 til::SExpr *SExprBuilder::translateBinOp(til::TIL_BinaryOpcode Op,
  482    til::SExpr *E0 = translate(BO->getLHS(), Ctx);
  483    til::SExpr *E1 = translate(BO->getRHS(), Ctx);
  490 til::SExpr *SExprBuilder::translateBinAssign(til::TIL_BinaryOpcode Op,
  496   til::SExpr *E0 = translate(LHS, Ctx);
  497   til::SExpr *E1 = translate(RHS, Ctx);
  500   til::SExpr *CV = nullptr;
  507     til::SExpr *Arg = CV ? CV : new (Arena) til::Load(E0);
  516 til::SExpr *SExprBuilder::translateBinaryOperator(const BinaryOperator *BO,
  562 til::SExpr *SExprBuilder::translateCastExpr(const CastExpr *CE,
  568       til::SExpr *E0 = lookupVarDecl(DRE->getDecl());
  572     til::SExpr *E0 = translate(CE->getSubExpr(), Ctx);
  582     til::SExpr *E0 = translate(CE->getSubExpr(), Ctx);
  587     til::SExpr *E0 = translate(CE->getSubExpr(), Ctx);
  595 til::SExpr *
  598   til::SExpr *E0 = translate(E->getBase(), Ctx);
  599   til::SExpr *E1 = translate(E->getIdx(), Ctx);
  603 til::SExpr *
  606   auto *C = translate(CO->getCond(), Ctx);
  607   auto *T = translate(CO->getTrueExpr(), Ctx);
  608   auto *E = translate(CO->getFalseExpr(), Ctx);
  612 til::SExpr *
  618       til::SExpr* SE = translate(E, Ctx);
  636 til::SExpr *SExprBuilder::addStatement(til::SExpr* E, const Stmt *S,
  636 til::SExpr *SExprBuilder::addStatement(til::SExpr* E, const Stmt *S,
  649 til::SExpr *SExprBuilder::lookupVarDecl(const ValueDecl *VD) {
  659 static void maybeUpdateVD(til::SExpr *E, const ValueDecl *VD) {
  669 til::SExpr *SExprBuilder::addVarDecl(const ValueDecl *VD, til::SExpr *E) {
  669 til::SExpr *SExprBuilder::addVarDecl(const ValueDecl *VD, til::SExpr *E) {
  678 til::SExpr *SExprBuilder::updateVarDecl(const ValueDecl *VD, til::SExpr *E) {
  678 til::SExpr *SExprBuilder::updateVarDecl(const ValueDecl *VD, til::SExpr *E) {
  682     til::SExpr *Ptr = new (Arena) til::LiteralPtr(VD);
  683     til::SExpr *St  = new (Arena) til::Store(Ptr, E);
  694 void SExprBuilder::makePhiNodeVar(unsigned i, unsigned NPreds, til::SExpr *E) {
  698   til::SExpr *CurrE = CurrentLVarMap[i].second;
  799   for (til::SExpr *PE : BB->arguments()) {
  804     til::SExpr *E = lookupVarDecl(Ph->clangDecl());
  836     til::SExpr *Lp = new (Arena) til::LiteralPtr(Pm);
  837     til::SExpr *Ld = new (Arena) til::Load(Lp);
  838     til::SExpr *V  = addStatement(Ld, nullptr, Pm);
  885   til::SExpr *E = translate(S, nullptr);
  891   til::SExpr *Sf = new (Arena) til::LiteralPtr(VD);
  892   til::SExpr *Dr = new (Arena) til::LiteralPtr(DD);
  893   til::SExpr *Ap = new (Arena) til::Apply(Dr, Sf);
  894   til::SExpr *E = new (Arena) til::Call(Ap);
  901   for (auto *V : CurrentInstructions)
  915     til::SExpr *C = translate(B->getTerminatorCondition(true), nullptr);
tools/clang/lib/Analysis/ThreadSafetyTIL.cpp
   51 SExpr* Future::force() {
   62   for (auto *E : Args) {
   73   for (auto *E : Args) {
   82 const SExpr *til::getCanonicalVal(const SExpr *E) {
   82 const SExpr *til::getCanonicalVal(const SExpr *E) {
  104 SExpr *til::simplifyToCanonicalVal(SExpr *E) {
  104 SExpr *til::simplifyToCanonicalVal(SExpr *E) {
  139   SExpr *E0 = simplifyToCanonicalVal(Ph->values()[0]);
  141     SExpr *Ei = simplifyToCanonicalVal(Ph->values()[i]);
  153   for (auto *Arg : Args)
  155   for (auto *Instr : Instrs)
usr/include/c++/7.4.0/type_traits
 1983     { typedef _Up     type; };