Back to home page

EIC code displayed by LXR

 
 

    


Warning, /include/clang/AST/StmtDataCollectors.inc is written in an unsupported language. File is not indexed.

0001 DEF_ADD_DATA(AddrLabelExpr, {
0002 
0003     addData(S->getLabel()->getName());
0004   }
0005 )
0006 DEF_ADD_DATA(ArrayTypeTraitExpr, {
0007 
0008     addData(S->getTrait());
0009   }
0010 )
0011 DEF_ADD_DATA(AsmStmt, {
0012 
0013     addData(S->isSimple());
0014     addData(S->isVolatile());
0015     addData(S->generateAsmString(Context));
0016     for (unsigned i = 0; i < S->getNumInputs(); ++i) {
0017       addData(S->getInputConstraint(i));
0018     }
0019     for (unsigned i = 0; i < S->getNumOutputs(); ++i) {
0020       addData(S->getOutputConstraint(i));
0021     }
0022     for (unsigned i = 0; i < S->getNumClobbers(); ++i) {
0023       addData(S->getClobber(i));
0024     }
0025   }
0026 )
0027 DEF_ADD_DATA(AttributedStmt, {
0028 
0029     for (const Attr *A : S->getAttrs()) {
0030       addData(std::string(A->getSpelling()));
0031     }
0032   }
0033 )
0034 DEF_ADD_DATA(BinaryOperator, {
0035 
0036     addData(S->getOpcode());
0037   }
0038 )
0039 DEF_ADD_DATA(CXXBoolLiteralExpr, {
0040 
0041     addData(S->getValue());
0042   }
0043 )
0044 DEF_ADD_DATA(CXXCatchStmt, {
0045 
0046     addData(S->getCaughtType());
0047   }
0048 )
0049 DEF_ADD_DATA(CXXDeleteExpr, {
0050 
0051     addData(S->isArrayFormAsWritten()); addData(S->isGlobalDelete());
0052   }
0053 )
0054 DEF_ADD_DATA(CXXFoldExpr, {
0055 
0056     addData(S->isRightFold()); addData(S->getOperator());
0057   }
0058 )
0059 DEF_ADD_DATA(CallExpr, {
0060 
0061     // Function pointers don't have a callee and we just skip hashing it.
0062     if (const FunctionDecl *D = S->getDirectCallee()) {
0063       // If the function is a template specialization, we also need to handle
0064       // the template arguments as they are not included in the qualified name.
0065       if (auto Args = D->getTemplateSpecializationArgs()) {
0066         std::string ArgString;
0067 
0068         // Print all template arguments into ArgString
0069         llvm::raw_string_ostream OS(ArgString);
0070         for (unsigned i = 0; i < Args->size(); ++i) {
0071           Args->get(i).print(Context.getLangOpts(), OS, /*IncludeType*/ true);
0072           // Add a padding character so that 'foo<X, XX>()' != 'foo<XX, X>()'.
0073           OS << '\n';
0074         }
0075 
0076         addData(ArgString);
0077       }
0078       addData(D->getQualifiedNameAsString());
0079     }
0080   }
0081 )
0082 DEF_ADD_DATA(CharacterLiteral, {
0083 
0084     addData(S->getValue());
0085   }
0086 )
0087 DEF_ADD_DATA(DeclRefExpr, {
0088 
0089     addData(S->getDecl()->getQualifiedNameAsString());
0090   }
0091 )
0092 DEF_ADD_DATA(DeclStmt, {
0093 
0094     auto numDecls = std::distance(S->decl_begin(), S->decl_end());
0095     addData(static_cast<unsigned>(numDecls));
0096     for (const Decl *D : S->decls()) {
0097       if (const VarDecl *VD = dyn_cast<VarDecl>(D)) {
0098         addData(VD->getType());
0099       }
0100     }
0101   }
0102 )
0103 DEF_ADD_DATA(Expr, {
0104 
0105     addData(S->getType());
0106   }
0107 )
0108 DEF_ADD_DATA(ExpressionTraitExpr, {
0109 
0110     addData(S->getTrait());
0111   }
0112 )
0113 DEF_ADD_DATA(FloatingLiteral, {
0114 
0115     addData(llvm::hash_value(S->getValue()));
0116   }
0117 )
0118 DEF_ADD_DATA(GenericSelectionExpr, {
0119 
0120     for (const GenericSelectionExpr::ConstAssociation Assoc : S->associations()) {
0121       addData(Assoc.getType());
0122     }
0123   }
0124 )
0125 DEF_ADD_DATA(GotoStmt, {
0126 
0127     addData(S->getLabel()->getName());
0128   }
0129 )
0130 DEF_ADD_DATA(IndirectGotoStmt, {
0131 
0132     if (S->getConstantTarget())
0133       addData(S->getConstantTarget()->getName());
0134   }
0135 )
0136 DEF_ADD_DATA(IntegerLiteral, {
0137 
0138     addData(llvm::hash_value(S->getValue()));
0139   }
0140 )
0141 DEF_ADD_DATA(LabelStmt, {
0142 
0143     addData(S->getDecl()->getName());
0144   }
0145 )
0146 DEF_ADD_DATA(LambdaExpr, {
0147 
0148     for (const LambdaCapture &C : S->captures()) {
0149       addData(C.isPackExpansion());
0150       addData(C.getCaptureKind());
0151       if (C.capturesVariable())
0152         addData(C.getCapturedVar()->getType());
0153     }
0154     addData(S->isGenericLambda());
0155     addData(S->isMutable());
0156   }
0157 )
0158 DEF_ADD_DATA(MSDependentExistsStmt, {
0159 
0160     addData(S->isIfExists());
0161   }
0162 )
0163 DEF_ADD_DATA(MemberExpr, {
0164 
0165     addData(S->getMemberDecl()->getName());
0166   }
0167 )
0168 DEF_ADD_DATA(ObjCAtCatchStmt, {
0169 
0170     addData(S->hasEllipsis());
0171   }
0172 )
0173 DEF_ADD_DATA(ObjCBridgedCastExpr, {
0174 
0175     addData(S->getBridgeKind());
0176   }
0177 )
0178 DEF_ADD_DATA(ObjCIndirectCopyRestoreExpr, {
0179 
0180     addData(S->shouldCopy());
0181   }
0182 )
0183 DEF_ADD_DATA(ObjCPropertyRefExpr, {
0184 
0185     addData(S->isSuperReceiver()); addData(S->isImplicitProperty());
0186   }
0187 )
0188 DEF_ADD_DATA(PredefinedExpr, {
0189 
0190     addData(S->getIdentKind());
0191   }
0192 )
0193 DEF_ADD_DATA(Stmt, {
0194 
0195     addData(S->getStmtClass());
0196     // This ensures that non-macro-generated code isn't identical to
0197     // macro-generated code.
0198     addData(data_collection::getMacroStack(S->getBeginLoc(), Context));
0199     addData(data_collection::getMacroStack(S->getEndLoc(), Context));
0200   }
0201 )
0202 DEF_ADD_DATA(StringLiteral, {
0203 
0204     addData(S->getString());
0205 }
0206 )
0207 DEF_ADD_DATA(TypeTraitExpr, {
0208 
0209     addData(S->getTrait());
0210     for (unsigned i = 0; i < S->getNumArgs(); ++i)
0211       addData(S->getArg(i)->getType());
0212   }
0213 )
0214 DEF_ADD_DATA(UnaryOperator, {
0215 
0216     addData(S->getOpcode());
0217   }
0218 )
0219 #undef DEF_ADD_DATA