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

Derived Classes

tools/clang/include/clang/AST/Expr.h
  925 class FullExpr : public Expr {
 1050 class OpaqueValueExpr : public Expr {
 1146 class DeclRefExpr final
 1421 class IntegerLiteral : public Expr, public APIntStorage {
 1464 class FixedPointLiteral : public Expr, public APIntStorage {
 1505 class CharacterLiteral : public Expr {
 1558 class FloatingLiteral : public Expr, private APFloatStorage {
 1637 class ImaginaryLiteral : public Expr {
 1686 class StringLiteral final
 1878 class PredefinedExpr final
 1969 class ParenExpr : public Expr {
 2021 class UnaryOperator : public Expr {
 2242 class OffsetOfExpr final
 2347 class UnaryExprOrTypeTraitExpr : public Expr {
 2437 class ArraySubscriptExpr : public Expr {
 2521 class CallExpr : public Expr {
 2811 class MemberExpr final
 3052 class CompoundLiteralExpr : public Expr {
 3125 class CastExpr : public Expr {
 3409 class BinaryOperator : public Expr {
 3665 class AbstractConditionalOperator : public Expr {
 3882 class AddrLabelExpr : public Expr {
 3926 class StmtExpr : public Expr {
 3971 class ShuffleVectorExpr : public Expr {
 4039 class ConvertVectorExpr : public Expr {
 4102 class ChooseExpr : public Expr {
 4182 class GNUNullExpr : public Expr {
 4216 class VAArgExpr : public Expr {
 4267 class SourceLocExpr final : public Expr {
 4375 class InitListExpr : public Expr {
 4611 class DesignatedInitExpr final
 4909 class NoInitExpr : public Expr {
 4945 class DesignatedInitUpdateExpr : public Expr {
 4999 class ArrayInitLoopExpr : public Expr {
 5054 class ArrayInitIndexExpr : public Expr {
 5089 class ImplicitValueInitExpr : public Expr {
 5115 class ParenListExpr final
 5206 class GenericSelectionExpr final
 5490 class ExtVectorElementExpr : public Expr {
 5551 class BlockExpr : public Expr {
 5600 class AsTypeExpr : public Expr {
 5673 class PseudoObjectExpr final
 5807 class AtomicExpr : public Expr {
 5936 class TypoExpr : public Expr {
tools/clang/include/clang/AST/ExprCXX.h
  273 class CXXRewrittenBinaryOperator : public Expr {
  645 class CXXBoolLiteralExpr : public Expr {
  683 class CXXNullPtrLiteralExpr : public Expr {
  715 class CXXStdInitializerListExpr : public Expr {
  764 class CXXTypeidExpr : public Expr {
  863 class MSPropertyRefExpr : public Expr {
  937 class MSPropertySubscriptExpr : public Expr {
 1000 class CXXUuidofExpr : public Expr {
 1097 class CXXThisExpr : public Expr {
 1140 class CXXThrowExpr : public Expr {
 1202 class CXXDefaultArgExpr final : public Expr {
 1279 class CXXDefaultInitExpr : public Expr {
 1373 class CXXBindTemporaryExpr : public Expr {
 1422 class CXXConstructExpr : public Expr {
 1613 class CXXInheritedCtorInitExpr : public Expr {
 1818 class LambdaExpr final : public Expr,
 2053 class CXXScalarValueInitExpr : public Expr {
 2100 class CXXNewExpr final
 2359 class CXXDeleteExpr : public Expr {
 2479 class CXXPseudoDestructorExpr : public Expr {
 2627 class TypeTraitExpr final
 2715 class ArrayTypeTraitExpr : public Expr {
 2785 class ExpressionTraitExpr : public Expr {
 2844 class OverloadExpr : public Expr {
 3155 class DependentScopeDeclRefExpr final
 3390 class CXXUnresolvedConstructExpr final
 3511 class CXXDependentScopeMemberExpr final
 3958 class CXXNoexceptExpr : public Expr {
 4015 class PackExpansionExpr : public Expr {
 4091 class SizeOfPackExpr final
 4209 class SubstNonTypeTemplateParmExpr : public Expr {
 4269 class SubstNonTypeTemplateParmPackExpr : public Expr {
 4337 class FunctionParmPackExpr final
 4419 class MaterializeTemporaryExpr : public Expr {
 4535 class CXXFoldExpr : public Expr {
 4618 class CoroutineSuspendExpr : public Expr {
 4741 class DependentCoawaitExpr : public Expr {
 4849 class ConceptSpecializationExpr final : public Expr,
tools/clang/include/clang/AST/ExprObjC.h
   50 class ObjCStringLiteral : public Expr {
   85 class ObjCBoolLiteralExpr : public Expr {
  124 class ObjCBoxedExpr : public Expr {
  188 class ObjCArrayLiteral final
  304 class ObjCDictionaryLiteral final
  407 class ObjCEncodeExpr : public Expr {
  454 class ObjCSelectorExpr : public Expr {
  503 class ObjCProtocolExpr : public Expr {
  546 class ObjCIvarRefExpr : public Expr {
  614 class ObjCPropertyRefExpr : public Expr {
  845 class ObjCSubscriptRefExpr : public Expr {
  950 class ObjCMessageExpr final
 1492 class ObjCIsaExpr : public Expr {
 1577 class ObjCIndirectCopyRestoreExpr : public Expr {
 1699 class ObjCAvailabilityCheckExpr : public Expr {
tools/clang/include/clang/AST/ExprOpenMP.h
   44 class OMPArraySectionExpr : public Expr {

Declarations

gen/tools/clang/include/clang/AST/StmtNodes.inc
  569 ABSTRACT_STMT(EXPR(Expr, ValueStmt))
tools/clang/include/clang/AST/APValue.h
   30   class Expr;
tools/clang/include/clang/AST/ASTContext.h
   97 class Expr;
tools/clang/include/clang/AST/ASTImporter.h
   42 class Expr;
tools/clang/include/clang/AST/ASTMutationListener.h
   24   class Expr;
tools/clang/include/clang/AST/Attr.h
   39 class Expr;
tools/clang/include/clang/AST/CanonicalType.h
   35 class Expr;
tools/clang/include/clang/AST/CurrentSourceLocExprScope.h
   21 class Expr;
tools/clang/include/clang/AST/Decl.h
   59 class Expr;
tools/clang/include/clang/AST/DeclObjC.h
   48 class Expr;
tools/clang/include/clang/AST/DeclTemplate.h
   47 class Expr;
tools/clang/include/clang/AST/NSAPI.h
   20   class Expr;
tools/clang/include/clang/AST/ParentMap.h
   18 class Expr;
tools/clang/include/clang/AST/SelectorLocationsKind.h
   22   class Expr;
tools/clang/include/clang/AST/Stmt.h
   48 class Expr;
tools/clang/include/clang/AST/TemplateBase.h
   44 class Expr;
tools/clang/include/clang/AST/Type.h
  106 class Expr;
tools/clang/include/clang/AST/TypeLoc.h
   38 class Expr;
tools/clang/include/clang/Analysis/Analyses/ThreadSafetyCommon.h
   53 class Expr;
tools/clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h
   69 class Expr;
tools/clang/include/clang/Analysis/Analyses/ThreadSafetyUtil.h
   31 class Expr;
tools/clang/include/clang/Analysis/Analyses/UninitializedValues.h
   25 class Expr;
tools/clang/include/clang/Analysis/PathDiagnostic.h
   47 class Expr;
tools/clang/include/clang/Index/IndexDataConsumer.h
   18   class Expr;
tools/clang/include/clang/Sema/Designator.h
   22 class Expr;
tools/clang/include/clang/Sema/Ownership.h
   34 class Expr;
tools/clang/include/clang/Sema/ParsedAttr.h
   37 class Expr;
tools/clang/include/clang/Sema/Sema.h
  118   class Expr;
tools/clang/include/clang/Serialization/ASTReader.h
   88 class Expr;
tools/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitors.h
   31 class Expr;
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerHelpers.h
   21 class Expr;
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
   38 class Expr;
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h
   48 class Expr;
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h
   39 class Expr;
tools/clang/lib/AST/CXXABI.h
   24 class Expr;
tools/clang/lib/AST/Interp/Program.h
   30 class Expr;
tools/clang/lib/CodeGen/CGOpenCLRuntime.h
   27 class Expr;
tools/clang/lib/CodeGen/CGOpenMPRuntime.h
   39 class Expr;
tools/clang/lib/CodeGen/CodeGenModule.h
   64 class Expr;
tools/clang/lib/Index/IndexingContext.h
   31   class Expr;
tools/clang/tools/libclang/CXCursor.h
   28 class Expr;
tools/lldb/include/lldb/Core/ClangForward.h
   55 class Expr;

References

gen/tools/clang/include/clang/AST/AttrVisitor.inc
 1258     Expr * *I = A->args_begin();
 1259     Expr * *E = A->args_end();
 1275     Expr * *I = A->args_begin();
 1276     Expr * *E = A->args_end();
 1292     Expr * *I = A->args_begin();
 1293     Expr * *E = A->args_end();
 1489     Expr * *I = A->args_begin();
 1490     Expr * *E = A->args_end();
 1506     Expr * *I = A->args_begin();
 1507     Expr * *E = A->args_end();
 1523     Expr * *I = A->args_begin();
 1524     Expr * *E = A->args_end();
 1995     Expr * *I = A->args_begin();
 1996     Expr * *E = A->args_end();
 2244     Expr * *I = A->args_begin();
 2245     Expr * *E = A->args_end();
 2708     Expr * *I = A->uniforms_begin();
 2709     Expr * *E = A->uniforms_end();
 2716     Expr * *I = A->aligneds_begin();
 2717     Expr * *E = A->aligneds_end();
 2724     Expr * *I = A->alignments_begin();
 2725     Expr * *E = A->alignments_end();
 2732     Expr * *I = A->linears_begin();
 2733     Expr * *E = A->linears_end();
 2740     Expr * *I = A->steps_begin();
 2741     Expr * *E = A->steps_end();
 3401     Expr * *I = A->args_begin();
 3402     Expr * *E = A->args_end();
 3436     Expr * *I = A->args_begin();
 3437     Expr * *E = A->args_end();
 3545     Expr * *I = A->args_begin();
 3546     Expr * *E = A->args_end();
 3699     Expr * *I = A->args_begin();
 3700     Expr * *E = A->args_end();
gen/tools/clang/include/clang/AST/Attrs.inc
   53 Expr * min;
   55 Expr * max;
   58   static AMDGPUFlatWorkGroupSizeAttr *CreateImplicit(ASTContext &Ctx, Expr * Min, Expr * Max, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
   58   static AMDGPUFlatWorkGroupSizeAttr *CreateImplicit(ASTContext &Ctx, Expr * Min, Expr * Max, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
   66   static AMDGPUFlatWorkGroupSizeAttr *Create(ASTContext &Ctx, Expr * Min, Expr * Max, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
   66   static AMDGPUFlatWorkGroupSizeAttr *Create(ASTContext &Ctx, Expr * Min, Expr * Max, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
   73   static AMDGPUFlatWorkGroupSizeAttr *CreateImplicit(ASTContext &Ctx, Expr * Min, Expr * Max, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
   73   static AMDGPUFlatWorkGroupSizeAttr *CreateImplicit(ASTContext &Ctx, Expr * Min, Expr * Max, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
   77   static AMDGPUFlatWorkGroupSizeAttr *Create(ASTContext &Ctx, Expr * Min, Expr * Max, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
   77   static AMDGPUFlatWorkGroupSizeAttr *Create(ASTContext &Ctx, Expr * Min, Expr * Max, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
   82               , Expr * Min
   83               , Expr * Max
   95   Expr * getMin() const {
   99   Expr * getMax() const {
  205 Expr * min;
  207 Expr * max;
  210   static AMDGPUWavesPerEUAttr *CreateImplicit(ASTContext &Ctx, Expr * Min, Expr * Max, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
  210   static AMDGPUWavesPerEUAttr *CreateImplicit(ASTContext &Ctx, Expr * Min, Expr * Max, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
  218   static AMDGPUWavesPerEUAttr *Create(ASTContext &Ctx, Expr * Min, Expr * Max, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
  218   static AMDGPUWavesPerEUAttr *Create(ASTContext &Ctx, Expr * Min, Expr * Max, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
  225   static AMDGPUWavesPerEUAttr *CreateImplicit(ASTContext &Ctx, Expr * Min, Expr * Max, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
  225   static AMDGPUWavesPerEUAttr *CreateImplicit(ASTContext &Ctx, Expr * Min, Expr * Max, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
  229   static AMDGPUWavesPerEUAttr *Create(ASTContext &Ctx, Expr * Min, Expr * Max, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
  229   static AMDGPUWavesPerEUAttr *Create(ASTContext &Ctx, Expr * Min, Expr * Max, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
  234               , Expr * Min
  235               , Expr * Max
  244               , Expr * Min
  256   Expr * getMin() const {
  260   Expr * getMax() const {
  511   Expr * *args_;
  525   static AcquireCapabilityAttr *CreateImplicit(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
  533   static AcquireCapabilityAttr *Create(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
  538   static AcquireCapabilityAttr *CreateImplicit(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax, AcquireCapabilityAttr::Spelling S = static_cast<Spelling>(SpellingNotCalculated)) {
  542   static AcquireCapabilityAttr *Create(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax, AcquireCapabilityAttr::Spelling S = static_cast<Spelling>(SpellingNotCalculated)) {
  547               , Expr * *Args, unsigned ArgsSize
  550               , args_Size(ArgsSize), args_(new (Ctx, 16) Expr *[args_Size])
  580   typedef Expr ** args_iterator;
  594   Expr * *args_;
  597   static AcquiredAfterAttr *CreateImplicit(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
  605   static AcquiredAfterAttr *Create(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
  612   static AcquiredAfterAttr *CreateImplicit(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
  616   static AcquiredAfterAttr *Create(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
  621               , Expr * *Args, unsigned ArgsSize
  624               , args_Size(ArgsSize), args_(new (Ctx, 16) Expr *[args_Size])
  640   typedef Expr ** args_iterator;
  654   Expr * *args_;
  657   static AcquiredBeforeAttr *CreateImplicit(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
  665   static AcquiredBeforeAttr *Create(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
  672   static AcquiredBeforeAttr *CreateImplicit(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
  676   static AcquiredBeforeAttr *Create(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
  681               , Expr * *Args, unsigned ArgsSize
  684               , args_Size(ArgsSize), args_(new (Ctx, 16) Expr *[args_Size])
  700   typedef Expr ** args_iterator;
  861 Expr * alignment;
  864   static AlignValueAttr *CreateImplicit(ASTContext &Ctx, Expr * Alignment, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
  872   static AlignValueAttr *Create(ASTContext &Ctx, Expr * Alignment, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
  879   static AlignValueAttr *CreateImplicit(ASTContext &Ctx, Expr * Alignment, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
  883   static AlignValueAttr *Create(ASTContext &Ctx, Expr * Alignment, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
  888               , Expr * Alignment
  899   Expr * getAlignment() const {
  911 Expr *alignmentExpr;
  991   Expr *getAlignmentExpr() const {
 1794   Expr * *args_;
 1806   static AssertCapabilityAttr *CreateImplicit(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 1814   static AssertCapabilityAttr *Create(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 1819   static AssertCapabilityAttr *CreateImplicit(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax, AssertCapabilityAttr::Spelling S = static_cast<Spelling>(SpellingNotCalculated)) {
 1823   static AssertCapabilityAttr *Create(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax, AssertCapabilityAttr::Spelling S = static_cast<Spelling>(SpellingNotCalculated)) {
 1828               , Expr * *Args, unsigned ArgsSize
 1831               , args_Size(ArgsSize), args_(new (Ctx, 16) Expr *[args_Size])
 1858   typedef Expr ** args_iterator;
 1872   Expr * *args_;
 1875   static AssertExclusiveLockAttr *CreateImplicit(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 1883   static AssertExclusiveLockAttr *Create(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 1890   static AssertExclusiveLockAttr *CreateImplicit(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 1894   static AssertExclusiveLockAttr *Create(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 1899               , Expr * *Args, unsigned ArgsSize
 1902               , args_Size(ArgsSize), args_(new (Ctx, 16) Expr *[args_Size])
 1918   typedef Expr ** args_iterator;
 1932   Expr * *args_;
 1935   static AssertSharedLockAttr *CreateImplicit(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 1943   static AssertSharedLockAttr *Create(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 1950   static AssertSharedLockAttr *CreateImplicit(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 1954   static AssertSharedLockAttr *Create(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 1959               , Expr * *Args, unsigned ArgsSize
 1962               , args_Size(ArgsSize), args_(new (Ctx, 16) Expr *[args_Size])
 1978   typedef Expr ** args_iterator;
 1991 Expr * alignment;
 1993 Expr * offset;
 1996   static AssumeAlignedAttr *CreateImplicit(ASTContext &Ctx, Expr * Alignment, Expr * Offset, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 1996   static AssumeAlignedAttr *CreateImplicit(ASTContext &Ctx, Expr * Alignment, Expr * Offset, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 2004   static AssumeAlignedAttr *Create(ASTContext &Ctx, Expr * Alignment, Expr * Offset, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 2004   static AssumeAlignedAttr *Create(ASTContext &Ctx, Expr * Alignment, Expr * Offset, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 2011   static AssumeAlignedAttr *CreateImplicit(ASTContext &Ctx, Expr * Alignment, Expr * Offset, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 2011   static AssumeAlignedAttr *CreateImplicit(ASTContext &Ctx, Expr * Alignment, Expr * Offset, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 2015   static AssumeAlignedAttr *Create(ASTContext &Ctx, Expr * Alignment, Expr * Offset, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 2015   static AssumeAlignedAttr *Create(ASTContext &Ctx, Expr * Alignment, Expr * Offset, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 2020               , Expr * Alignment
 2021               , Expr * Offset
 2030               , Expr * Alignment
 2042   Expr * getAlignment() const {
 2046   Expr * getOffset() const {
 2955 Expr * maxThreads;
 2957 Expr * minBlocks;
 2960   static CUDALaunchBoundsAttr *CreateImplicit(ASTContext &Ctx, Expr * MaxThreads, Expr * MinBlocks, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 2960   static CUDALaunchBoundsAttr *CreateImplicit(ASTContext &Ctx, Expr * MaxThreads, Expr * MinBlocks, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 2968   static CUDALaunchBoundsAttr *Create(ASTContext &Ctx, Expr * MaxThreads, Expr * MinBlocks, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 2968   static CUDALaunchBoundsAttr *Create(ASTContext &Ctx, Expr * MaxThreads, Expr * MinBlocks, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 2975   static CUDALaunchBoundsAttr *CreateImplicit(ASTContext &Ctx, Expr * MaxThreads, Expr * MinBlocks, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 2975   static CUDALaunchBoundsAttr *CreateImplicit(ASTContext &Ctx, Expr * MaxThreads, Expr * MinBlocks, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 2979   static CUDALaunchBoundsAttr *Create(ASTContext &Ctx, Expr * MaxThreads, Expr * MinBlocks, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 2979   static CUDALaunchBoundsAttr *Create(ASTContext &Ctx, Expr * MaxThreads, Expr * MinBlocks, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 2984               , Expr * MaxThreads
 2985               , Expr * MinBlocks
 2994               , Expr * MaxThreads
 3006   Expr * getMaxThreads() const {
 3010   Expr * getMinBlocks() const {
 4257 Expr * cond;
 4275   static DiagnoseIfAttr *CreateImplicit(ASTContext &Ctx, Expr * Cond, llvm::StringRef Message, DiagnosticType DiagnosticType, bool ArgDependent, NamedDecl * Parent, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 4283   static DiagnoseIfAttr *Create(ASTContext &Ctx, Expr * Cond, llvm::StringRef Message, DiagnosticType DiagnosticType, bool ArgDependent, NamedDecl * Parent, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 4290   static DiagnoseIfAttr *CreateImplicit(ASTContext &Ctx, Expr * Cond, llvm::StringRef Message, DiagnosticType DiagnosticType, bool ArgDependent, NamedDecl * Parent, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 4294   static DiagnoseIfAttr *Create(ASTContext &Ctx, Expr * Cond, llvm::StringRef Message, DiagnosticType DiagnosticType, bool ArgDependent, NamedDecl * Parent, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 4298   static DiagnoseIfAttr *CreateImplicit(ASTContext &Ctx, Expr * Cond, llvm::StringRef Message, DiagnosticType DiagnosticType, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 4306   static DiagnoseIfAttr *Create(ASTContext &Ctx, Expr * Cond, llvm::StringRef Message, DiagnosticType DiagnosticType, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 4313   static DiagnoseIfAttr *CreateImplicit(ASTContext &Ctx, Expr * Cond, llvm::StringRef Message, DiagnosticType DiagnosticType, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 4317   static DiagnoseIfAttr *Create(ASTContext &Ctx, Expr * Cond, llvm::StringRef Message, DiagnosticType DiagnosticType, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 4322               , Expr * Cond
 4340               , Expr * Cond
 4359   Expr * getCond() const {
 4496 Expr * cond;
 4502   static EnableIfAttr *CreateImplicit(ASTContext &Ctx, Expr * Cond, llvm::StringRef Message, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 4510   static EnableIfAttr *Create(ASTContext &Ctx, Expr * Cond, llvm::StringRef Message, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 4517   static EnableIfAttr *CreateImplicit(ASTContext &Ctx, Expr * Cond, llvm::StringRef Message, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 4521   static EnableIfAttr *Create(ASTContext &Ctx, Expr * Cond, llvm::StringRef Message, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 4526               , Expr * Cond
 4541   Expr * getCond() const {
 4677 Expr * successValue;
 4680   Expr * *args_;
 4683   static ExclusiveTrylockFunctionAttr *CreateImplicit(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 4683   static ExclusiveTrylockFunctionAttr *CreateImplicit(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 4691   static ExclusiveTrylockFunctionAttr *Create(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 4691   static ExclusiveTrylockFunctionAttr *Create(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 4698   static ExclusiveTrylockFunctionAttr *CreateImplicit(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 4698   static ExclusiveTrylockFunctionAttr *CreateImplicit(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 4702   static ExclusiveTrylockFunctionAttr *Create(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 4702   static ExclusiveTrylockFunctionAttr *Create(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 4707               , Expr * SuccessValue
 4708               , Expr * *Args, unsigned ArgsSize
 4712               , args_Size(ArgsSize), args_(new (Ctx, 16) Expr *[args_Size])
 4718               , Expr * SuccessValue
 4730   Expr * getSuccessValue() const {
 4734   typedef Expr ** args_iterator;
 5209 Expr * arg;
 5212   static GuardedByAttr *CreateImplicit(ASTContext &Ctx, Expr * Arg, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 5220   static GuardedByAttr *Create(ASTContext &Ctx, Expr * Arg, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 5227   static GuardedByAttr *CreateImplicit(ASTContext &Ctx, Expr * Arg, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 5231   static GuardedByAttr *Create(ASTContext &Ctx, Expr * Arg, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 5236               , Expr * Arg
 5247   Expr * getArg() const {
 5894 Expr * arg;
 5897   static LockReturnedAttr *CreateImplicit(ASTContext &Ctx, Expr * Arg, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 5905   static LockReturnedAttr *Create(ASTContext &Ctx, Expr * Arg, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 5912   static LockReturnedAttr *CreateImplicit(ASTContext &Ctx, Expr * Arg, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 5916   static LockReturnedAttr *Create(ASTContext &Ctx, Expr * Arg, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 5921               , Expr * Arg
 5932   Expr * getArg() const {
 5943   Expr * *args_;
 5946   static LocksExcludedAttr *CreateImplicit(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 5954   static LocksExcludedAttr *Create(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 5961   static LocksExcludedAttr *CreateImplicit(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 5965   static LocksExcludedAttr *Create(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 5970               , Expr * *Args, unsigned ArgsSize
 5973               , args_Size(ArgsSize), args_(new (Ctx, 16) Expr *[args_Size])
 5989   typedef Expr ** args_iterator;
 6031 Expr * value;
 6044   static LoopHintAttr *CreateImplicit(ASTContext &Ctx, OptionType Option, LoopHintState State, Expr * Value, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 6052   static LoopHintAttr *Create(ASTContext &Ctx, OptionType Option, LoopHintState State, Expr * Value, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 6057   static LoopHintAttr *CreateImplicit(ASTContext &Ctx, OptionType Option, LoopHintState State, Expr * Value, SourceRange Range, AttributeCommonInfo::Syntax Syntax, LoopHintAttr::Spelling S = static_cast<Spelling>(SpellingNotCalculated)) {
 6061   static LoopHintAttr *Create(ASTContext &Ctx, OptionType Option, LoopHintState State, Expr * Value, SourceRange Range, AttributeCommonInfo::Syntax Syntax, LoopHintAttr::Spelling S = static_cast<Spelling>(SpellingNotCalculated)) {
 6068               , Expr * Value
 6163   Expr * getValue() const {
 8334 Expr * allocator;
 8337   static OMPAllocateDeclAttr *CreateImplicit(ASTContext &Ctx, AllocatorTypeTy AllocatorType, Expr * Allocator, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 8345   static OMPAllocateDeclAttr *Create(ASTContext &Ctx, AllocatorTypeTy AllocatorType, Expr * Allocator, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 8352   static OMPAllocateDeclAttr *CreateImplicit(ASTContext &Ctx, AllocatorTypeTy AllocatorType, Expr * Allocator, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 8356   static OMPAllocateDeclAttr *Create(ASTContext &Ctx, AllocatorTypeTy AllocatorType, Expr * Allocator, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 8362               , Expr * Allocator
 8411   Expr * getAllocator() const {
 8518 Expr * simdlen;
 8521   Expr * *uniforms_;
 8524   Expr * *aligneds_;
 8527   Expr * *alignments_;
 8530   Expr * *linears_;
 8536   Expr * *steps_;
 8539   static OMPDeclareSimdDeclAttr *CreateImplicit(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 8539   static OMPDeclareSimdDeclAttr *CreateImplicit(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 8539   static OMPDeclareSimdDeclAttr *CreateImplicit(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 8539   static OMPDeclareSimdDeclAttr *CreateImplicit(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 8539   static OMPDeclareSimdDeclAttr *CreateImplicit(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 8539   static OMPDeclareSimdDeclAttr *CreateImplicit(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 8547   static OMPDeclareSimdDeclAttr *Create(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 8547   static OMPDeclareSimdDeclAttr *Create(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 8547   static OMPDeclareSimdDeclAttr *Create(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 8547   static OMPDeclareSimdDeclAttr *Create(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 8547   static OMPDeclareSimdDeclAttr *Create(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 8547   static OMPDeclareSimdDeclAttr *Create(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 8554   static OMPDeclareSimdDeclAttr *CreateImplicit(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 8554   static OMPDeclareSimdDeclAttr *CreateImplicit(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 8554   static OMPDeclareSimdDeclAttr *CreateImplicit(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 8554   static OMPDeclareSimdDeclAttr *CreateImplicit(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 8554   static OMPDeclareSimdDeclAttr *CreateImplicit(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 8554   static OMPDeclareSimdDeclAttr *CreateImplicit(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 8558   static OMPDeclareSimdDeclAttr *Create(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 8558   static OMPDeclareSimdDeclAttr *Create(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 8558   static OMPDeclareSimdDeclAttr *Create(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 8558   static OMPDeclareSimdDeclAttr *Create(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 8558   static OMPDeclareSimdDeclAttr *Create(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 8558   static OMPDeclareSimdDeclAttr *Create(ASTContext &Ctx, BranchStateTy BranchState, Expr * Simdlen, Expr * *Uniforms, unsigned UniformsSize, Expr * *Aligneds, unsigned AlignedsSize, Expr * *Alignments, unsigned AlignmentsSize, Expr * *Linears, unsigned LinearsSize, unsigned *Modifiers, unsigned ModifiersSize, Expr * *Steps, unsigned StepsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 8564               , Expr * Simdlen
 8565               , Expr * *Uniforms, unsigned UniformsSize
 8566               , Expr * *Aligneds, unsigned AlignedsSize
 8567               , Expr * *Alignments, unsigned AlignmentsSize
 8568               , Expr * *Linears, unsigned LinearsSize
 8570               , Expr * *Steps, unsigned StepsSize
 8575               , uniforms_Size(UniformsSize), uniforms_(new (Ctx, 16) Expr *[uniforms_Size])
 8576               , aligneds_Size(AlignedsSize), aligneds_(new (Ctx, 16) Expr *[aligneds_Size])
 8577               , alignments_Size(AlignmentsSize), alignments_(new (Ctx, 16) Expr *[alignments_Size])
 8578               , linears_Size(LinearsSize), linears_(new (Ctx, 16) Expr *[linears_Size])
 8580               , steps_Size(StepsSize), steps_(new (Ctx, 16) Expr *[steps_Size])
 8592               , Expr * Simdlen
 8635   Expr * getSimdlen() const {
 8639   typedef Expr ** uniforms_iterator;
 8646   typedef Expr ** aligneds_iterator;
 8653   typedef Expr ** alignments_iterator;
 8660   typedef Expr ** linears_iterator;
 8674   typedef Expr ** steps_iterator;
 8686       if (auto *E = getSimdlen()) {
 8694         for (auto *E : uniforms()) {
 8702       for (auto *E : aligneds()) {
 8714       for (auto *E : linears()) {
 8870 Expr * variantFuncRef;
 8872 Expr * score;
 8902   static OMPDeclareVariantAttr *CreateImplicit(ASTContext &Ctx, Expr * VariantFuncRef, Expr * Score, CtxSelectorSetType CtxSelectorSet, ScoreType CtxScore, CtxSelectorType CtxSelector, StringRef *ImplVendors, unsigned ImplVendorsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 8902   static OMPDeclareVariantAttr *CreateImplicit(ASTContext &Ctx, Expr * VariantFuncRef, Expr * Score, CtxSelectorSetType CtxSelectorSet, ScoreType CtxScore, CtxSelectorType CtxSelector, StringRef *ImplVendors, unsigned ImplVendorsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 8910   static OMPDeclareVariantAttr *Create(ASTContext &Ctx, Expr * VariantFuncRef, Expr * Score, CtxSelectorSetType CtxSelectorSet, ScoreType CtxScore, CtxSelectorType CtxSelector, StringRef *ImplVendors, unsigned ImplVendorsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 8910   static OMPDeclareVariantAttr *Create(ASTContext &Ctx, Expr * VariantFuncRef, Expr * Score, CtxSelectorSetType CtxSelectorSet, ScoreType CtxScore, CtxSelectorType CtxSelector, StringRef *ImplVendors, unsigned ImplVendorsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 8917   static OMPDeclareVariantAttr *CreateImplicit(ASTContext &Ctx, Expr * VariantFuncRef, Expr * Score, CtxSelectorSetType CtxSelectorSet, ScoreType CtxScore, CtxSelectorType CtxSelector, StringRef *ImplVendors, unsigned ImplVendorsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 8917   static OMPDeclareVariantAttr *CreateImplicit(ASTContext &Ctx, Expr * VariantFuncRef, Expr * Score, CtxSelectorSetType CtxSelectorSet, ScoreType CtxScore, CtxSelectorType CtxSelector, StringRef *ImplVendors, unsigned ImplVendorsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 8921   static OMPDeclareVariantAttr *Create(ASTContext &Ctx, Expr * VariantFuncRef, Expr * Score, CtxSelectorSetType CtxSelectorSet, ScoreType CtxScore, CtxSelectorType CtxSelector, StringRef *ImplVendors, unsigned ImplVendorsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 8921   static OMPDeclareVariantAttr *Create(ASTContext &Ctx, Expr * VariantFuncRef, Expr * Score, CtxSelectorSetType CtxSelectorSet, ScoreType CtxScore, CtxSelectorType CtxSelector, StringRef *ImplVendors, unsigned ImplVendorsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 8926               , Expr * VariantFuncRef
 8927               , Expr * Score
 8953               , Expr * VariantFuncRef
 8954               , Expr * Score
 8973   Expr * getVariantFuncRef() const {
 8977   Expr * getScore() const {
 9059       if (const Expr *E = getScore()) {
 9069       if (const Expr *E = getVariantFuncRef()) {
 9106 Expr * ref;
 9109   static OMPReferencedVarAttr *CreateImplicit(ASTContext &Ctx, Expr * Ref, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 9117   static OMPReferencedVarAttr *Create(ASTContext &Ctx, Expr * Ref, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
 9124   static OMPReferencedVarAttr *CreateImplicit(ASTContext &Ctx, Expr * Ref, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 9128   static OMPReferencedVarAttr *Create(ASTContext &Ctx, Expr * Ref, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
 9133               , Expr * Ref
 9144   Expr * getRef() const {
11980 Expr * arg;
11983   static PtGuardedByAttr *CreateImplicit(ASTContext &Ctx, Expr * Arg, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
11991   static PtGuardedByAttr *Create(ASTContext &Ctx, Expr * Arg, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
11998   static PtGuardedByAttr *CreateImplicit(ASTContext &Ctx, Expr * Arg, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
12002   static PtGuardedByAttr *Create(ASTContext &Ctx, Expr * Arg, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
12007               , Expr * Arg
12018   Expr * getArg() const {
12352   Expr * *args_;
12368   static ReleaseCapabilityAttr *CreateImplicit(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
12376   static ReleaseCapabilityAttr *Create(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
12381   static ReleaseCapabilityAttr *CreateImplicit(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax, ReleaseCapabilityAttr::Spelling S = static_cast<Spelling>(SpellingNotCalculated)) {
12385   static ReleaseCapabilityAttr *Create(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax, ReleaseCapabilityAttr::Spelling S = static_cast<Spelling>(SpellingNotCalculated)) {
12390               , Expr * *Args, unsigned ArgsSize
12393               , args_Size(ArgsSize), args_(new (Ctx, 16) Expr *[args_Size])
12428   typedef Expr ** args_iterator;
12546   Expr * *args_;
12562   static RequiresCapabilityAttr *CreateImplicit(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
12570   static RequiresCapabilityAttr *Create(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
12575   static RequiresCapabilityAttr *CreateImplicit(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax, RequiresCapabilityAttr::Spelling S = static_cast<Spelling>(SpellingNotCalculated)) {
12579   static RequiresCapabilityAttr *Create(ASTContext &Ctx, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax, RequiresCapabilityAttr::Spelling S = static_cast<Spelling>(SpellingNotCalculated)) {
12584               , Expr * *Args, unsigned ArgsSize
12587               , args_Size(ArgsSize), args_(new (Ctx, 16) Expr *[args_Size])
12620   typedef Expr ** args_iterator;
13181 Expr * successValue;
13184   Expr * *args_;
13187   static SharedTrylockFunctionAttr *CreateImplicit(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
13187   static SharedTrylockFunctionAttr *CreateImplicit(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
13195   static SharedTrylockFunctionAttr *Create(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
13195   static SharedTrylockFunctionAttr *Create(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
13202   static SharedTrylockFunctionAttr *CreateImplicit(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
13202   static SharedTrylockFunctionAttr *CreateImplicit(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
13206   static SharedTrylockFunctionAttr *Create(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
13206   static SharedTrylockFunctionAttr *Create(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax) {
13211               , Expr * SuccessValue
13212               , Expr * *Args, unsigned ArgsSize
13216               , args_Size(ArgsSize), args_(new (Ctx, 16) Expr *[args_Size])
13222               , Expr * SuccessValue
13234   Expr * getSuccessValue() const {
13238   typedef Expr ** args_iterator;
14041 Expr * successValue;
14044   Expr * *args_;
14056   static TryAcquireCapabilityAttr *CreateImplicit(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
14056   static TryAcquireCapabilityAttr *CreateImplicit(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
14064   static TryAcquireCapabilityAttr *Create(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
14064   static TryAcquireCapabilityAttr *Create(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, const AttributeCommonInfo &CommonInfo = {SourceRange{}}) {
14069   static TryAcquireCapabilityAttr *CreateImplicit(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax, TryAcquireCapabilityAttr::Spelling S = static_cast<Spelling>(SpellingNotCalculated)) {
14069   static TryAcquireCapabilityAttr *CreateImplicit(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax, TryAcquireCapabilityAttr::Spelling S = static_cast<Spelling>(SpellingNotCalculated)) {
14073   static TryAcquireCapabilityAttr *Create(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax, TryAcquireCapabilityAttr::Spelling S = static_cast<Spelling>(SpellingNotCalculated)) {
14073   static TryAcquireCapabilityAttr *Create(ASTContext &Ctx, Expr * SuccessValue, Expr * *Args, unsigned ArgsSize, SourceRange Range, AttributeCommonInfo::Syntax Syntax, TryAcquireCapabilityAttr::Spelling S = static_cast<Spelling>(SpellingNotCalculated)) {
14078               , Expr * SuccessValue
14079               , Expr * *Args, unsigned ArgsSize
14083               , args_Size(ArgsSize), args_(new (Ctx, 16) Expr *[args_Size])
14089               , Expr * SuccessValue
14112   Expr * getSuccessValue() const {
14116   typedef Expr ** args_iterator;
gen/tools/clang/include/clang/Sema/AttrTemplateInstantiate.inc
   53       auto *tempInstArgs = new (C, 16) Expr *[A->args_size()];
   56         Expr * *TI = tempInstArgs;
   57         Expr * *I = A->args_begin();
   58         Expr * *E = A->args_end();
   61           *TI = Result.getAs<Expr>();
   68       auto *tempInstArgs = new (C, 16) Expr *[A->args_size()];
   71         Expr * *TI = tempInstArgs;
   72         Expr * *I = A->args_begin();
   73         Expr * *E = A->args_end();
   76           *TI = Result.getAs<Expr>();
   83       auto *tempInstArgs = new (C, 16) Expr *[A->args_size()];
   86         Expr * *TI = tempInstArgs;
   87         Expr * *I = A->args_begin();
   88         Expr * *E = A->args_end();
   91           *TI = Result.getAs<Expr>();
  174       auto *tempInstArgs = new (C, 16) Expr *[A->args_size()];
  177         Expr * *TI = tempInstArgs;
  178         Expr * *I = A->args_begin();
  179         Expr * *E = A->args_end();
  182           *TI = Result.getAs<Expr>();
  189       auto *tempInstArgs = new (C, 16) Expr *[A->args_size()];
  192         Expr * *TI = tempInstArgs;
  193         Expr * *I = A->args_begin();
  194         Expr * *E = A->args_end();
  197           *TI = Result.getAs<Expr>();
  204       auto *tempInstArgs = new (C, 16) Expr *[A->args_size()];
  207         Expr * *TI = tempInstArgs;
  208         Expr * *I = A->args_begin();
  209         Expr * *E = A->args_end();
  212           *TI = Result.getAs<Expr>();
  391       Expr * tempInstCond;
  395         tempInstCond = Result.getAs<Expr>();
  409       Expr * tempInstCond;
  413         tempInstCond = Result.getAs<Expr>();
  427       Expr * tempInstSuccessValue;
  431         tempInstSuccessValue = Result.getAs<Expr>();
  433       auto *tempInstArgs = new (C, 16) Expr *[A->args_size()];
  436         Expr * *TI = tempInstArgs;
  437         Expr * *I = A->args_begin();
  438         Expr * *E = A->args_end();
  441           *TI = Result.getAs<Expr>();
  484       Expr * tempInstArg;
  488         tempInstArg = Result.getAs<Expr>();
  550       Expr * tempInstArg;
  554         tempInstArg = Result.getAs<Expr>();
  560       auto *tempInstArgs = new (C, 16) Expr *[A->args_size()];
  563         Expr * *TI = tempInstArgs;
  564         Expr * *I = A->args_begin();
  565         Expr * *E = A->args_end();
  568           *TI = Result.getAs<Expr>();
 1023       Expr * tempInstArg;
 1027         tempInstArg = Result.getAs<Expr>();
 1061       auto *tempInstArgs = new (C, 16) Expr *[A->args_size()];
 1064         Expr * *TI = tempInstArgs;
 1065         Expr * *I = A->args_begin();
 1066         Expr * *E = A->args_end();
 1069           *TI = Result.getAs<Expr>();
 1084       auto *tempInstArgs = new (C, 16) Expr *[A->args_size()];
 1087         Expr * *TI = tempInstArgs;
 1088         Expr * *I = A->args_begin();
 1089         Expr * *E = A->args_end();
 1092           *TI = Result.getAs<Expr>();
 1139       Expr * tempInstSuccessValue;
 1143         tempInstSuccessValue = Result.getAs<Expr>();
 1145       auto *tempInstArgs = new (C, 16) Expr *[A->args_size()];
 1148         Expr * *TI = tempInstArgs;
 1149         Expr * *I = A->args_begin();
 1150         Expr * *E = A->args_end();
 1153           *TI = Result.getAs<Expr>();
 1220       Expr * tempInstSuccessValue;
 1224         tempInstSuccessValue = Result.getAs<Expr>();
 1226       auto *tempInstArgs = new (C, 16) Expr *[A->args_size()];
 1229         Expr * *TI = tempInstArgs;
 1230         Expr * *I = A->args_begin();
 1231         Expr * *E = A->args_end();
 1234           *TI = Result.getAs<Expr>();
gen/tools/clang/include/clang/Serialization/AttrPCHRead.inc
   21     Expr * min = Record.readExpr();
   22     Expr * max = Record.readExpr();
   49     Expr * min = Record.readExpr();
   50     Expr * max = Record.readExpr();
  100     SmallVector<Expr *, 4> args;
  113     SmallVector<Expr *, 4> args;
  126     SmallVector<Expr *, 4> args;
  159     Expr * alignment = Record.readExpr();
  305     SmallVector<Expr *, 4> args;
  318     SmallVector<Expr *, 4> args;
  331     SmallVector<Expr *, 4> args;
  343     Expr * alignment = Record.readExpr();
  344     Expr * offset = Record.readExpr();
  509     Expr * maxThreads = Record.readExpr();
  510     Expr * minBlocks = Record.readExpr();
  729     Expr * cond = Record.readExpr();
  758     Expr * cond = Record.readExpr();
  785     Expr * successValue = Record.readExpr();
  787     SmallVector<Expr *, 4> args;
  876     Expr * arg = Record.readExpr();
  998     Expr * arg = Record.readExpr();
 1008     SmallVector<Expr *, 4> args;
 1021     Expr * value = Record.readExpr();
 1405     Expr * allocator = Record.readExpr();
 1429     Expr * simdlen = Record.readExpr();
 1431     SmallVector<Expr *, 4> uniforms;
 1436     SmallVector<Expr *, 4> aligneds;
 1441     SmallVector<Expr *, 4> alignments;
 1446     SmallVector<Expr *, 4> linears;
 1456     SmallVector<Expr *, 4> steps;
 1477     Expr * variantFuncRef = Record.readExpr();
 1478     Expr * score = Record.readExpr();
 1498     Expr * ref = Record.readExpr();
 1973     Expr * arg = Record.readExpr();
 2036     SmallVector<Expr *, 4> args;
 2066     SmallVector<Expr *, 4> args;
 2161     Expr * successValue = Record.readExpr();
 2163     SmallVector<Expr *, 4> args;
 2303     Expr * successValue = Record.readExpr();
 2305     SmallVector<Expr *, 4> args;
include/llvm/ADT/ArrayRef.h
  108         const ArrayRef<U *> &A,
  110            std::is_convertible<U *const *, T const *>::value>::type * = nullptr)
  118       const SmallVectorTemplateCommon<U *, DummyT> &Vec,
  120           std::is_convertible<U *const *, T const *>::value>::type * = nullptr)
include/llvm/ADT/DenseMapInfo.h
   39   static inline T* getEmptyKey() {
   41     Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
   45   static inline T* getTombstoneKey() {
   47     Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
   51   static unsigned getHashValue(const T *PtrVal) {
   56   static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; }
   56   static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; }
include/llvm/ADT/STLExtras.h
   75       typename std::add_pointer<typename std::add_const<T>::type>::type;
include/llvm/ADT/SmallSet.h
  249 class SmallSet<PointeeType*, N> : public SmallPtrSet<PointeeType*, N> {};
include/llvm/Support/Casting.h
   34   using SimpleType = From; // The real type this represents...
   37   static SimpleType &getSimplifiedValue(From &Val) { return Val; }
   41   using NonConstSimpleType = typename simplify_type<From>::SimpleType;
   47   static RetType getSimplifiedValue(const From& Val) {
   57   static inline bool doit(const From &Val) {
   58     return To::classof(&Val);
   66   static inline bool doit(const From &) { return true; }
   76   static inline bool doit(const From &Val) {
   77     return isa_impl<To, From>::doit(Val);
  104   static inline bool doit(const From *Val) {
  106     return isa_impl<To, From>::doit(*Val);
  106     return isa_impl<To, From>::doit(*Val);
  122     return isa_impl_wrap<To, SimpleFrom,
  132     return isa_impl_cl<To,FromTy>::doit(Val);
  141 template <class X, class Y> LLVM_NODISCARD inline bool isa(const Y &Val) {
  142   return isa_impl_wrap<X, const Y,
  142   return isa_impl_wrap<X, const Y,
  143                        typename simplify_type<const Y>::SimpleType>::doit(Val);
  153   return isa<X>(Val);
  172   using ret_type = To *;       // Pointer arg case, return Ty*
  176   using ret_type = const To *; // Constant pointer arg case, return const Ty*
  198   using ret_type = typename cast_retty<To, SimpleFrom>::ret_type;
  204   using ret_type = typename cast_retty_impl<To,FromTy>::ret_type;
  210       To, From, typename simplify_type<From>::SimpleType>::ret_type;
  227   static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  228     typename cast_retty<To, FromTy>::ret_type Res2
  236       std::is_same<X, typename simplify_type<X>::SimpleType>::value;
  236       std::is_same<X, typename simplify_type<X>::SimpleType>::value;
  256 inline typename cast_retty<X, Y>::ret_type cast(Y &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) {
  263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  265   return cast_convert_val<X, Y*,
  265   return cast_convert_val<X, Y*,
  266                           typename simplify_type<Y*>::SimpleType>::doit(Val);
  296                             typename cast_retty<X, Y>::ret_type>::type
  305 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type
  305 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type
  306 cast_or_null(Y *Val) {
  309   return cast<X>(Val);
  337 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) {
  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) {
  343   return isa<X>(Val) ? cast<X>(Val) : nullptr;
  343   return isa<X>(Val) ? cast<X>(Val) : nullptr;
  366 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type
  366 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type
  367 dyn_cast_or_null(Y *Val) {
  368   return (Val && isa<X>(Val)) ? cast<X>(Val) : nullptr;
  368   return (Val && isa<X>(Val)) ? cast<X>(Val) : nullptr;
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) {
include/llvm/Support/type_traits.h
   55 struct add_const_past_pointer { using type = const T; };
tools/clang/include/clang/AST/APValue.h
  139     typedef llvm::PointerUnion<const ValueDecl *, const Expr *, TypeInfoLValue,
  146     LValueBase(const Expr *P, unsigned I = 0, unsigned V = 0);
tools/clang/include/clang/AST/ASTContext.h
  166     BlockVarCopyInit(Expr *CopyExpr, bool CanThrow)
  168     void setExprAndFlag(Expr *CopyExpr, bool CanThrow) {
  171     Expr *getCopyExpr() const { return ExprAndFlag.getPointer(); }
  173     llvm::PointerIntPair<Expr *, 1, bool> ExprAndFlag;
  664   template <typename NodeT> DynTypedNodeList getParents(const NodeT &Node) {
 1312   QualType getVariableArrayType(QualType EltTy, Expr *NumElts,
 1322   QualType getDependentSizedArrayType(QualType EltTy, Expr *NumElts,
 1336                                 const Expr *SizeExpr,
 1355   QualType getDependentVectorType(QualType VectorType, Expr *SizeExpr,
 1371                                           Expr *SizeExpr,
 1375                                         Expr *AddrSpaceExpr,
 1520   QualType getTypeOfExprType(Expr *e) const;
 1524   QualType getDecltypeType(Expr *e, QualType UnderlyingType) const;
 2513   QualType isPromotableBitField(Expr *E) const;
 2694   bool isSentinelNullExpr(const Expr *E);
 2732   void setBlockVarCopyInit(const VarDecl* VD, Expr *CopyExpr, bool CanThrow);
tools/clang/include/clang/AST/ASTImporter.h
  413     llvm::Expected<Expr *> Import(Expr *FromE);
  413     llvm::Expected<Expr *> Import(Expr *FromE);
tools/clang/include/clang/AST/ASTMutationListener.h
   85                                       Expr *ThisArg) {}
tools/clang/include/clang/AST/ASTNodeTraverser.h
  241     if (const Expr *RC = TPL->getRequiresClause())
  352     if (const Expr *Init = D->getInitExpr())
  375     if (Expr *Init = D->getInClassInitializer())
  391     if (const auto *E = D->getBinding())
  402     for (const auto *E : D->varlists())
  408     if (const auto *Initializer = D->getInitializer())
  422     for (const auto *E : D->varlists())
  615     if (Expr *Source = Node->getSourceExpr())
tools/clang/include/clang/AST/ASTTypeTraits.h
   65     return ASTNodeKind(KindToKindId<T>::Id);
  174   struct KindToKindId<const T> : KindToKindId<T> {};
  234   static DynTypedNode create(const T &Node) {
  235     return BaseConverter<T>::create(Node);
  251   const T *get() const {
  252     return BaseConverter<T>::get(NodeKind, Storage.buffer);
  259   const T &getUnchecked() const {
  260     return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
  394     static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
  395       if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
  399     static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
  401       return *cast<T>(static_cast<const BaseT *>(
  474     : public DynCastPtrConverter<T, Stmt> {};
tools/clang/include/clang/AST/CurrentSourceLocExprScope.h
   28   const Expr *DefaultExpr = nullptr;
   36   const Expr *getDefaultExpr() const { return DefaultExpr; }
   41   explicit CurrentSourceLocExprScope(const Expr *DefaultExpr)
   51   SourceLocExprScopeGuard(const Expr *DefaultExpr,
tools/clang/include/clang/AST/Decl.h
 1225   const Expr *getAnyInitializer() const {
 1232   const Expr *getAnyInitializer(const VarDecl *&D) const;
 1235   const Expr *getInit() const {
 1238   Expr *getInit();
 1243   void setInit(Expr *I);
 1609               TypeSourceInfo *TInfo, StorageClass S, Expr *DefArg)
 1623                              StorageClass S, Expr *DefArg);
 1682   Expr *getDefaultArg();
 1683   const Expr *getDefaultArg() const {
 1687   void setDefaultArg(Expr *defarg);
 1692   void setUninstantiatedDefaultArg(Expr *arg);
 1693   Expr *getUninstantiatedDefaultArg();
 1694   const Expr *getUninstantiatedDefaultArg() const {
 2681     Expr *Init;
 2682     Expr *BitWidth;
 2699             QualType T, TypeSourceInfo *TInfo, Expr *BW, bool Mutable,
 2715                            TypeSourceInfo *TInfo, Expr *BW, bool Mutable,
 2739   Expr *getBitWidth() const {
 2752   void setBitWidth(Expr *Width) {
 2797   Expr *getInClassInitializer() const {
 2807   void setInClassInitializer(Expr *Init) {
 2868                    IdentifierInfo *Id, QualType T, Expr *E,
 2877                                   QualType T, Expr *E,
 2881   const Expr *getInitExpr() const { return (const Expr*) Init; }
 2882   Expr *getInitExpr() { return (Expr*) Init; }
 2885   void setInitExpr(Expr *E) { Init = (Stmt*) E; }
 3976     Expr *CopyExpr;
 3979     Capture(VarDecl *variable, bool byRef, bool nested, Expr *copy)
 4004     Expr *getCopyExpr() const { return CopyExpr; }
 4005     void setCopyExpr(Expr *e) { CopyExpr = e; }
tools/clang/include/clang/AST/DeclCXX.h
 1793   llvm::PointerIntPair<Expr *, 2, ExplicitSpecKind> ExplicitSpec{
 1798   ExplicitSpecifier(Expr *Expression, ExplicitSpecKind Kind)
 1801   const Expr *getExpr() const { return ExplicitSpec.getPointer(); }
 1802   Expr *getExpr() { return ExplicitSpec.getPointer(); }
 1824   void setExpr(Expr *E) { ExplicitSpec.setPointer(E); }
 1964   CXXMethodDecl *getDevirtualizedMethod(const Expr *Base, bool IsAppleKext);
 1966   const CXXMethodDecl *getDevirtualizedMethod(const Expr *Base,
 2182                      SourceLocation L, Expr *Init, SourceLocation R,
 2188                      SourceLocation MemberLoc, SourceLocation L, Expr *Init,
 2194                      SourceLocation MemberLoc, SourceLocation L, Expr *Init,
 2200                      SourceLocation L, Expr *Init, SourceLocation R);
 2335   Expr *getInit() const { return static_cast<Expr *>(Init); }
 2636   Expr *OperatorDeleteThisArg = nullptr;
 2658   void setOperatorDelete(FunctionDecl *OD, Expr *ThisArg);
 2664   Expr *getOperatorDeleteThisArg() const {
 3670   llvm::PointerIntPair<Expr *, 1, bool> AssertExprAndFailed;
 3675                    Expr *AssertExpr, StringLiteral *Message,
 3688                                   Expr *AssertExpr, StringLiteral *Message,
 3692   Expr *getAssertExpr() { return AssertExprAndFailed.getPointer(); }
 3693   const Expr *getAssertExpr() const { return AssertExprAndFailed.getPointer(); }
 3725   Expr *Binding = nullptr;
 3742   Expr *getBinding() const { return Binding; }
 3755   void setBinding(QualType DeclaredType, Expr *Binding) {
tools/clang/include/clang/AST/DeclObjC.h
 1955                QualType T, TypeSourceInfo *TInfo, AccessControl ac, Expr *BW,
 1966                               AccessControl ac, Expr *BW = nullptr,
 2014                       QualType T, Expr *BW)
 2025                                      QualType T, Expr *BW);
 2784   Expr *GetterCXXConstructor = nullptr;
 2788   Expr *SetterCXXAssignment = nullptr;
 2848   Expr *getGetterCXXConstructor() const {
 2852   void setGetterCXXConstructor(Expr *getterCXXConstructor) {
 2856   Expr *getSetterCXXAssignment() const {
 2860   void setSetterCXXAssignment(Expr *setterCXXAssignment) {
tools/clang/include/clang/AST/DeclOpenMP.h
   41       private llvm::TrailingObjects<OMPThreadPrivateDecl, Expr *> {
   52   ArrayRef<const Expr *> getVars() const {
   53     return llvm::makeArrayRef(getTrailingObjects<Expr *>(), NumVars);
   56   MutableArrayRef<Expr *> getVars() {
   57     return MutableArrayRef<Expr *>(getTrailingObjects<Expr *>(), NumVars);
   60   void setVars(ArrayRef<Expr *> VL);
   65                                       ArrayRef<Expr *> VL);
   69   typedef MutableArrayRef<Expr *>::iterator varlist_iterator;
   70   typedef ArrayRef<const Expr *>::iterator varlist_const_iterator;
  115   Expr *Combiner = nullptr;
  117   Expr *Initializer = nullptr;
  119   Expr *In = nullptr;
  121   Expr *Out = nullptr;
  123   Expr *Priv = nullptr;
  125   Expr *Orig = nullptr;
  152   Expr *getCombiner() { return Combiner; }
  153   const Expr *getCombiner() const { return Combiner; }
  155   Expr *getCombinerIn() { return In; }
  156   const Expr *getCombinerIn() const { return In; }
  158   Expr *getCombinerOut() { return Out; }
  159   const Expr *getCombinerOut() const { return Out; }
  161   void setCombiner(Expr *E) { Combiner = E; }
  163   void setCombinerData(Expr *InE, Expr *OutE) {
  163   void setCombinerData(Expr *InE, Expr *OutE) {
  170   Expr *getInitializer() { return Initializer; }
  171   const Expr *getInitializer() const { return Initializer; }
  177   Expr *getInitOrig() { return Orig; }
  178   const Expr *getInitOrig() const { return Orig; }
  180   Expr *getInitPriv() { return Priv; }
  181   const Expr *getInitPriv() const { return Priv; }
  183   void setInitializer(Expr *E, InitKind IK) {
  188   void setInitializerData(Expr *OrigE, Expr *PrivE) {
  188   void setInitializerData(Expr *OrigE, Expr *PrivE) {
  224   Expr *MapperVarRef = nullptr;
  282   Expr *getMapperVarRef() { return MapperVarRef; }
  283   const Expr *getMapperVarRef() const { return MapperVarRef; }
  285   void setMapperVarRef(Expr *MapperVarRefE) { MapperVarRef = MapperVarRefE; }
  424       private llvm::TrailingObjects<OMPAllocateDecl, Expr *, OMPClause *> {
  433   size_t numTrailingObjects(OverloadToken<Expr *>) const {
  445   ArrayRef<const Expr *> getVars() const {
  446     return llvm::makeArrayRef(getTrailingObjects<Expr *>(), NumVars);
  449   MutableArrayRef<Expr *> getVars() {
  450     return MutableArrayRef<Expr *>(getTrailingObjects<Expr *>(), NumVars);
  453   void setVars(ArrayRef<Expr *> VL);
  471                                  SourceLocation L, ArrayRef<Expr *> VL,
  476   typedef MutableArrayRef<Expr *>::iterator varlist_iterator;
  477   typedef ArrayRef<const Expr *>::iterator varlist_const_iterator;
tools/clang/include/clang/AST/DeclTemplate.h
   69                                     Expr *> {
   90                         Expr *RequiresClause);
   96   size_t numTrailingObjects(OverloadToken<Expr *>) const {
  110                                        Expr *RequiresClause);
  162   Expr *getRequiresClause() {
  163     return HasRequiresClause ? *getTrailingObjects<Expr *>() : nullptr;
  167   const Expr *getRequiresClause() const {
  168     return HasRequiresClause ? *getTrailingObjects<Expr *>() : nullptr;
  177   void getAssociatedConstraints(llvm::SmallVectorImpl<const Expr *> &AC) const;
  206       NamedDecl *, Expr *>::with_counts<
  215                                         Expr *RequiresClause)
  414   void getAssociatedConstraints(llvm::SmallVectorImpl<const Expr *> &AC) const;
 1263   using DefArgStorage = DefaultArgStorage<NonTypeTemplateParmDecl, Expr *>;
 1332   Expr *getDefaultArgument() const { return DefaultArgument.get(); }
 1346   void setDefaultArgument(Expr *DefArg) { DefaultArgument.set(DefArg); }
 1971   void getAssociatedConstraints(llvm::SmallVectorImpl<const Expr *> &AC) const {
 2813   void getAssociatedConstraints(llvm::SmallVectorImpl<const Expr *> &AC) const {
 3048   Expr *ConstraintExpr;
 3051               TemplateParameterList *Params, Expr *ConstraintExpr)
 3058                              Expr *ConstraintExpr);
 3061   Expr *getConstraintExpr() const {
tools/clang/include/clang/AST/Expr.h
   77     Expr *RHS;
   98   SubobjectAdjustment(const MemberPointerType *MPT, Expr *RHS)
  113   Expr(const Expr&) = delete;
  114   Expr(Expr &&) = delete;
  115   Expr &operator=(const Expr&) = delete;
  115   Expr &operator=(const Expr&) = delete;
  116   Expr &operator=(Expr&&) = delete;
  116   Expr &operator=(Expr&&) = delete;
  241   bool isUnusedResultAWarning(const Expr *&WarnExpr, SourceLocation &Loc,
  537   static bool isPotentialConstantExprUnevaluated(Expr *E,
  547                              const Expr **Culprit = nullptr) const;
  682                                 ArrayRef<const Expr*> Args,
  683                                 const Expr *This = nullptr) const;
  757   static QualType findBoundMemberType(const Expr *expr);
  763   Expr *IgnoreImpCasts() LLVM_READONLY;
  764   const Expr *IgnoreImpCasts() const {
  774   Expr *IgnoreCasts() LLVM_READONLY;
  775   const Expr *IgnoreCasts() const {
  784   Expr *IgnoreImplicit() LLVM_READONLY;
  785   const Expr *IgnoreImplicit() const {
  796   Expr *IgnoreParens() LLVM_READONLY;
  797   const Expr *IgnoreParens() const {
  810   Expr *IgnoreParenImpCasts() LLVM_READONLY;
  811   const Expr *IgnoreParenImpCasts() const {
  819   Expr *IgnoreParenCasts() LLVM_READONLY;
  820   const Expr *IgnoreParenCasts() const {
  826   Expr *IgnoreConversionOperator() LLVM_READONLY;
  827   const Expr *IgnoreConversionOperator() const {
  839   Expr *IgnoreParenLValueCasts() LLVM_READONLY;
  840   const Expr *IgnoreParenLValueCasts() const {
  850   Expr *IgnoreParenNoopCasts(const ASTContext &Ctx) LLVM_READONLY;
  851   const Expr *IgnoreParenNoopCasts(const ASTContext &Ctx) const {
  860   Expr *ignoreParenBaseCasts() LLVM_READONLY;
  861   const Expr *ignoreParenBaseCasts() const {
  881   static bool hasAnyTypeDependentArguments(ArrayRef<Expr *> Exprs);
  895   const Expr *getBestDynamicClassTypeExpr() const;
  900   const Expr *skipRValueSubobjectAdjustments(
  901       SmallVectorImpl<const Expr *> &CommaLHS,
  903   const Expr *skipRValueSubobjectAdjustments() const {
  904     SmallVector<const Expr *, 8> CommaLHSs;
  912   static bool isSameComparisonOperand(const Expr* E1, const Expr* E2);
  912   static bool isSameComparisonOperand(const Expr* E1, const Expr* E2);
  925 class FullExpr : public Expr {
  929  FullExpr(StmtClass SC, Expr *subexpr)
  938   const Expr *getSubExpr() const { return cast<Expr>(SubExpr); }
  938   const Expr *getSubExpr() const { return cast<Expr>(SubExpr); }
  939   Expr *getSubExpr() { return cast<Expr>(SubExpr); }
  939   Expr *getSubExpr() { return cast<Expr>(SubExpr); }
  943   void setSubExpr(Expr *E) { SubExpr = E; }
  990   ConstantExpr(Expr *subexpr, ResultStorageKind StorageKind);
  997   static ConstantExpr *Create(const ASTContext &Context, Expr *E,
  999   static ConstantExpr *Create(const ASTContext &Context, Expr *E,
 1050 class OpaqueValueExpr : public Expr {
 1052   Expr *SourceExpr;
 1057                   Expr *SourceExpr = nullptr)
 1074   static const OpaqueValueExpr *findInCopyConstruct(const Expr *expr);
 1108   Expr *getSourceExpr() const { return SourceExpr; }
 1147     : public Expr,
 1421 class IntegerLiteral : public Expr, public APIntStorage {
 1464 class FixedPointLiteral : public Expr, public APIntStorage {
 1505 class CharacterLiteral : public Expr {
 1558 class FloatingLiteral : public Expr, private APFloatStorage {
 1637 class ImaginaryLiteral : public Expr {
 1640   ImaginaryLiteral(Expr *val, QualType Ty)
 1649   const Expr *getSubExpr() const { return cast<Expr>(Val); }
 1649   const Expr *getSubExpr() const { return cast<Expr>(Val); }
 1650   Expr *getSubExpr() { return cast<Expr>(Val); }
 1650   Expr *getSubExpr() { return cast<Expr>(Val); }
 1651   void setSubExpr(Expr *E) { Val = E; }
 1687     : public Expr,
 1879     : public Expr,
 1969 class ParenExpr : public Expr {
 1973   ParenExpr(SourceLocation l, SourceLocation r, Expr *val)
 1985   const Expr *getSubExpr() const { return cast<Expr>(Val); }
 1985   const Expr *getSubExpr() const { return cast<Expr>(Val); }
 1986   Expr *getSubExpr() { return cast<Expr>(Val); }
 1986   Expr *getSubExpr() { return cast<Expr>(Val); }
 1987   void setSubExpr(Expr *E) { Val = E; }
 2021 class UnaryOperator : public Expr {
 2027   UnaryOperator(Expr *input, Opcode opc, QualType type, ExprValueKind VK,
 2051   Expr *getSubExpr() const { return cast<Expr>(Val); }
 2051   Expr *getSubExpr() const { return cast<Expr>(Val); }
 2052   void setSubExpr(Expr *E) { Val = E; }
 2243     : public Expr,
 2244       private llvm::TrailingObjects<OffsetOfExpr, OffsetOfNode, Expr *> {
 2259                ArrayRef<OffsetOfNode> comps, ArrayRef<Expr*> exprs,
 2271                               ArrayRef<Expr*> exprs, SourceLocation RParenLoc);
 2305   Expr* getIndexExpr(unsigned Idx) {
 2307     return getTrailingObjects<Expr *>()[Idx];
 2310   const Expr *getIndexExpr(unsigned Idx) const {
 2312     return getTrailingObjects<Expr *>()[Idx];
 2315   void setIndexExpr(unsigned Idx, Expr* E) {
 2317     getTrailingObjects<Expr *>()[Idx] = E;
 2333     Stmt **begin = reinterpret_cast<Stmt **>(getTrailingObjects<Expr *>());
 2338         reinterpret_cast<Stmt *const *>(getTrailingObjects<Expr *>());
 2347 class UnaryExprOrTypeTraitExpr : public Expr {
 2370   UnaryExprOrTypeTraitExpr(UnaryExprOrTypeTrait ExprKind, Expr *E,
 2391   Expr *getArgumentExpr() {
 2395   const Expr *getArgumentExpr() const {
 2399   void setArgument(Expr *E) {
 2437 class ArraySubscriptExpr : public Expr {
 2444   ArraySubscriptExpr(Expr *lhs, Expr *rhs, QualType t,
 2444   ArraySubscriptExpr(Expr *lhs, Expr *rhs, QualType t,
 2472   Expr *getLHS() { return cast<Expr>(SubExprs[LHS]); }
 2472   Expr *getLHS() { return cast<Expr>(SubExprs[LHS]); }
 2473   const Expr *getLHS() const { return cast<Expr>(SubExprs[LHS]); }
 2473   const Expr *getLHS() const { return cast<Expr>(SubExprs[LHS]); }
 2474   void setLHS(Expr *E) { SubExprs[LHS] = E; }
 2476   Expr *getRHS() { return cast<Expr>(SubExprs[RHS]); }
 2476   Expr *getRHS() { return cast<Expr>(SubExprs[RHS]); }
 2477   const Expr *getRHS() const { return cast<Expr>(SubExprs[RHS]); }
 2477   const Expr *getRHS() const { return cast<Expr>(SubExprs[RHS]); }
 2478   void setRHS(Expr *E) { SubExprs[RHS] = E; }
 2480   Expr *getBase() { return lhsIsBase() ? getLHS() : getRHS(); }
 2481   const Expr *getBase() const { return lhsIsBase() ? getLHS() : getRHS(); }
 2483   Expr *getIdx() { return lhsIsBase() ? getRHS() : getLHS(); }
 2484   const Expr *getIdx() const { return lhsIsBase() ? getRHS() : getLHS(); }
 2521 class CallExpr : public Expr {
 2531   void updateDependenciesFromArg(Expr *Arg);
 2575   CallExpr(StmtClass SC, Expr *Fn, ArrayRef<Expr *> PreArgs,
 2575   CallExpr(StmtClass SC, Expr *Fn, ArrayRef<Expr *> PreArgs,
 2576            ArrayRef<Expr *> Args, QualType Ty, ExprValueKind VK,
 2617   static CallExpr *Create(const ASTContext &Ctx, Expr *Fn,
 2618                           ArrayRef<Expr *> Args, QualType Ty, ExprValueKind VK,
 2630   static CallExpr *CreateTemporary(void *Mem, Expr *Fn, QualType Ty,
 2638   Expr *getCallee() { return cast<Expr>(getTrailingStmts()[FN]); }
 2638   Expr *getCallee() { return cast<Expr>(getTrailingStmts()[FN]); }
 2639   const Expr *getCallee() const { return cast<Expr>(getTrailingStmts()[FN]); }
 2639   const Expr *getCallee() const { return cast<Expr>(getTrailingStmts()[FN]); }
 2640   void setCallee(Expr *F) { getTrailingStmts()[FN] = F; }
 2667   Expr **getArgs() {
 2671   const Expr *const *getArgs() const {
 2677   Expr *getArg(unsigned Arg) {
 2681   const Expr *getArg(unsigned Arg) const {
 2687   void setArg(unsigned Arg, Expr *ArgExpr) {
 2812     : public Expr,
 2852   MemberExpr(Expr *Base, bool IsArrow, SourceLocation OperatorLoc,
 2860   static MemberExpr *Create(const ASTContext &C, Expr *Base, bool IsArrow,
 2872   static MemberExpr *CreateImplicit(const ASTContext &C, Expr *Base,
 2887   void setBase(Expr *E) { Base = E; }
 2888   Expr *getBase() const { return cast<Expr>(Base); }
 2888   Expr *getBase() const { return cast<Expr>(Base); }
 3052 class CompoundLiteralExpr : public Expr {
 3065                       QualType T, ExprValueKind VK, Expr *init, bool fileScope)
 3078   const Expr *getInitializer() const { return cast<Expr>(Init); }
 3078   const Expr *getInitializer() const { return cast<Expr>(Init); }
 3079   Expr *getInitializer() { return cast<Expr>(Init); }
 3079   Expr *getInitializer() { return cast<Expr>(Init); }
 3080   void setInitializer(Expr *E) { Init = E; }
 3125 class CastExpr : public Expr {
 3137            Expr *op, unsigned BasePathSize)
 3177   Expr *getSubExpr() { return cast<Expr>(Op); }
 3177   Expr *getSubExpr() { return cast<Expr>(Op); }
 3178   const Expr *getSubExpr() const { return cast<Expr>(Op); }
 3178   const Expr *getSubExpr() const { return cast<Expr>(Op); }
 3179   void setSubExpr(Expr *E) { Op = E; }
 3184   Expr *getSubExprAsWritten();
 3185   const Expr *getSubExprAsWritten() const {
 3253   ImplicitCastExpr(QualType ty, CastKind kind, Expr *op,
 3263   ImplicitCastExpr(OnStack_t _, QualType ty, CastKind kind, Expr *op,
 3274                                   CastKind Kind, Expr *Operand,
 3319                    CastKind kind, Expr *op, unsigned PathSize,
 3352   CStyleCastExpr(QualType exprTy, ExprValueKind vk, CastKind kind, Expr *op,
 3365                                 Expr *Op, const CXXCastPath *BasePath,
 3409 class BinaryOperator : public Expr {
 3416   BinaryOperator(Expr *lhs, Expr *rhs, Opcode opc, QualType ResTy,
 3416   BinaryOperator(Expr *lhs, Expr *rhs, Opcode opc, QualType ResTy,
 3449   Expr *getLHS() const { return cast<Expr>(SubExprs[LHS]); }
 3449   Expr *getLHS() const { return cast<Expr>(SubExprs[LHS]); }
 3450   void setLHS(Expr *E) { SubExprs[LHS] = E; }
 3451   Expr *getRHS() const { return cast<Expr>(SubExprs[RHS]); }
 3451   Expr *getRHS() const { return cast<Expr>(SubExprs[RHS]); }
 3452   void setRHS(Expr *E) { SubExprs[RHS] = E; }
 3565                                                Expr *LHS, Expr *RHS);
 3565                                                Expr *LHS, Expr *RHS);
 3601   BinaryOperator(Expr *lhs, Expr *rhs, Opcode opc, QualType ResTy,
 3601   BinaryOperator(Expr *lhs, Expr *rhs, Opcode opc, QualType ResTy,
 3633   CompoundAssignOperator(Expr *lhs, Expr *rhs, Opcode opc, QualType ResType,
 3633   CompoundAssignOperator(Expr *lhs, Expr *rhs, Opcode opc, QualType ResType,
 3665 class AbstractConditionalOperator : public Expr {
 3685   Expr *getCond() const;
 3689   Expr *getTrueExpr() const;
 3694   Expr *getFalseExpr() const;
 3713   ConditionalOperator(Expr *cond, SourceLocation QLoc, Expr *lhs,
 3713   ConditionalOperator(Expr *cond, SourceLocation QLoc, Expr *lhs,
 3714                       SourceLocation CLoc, Expr *rhs,
 3741   Expr *getCond() const { return cast<Expr>(SubExprs[COND]); }
 3741   Expr *getCond() const { return cast<Expr>(SubExprs[COND]); }
 3745   Expr *getTrueExpr() const { return cast<Expr>(SubExprs[LHS]); }
 3745   Expr *getTrueExpr() const { return cast<Expr>(SubExprs[LHS]); }
 3750   Expr *getFalseExpr() const { return cast<Expr>(SubExprs[RHS]); }
 3750   Expr *getFalseExpr() const { return cast<Expr>(SubExprs[RHS]); }
 3752   Expr *getLHS() const { return cast<Expr>(SubExprs[LHS]); }
 3752   Expr *getLHS() const { return cast<Expr>(SubExprs[LHS]); }
 3753   Expr *getRHS() const { return cast<Expr>(SubExprs[RHS]); }
 3753   Expr *getRHS() const { return cast<Expr>(SubExprs[RHS]); }
 3793   BinaryConditionalOperator(Expr *common, OpaqueValueExpr *opaqueValue,
 3794                             Expr *cond, Expr *lhs, Expr *rhs,
 3794                             Expr *cond, Expr *lhs, Expr *rhs,
 3794                             Expr *cond, Expr *lhs, Expr *rhs,
 3820   Expr *getCommon() const { return cast<Expr>(SubExprs[COMMON]); }
 3820   Expr *getCommon() const { return cast<Expr>(SubExprs[COMMON]); }
 3827   Expr *getCond() const { return cast<Expr>(SubExprs[COND]); }
 3827   Expr *getCond() const { return cast<Expr>(SubExprs[COND]); }
 3832   Expr *getTrueExpr() const {
 3833     return cast<Expr>(SubExprs[LHS]);
 3839   Expr *getFalseExpr() const {
 3840     return cast<Expr>(SubExprs[RHS]);
 3863 inline Expr *AbstractConditionalOperator::getCond() const {
 3869 inline Expr *AbstractConditionalOperator::getTrueExpr() const {
 3875 inline Expr *AbstractConditionalOperator::getFalseExpr() const {
 3882 class AddrLabelExpr : public Expr {
 3926 class StmtExpr : public Expr {
 3971 class ShuffleVectorExpr : public Expr {
 3982   ShuffleVectorExpr(const ASTContext &C, ArrayRef<Expr*> args, QualType Type,
 4008   Expr **getSubExprs() { return reinterpret_cast<Expr **>(SubExprs); }
 4011   Expr *getExpr(unsigned Index) {
 4013     return cast<Expr>(SubExprs[Index]);
 4015   const Expr *getExpr(unsigned Index) const {
 4017     return cast<Expr>(SubExprs[Index]);
 4020   void setExprs(const ASTContext &C, ArrayRef<Expr *> Exprs);
 4039 class ConvertVectorExpr : public Expr {
 4050   ConvertVectorExpr(Expr* SrcExpr, TypeSourceInfo *TI, QualType DstType,
 4063   Expr *getSrcExpr() const { return cast<Expr>(SrcExpr); }
 4063   Expr *getSrcExpr() const { return cast<Expr>(SrcExpr); }
 4102 class ChooseExpr : public Expr {
 4108   ChooseExpr(SourceLocation BLoc, Expr *cond, Expr *lhs, Expr *rhs,
 4108   ChooseExpr(SourceLocation BLoc, Expr *cond, Expr *lhs, Expr *rhs,
 4108   ChooseExpr(SourceLocation BLoc, Expr *cond, Expr *lhs, Expr *rhs,
 4143   Expr *getChosenSubExpr() const {
 4147   Expr *getCond() const { return cast<Expr>(SubExprs[COND]); }
 4147   Expr *getCond() const { return cast<Expr>(SubExprs[COND]); }
 4148   void setCond(Expr *E) { SubExprs[COND] = E; }
 4149   Expr *getLHS() const { return cast<Expr>(SubExprs[LHS]); }
 4149   Expr *getLHS() const { return cast<Expr>(SubExprs[LHS]); }
 4150   void setLHS(Expr *E) { SubExprs[LHS] = E; }
 4151   Expr *getRHS() const { return cast<Expr>(SubExprs[RHS]); }
 4151   Expr *getRHS() const { return cast<Expr>(SubExprs[RHS]); }
 4152   void setRHS(Expr *E) { SubExprs[RHS] = E; }
 4182 class GNUNullExpr : public Expr {
 4216 class VAArgExpr : public Expr {
 4221   VAArgExpr(SourceLocation BLoc, Expr *e, TypeSourceInfo *TInfo,
 4234   const Expr *getSubExpr() const { return cast<Expr>(Val); }
 4234   const Expr *getSubExpr() const { return cast<Expr>(Val); }
 4235   Expr *getSubExpr() { return cast<Expr>(Val); }
 4235   Expr *getSubExpr() { return cast<Expr>(Val); }
 4236   void setSubExpr(Expr *E) { Val = E; }
 4267 class SourceLocExpr final : public Expr {
 4283                             const Expr *DefaultExpr) const;
 4375 class InitListExpr : public Expr {
 4395   llvm::PointerUnion<Expr *, FieldDecl *> ArrayFillerOrUnionFieldInit;
 4399                ArrayRef<Expr*> initExprs, SourceLocation rbraceloc);
 4408   Expr **getInits() { return reinterpret_cast<Expr **>(InitExprs.data()); }
 4411   Expr * const *getInits() const {
 4415   ArrayRef<Expr *> inits() {
 4419   ArrayRef<Expr *> inits() const {
 4423   const Expr *getInit(unsigned Init) const {
 4425     return cast_or_null<Expr>(InitExprs[Init]);
 4428   Expr *getInit(unsigned Init) {
 4430     return cast_or_null<Expr>(InitExprs[Init]);
 4433   void setInit(unsigned Init, Expr *expr) {
 4464   Expr *updateInit(const ASTContext &C, unsigned Init, Expr *expr);
 4464   Expr *updateInit(const ASTContext &C, unsigned Init, Expr *expr);
 4469   Expr *getArrayFiller() {
 4470     return ArrayFillerOrUnionFieldInit.dyn_cast<Expr *>();
 4472   const Expr *getArrayFiller() const {
 4475   void setArrayFiller(Expr *filler);
 4612     : public Expr,
 4642                      ArrayRef<Expr *> IndexExprs, Expr *Init);
 4642                      ArrayRef<Expr *> IndexExprs, Expr *Init);
 4803                                     ArrayRef<Expr*> IndexExprs,
 4805                                     bool GNUSyntax, Expr *Init);
 4830   Expr *getArrayIndex(const Designator &D) const;
 4831   Expr *getArrayRangeStart(const Designator &D) const;
 4832   Expr *getArrayRangeEnd(const Designator &D) const;
 4849   Expr *getInit() const {
 4850     return cast<Expr>(*const_cast<DesignatedInitExpr*>(this)->child_begin());
 4853   void setInit(Expr *init) {
 4863   Expr *getSubExpr(unsigned Idx) const {
 4865     return cast<Expr>(getTrailingObjects<Stmt *>()[Idx]);
 4868   void setSubExpr(unsigned Idx, Expr *E) {
 4909 class NoInitExpr : public Expr {
 4945 class DesignatedInitUpdateExpr : public Expr {
 4952                            Expr *baseExprs, SourceLocation rBraceLoc);
 4964   Expr *getBase() const { return cast<Expr>(BaseAndUpdaterExprs[0]); }
 4964   Expr *getBase() const { return cast<Expr>(BaseAndUpdaterExprs[0]); }
 4965   void setBase(Expr *Base) { BaseAndUpdaterExprs[0] = Base; }
 4970   void setUpdater(Expr *Updater) { BaseAndUpdaterExprs[1] = Updater; }
 4999 class ArrayInitLoopExpr : public Expr {
 5006   explicit ArrayInitLoopExpr(QualType T, Expr *CommonInit, Expr *ElementInit)
 5006   explicit ArrayInitLoopExpr(QualType T, Expr *CommonInit, Expr *ElementInit)
 5021   Expr *getSubExpr() const { return cast<Expr>(SubExprs[1]); }
 5021   Expr *getSubExpr() const { return cast<Expr>(SubExprs[1]); }
 5054 class ArrayInitIndexExpr : public Expr {
 5089 class ImplicitValueInitExpr : public Expr {
 5116     : public Expr,
 5125   ParenListExpr(SourceLocation LParenLoc, ArrayRef<Expr *> Exprs,
 5134                                ArrayRef<Expr *> Exprs,
 5143   Expr *getExpr(unsigned Init) {
 5148   const Expr *getExpr(unsigned Init) const {
 5152   Expr **getExprs() {
 5156   ArrayRef<Expr *> exprs() {
 5207     : public Expr,
 5253         typename std::conditional<Const, const Expr *, Expr *>::type;
 5253         typename std::conditional<Const, const Expr *, Expr *>::type;
 5311       return AssociationTy<Const>(cast<Expr>(*E), *TSI,
 5327                        Expr *ControllingExpr,
 5329                        ArrayRef<Expr *> AssocExprs, SourceLocation DefaultLoc,
 5336                        Expr *ControllingExpr,
 5338                        ArrayRef<Expr *> AssocExprs, SourceLocation DefaultLoc,
 5349          Expr *ControllingExpr, ArrayRef<TypeSourceInfo *> AssocTypes,
 5350          ArrayRef<Expr *> AssocExprs, SourceLocation DefaultLoc,
 5357          Expr *ControllingExpr, ArrayRef<TypeSourceInfo *> AssocTypes,
 5358          ArrayRef<Expr *> AssocExprs, SourceLocation DefaultLoc,
 5389   Expr *getControllingExpr() {
 5390     return cast<Expr>(getTrailingObjects<Stmt *>()[ControllingIndex]);
 5392   const Expr *getControllingExpr() const {
 5393     return cast<Expr>(getTrailingObjects<Stmt *>()[ControllingIndex]);
 5398   Expr *getResultExpr() {
 5399     return cast<Expr>(
 5402   const Expr *getResultExpr() const {
 5403     return cast<Expr>(
 5407   ArrayRef<Expr *> getAssocExprs() const {
 5422         cast<Expr>(getTrailingObjects<Stmt *>()[AssocExprStartIndex + I]),
 5430         cast<Expr>(getTrailingObjects<Stmt *>()[AssocExprStartIndex + I]),
 5490 class ExtVectorElementExpr : public Expr {
 5495   ExtVectorElementExpr(QualType ty, ExprValueKind VK, Expr *base,
 5508   const Expr *getBase() const { return cast<Expr>(Base); }
 5508   const Expr *getBase() const { return cast<Expr>(Base); }
 5509   Expr *getBase() { return cast<Expr>(Base); }
 5509   Expr *getBase() { return cast<Expr>(Base); }
 5510   void setBase(Expr *E) { Base = E; }
 5551 class BlockExpr : public Expr {
 5600 class AsTypeExpr : public Expr {
 5610   AsTypeExpr(Expr* SrcExpr, QualType DstType,
 5623   Expr *getSrcExpr() const { return cast<Expr>(SrcExpr); }
 5623   Expr *getSrcExpr() const { return cast<Expr>(SrcExpr); }
 5674     : public Expr,
 5675       private llvm::TrailingObjects<PseudoObjectExpr, Expr *> {
 5687   Expr **getSubExprsBuffer() { return getTrailingObjects<Expr *>(); }
 5687   Expr **getSubExprsBuffer() { return getTrailingObjects<Expr *>(); }
 5688   const Expr * const *getSubExprsBuffer() const {
 5689     return getTrailingObjects<Expr *>();
 5693                    Expr *syntactic, ArrayRef<Expr*> semantic,
 5693                    Expr *syntactic, ArrayRef<Expr*> semantic,
 5707   static PseudoObjectExpr *Create(const ASTContext &Context, Expr *syntactic,
 5708                                   ArrayRef<Expr*> semantic,
 5717   Expr *getSyntacticForm() { return getSubExprsBuffer()[0]; }
 5718   const Expr *getSyntacticForm() const { return getSubExprsBuffer()[0]; }
 5728   Expr *getResultExpr() {
 5733   const Expr *getResultExpr() const {
 5739   typedef Expr * const *semantics_iterator;
 5740   typedef const Expr * const *const_semantics_iterator;
 5761   Expr *getSemanticExpr(unsigned index) {
 5765   const Expr *getSemanticExpr(unsigned index) const {
 5807 class AtomicExpr : public Expr {
 5829   AtomicExpr(SourceLocation BLoc, ArrayRef<Expr*> args, QualType t,
 5839   Expr *getPtr() const {
 5840     return cast<Expr>(SubExprs[PTR]);
 5842   Expr *getOrder() const {
 5843     return cast<Expr>(SubExprs[ORDER]);
 5845   Expr *getScope() const {
 5847     return cast<Expr>(SubExprs[NumSubExprs - 1]);
 5849   Expr *getVal1() const {
 5851       return cast<Expr>(SubExprs[ORDER]);
 5853     return cast<Expr>(SubExprs[VAL1]);
 5855   Expr *getOrderFail() const {
 5857     return cast<Expr>(SubExprs[ORDER_FAIL]);
 5859   Expr *getVal2() const {
 5861       return cast<Expr>(SubExprs[ORDER_FAIL]);
 5863     return cast<Expr>(SubExprs[VAL2]);
 5865   Expr *getWeak() const {
 5867     return cast<Expr>(SubExprs[WEAK]);
 5874   Expr **getSubExprs() { return reinterpret_cast<Expr **>(SubExprs); }
 5875   const Expr * const *getSubExprs() const {
 5936 class TypoExpr : public Expr {
tools/clang/include/clang/AST/ExprCXX.h
   89   CXXOperatorCallExpr(OverloadedOperatorKind OpKind, Expr *Fn,
   90                       ArrayRef<Expr *> Args, QualType Ty, ExprValueKind VK,
   98   Create(const ASTContext &Ctx, OverloadedOperatorKind OpKind, Expr *Fn,
   99          ArrayRef<Expr *> Args, QualType Ty, ExprValueKind VK,
  175   CXXMemberCallExpr(Expr *Fn, ArrayRef<Expr *> Args, QualType Ty,
  175   CXXMemberCallExpr(Expr *Fn, ArrayRef<Expr *> Args, QualType Ty,
  181   static CXXMemberCallExpr *Create(const ASTContext &Ctx, Expr *Fn,
  182                                    ArrayRef<Expr *> Args, QualType Ty,
  192   Expr *getImplicitObjectArgument() const;
  232   CUDAKernelCallExpr(Expr *Fn, CallExpr *Config, ArrayRef<Expr *> Args,
  232   CUDAKernelCallExpr(Expr *Fn, CallExpr *Config, ArrayRef<Expr *> Args,
  239   static CUDAKernelCallExpr *Create(const ASTContext &Ctx, Expr *Fn,
  240                                     CallExpr *Config, ArrayRef<Expr *> Args,
  273 class CXXRewrittenBinaryOperator : public Expr {
  280   CXXRewrittenBinaryOperator(Expr *SemanticForm, bool IsReversed)
  293   Expr *getSemanticForm() { return cast<Expr>(SemanticForm); }
  293   Expr *getSemanticForm() { return cast<Expr>(SemanticForm); }
  294   const Expr *getSemanticForm() const { return cast<Expr>(SemanticForm); }
  294   const Expr *getSemanticForm() const { return cast<Expr>(SemanticForm); }
  300     const Expr *LHS;
  302     const Expr *RHS;
  304     const Expr *InnerBinOp;
  314   const Expr *getLHS() const { return getDecomposedForm().LHS; }
  315   const Expr *getRHS() const { return getDecomposedForm().RHS; }
  368                    CastKind kind, Expr *op, unsigned PathSize,
  412   CXXStaticCastExpr(QualType ty, ExprValueKind vk, CastKind kind, Expr *op,
  427                                    ExprValueKind VK, CastKind K, Expr *Op,
  449                      Expr *op, unsigned pathSize, TypeSourceInfo *writtenTy,
  463                                     ExprValueKind VK, CastKind Kind, Expr *Op,
  492                          Expr *op, unsigned pathSize,
  508                                         Expr *Op, const CXXCastPath *Path,
  530   CXXConstCastExpr(QualType ty, ExprValueKind VK, Expr *op,
  544                                   ExprValueKind VK, Expr *Op,
  574   UserDefinedLiteral(Expr *Fn, ArrayRef<Expr *> Args, QualType Ty,
  574   UserDefinedLiteral(Expr *Fn, ArrayRef<Expr *> Args, QualType Ty,
  581   static UserDefinedLiteral *Create(const ASTContext &Ctx, Expr *Fn,
  582                                     ArrayRef<Expr *> Args, QualType Ty,
  617   Expr *getCookedLiteral();
  618   const Expr *getCookedLiteral() const {
  645 class CXXBoolLiteralExpr : public Expr {
  683 class CXXNullPtrLiteralExpr : public Expr {
  715 class CXXStdInitializerListExpr : public Expr {
  725   CXXStdInitializerListExpr(QualType Ty, Expr *SubExpr)
  732   Expr *getSubExpr() { return static_cast<Expr*>(SubExpr); }
  733   const Expr *getSubExpr() const { return static_cast<const Expr*>(SubExpr); }
  764 class CXXTypeidExpr : public Expr {
  781   CXXTypeidExpr(QualType Ty, Expr *Operand, SourceRange R)
  821   Expr *getExprOperand() const {
  826   void setExprOperand(Expr *E) {
  863 class MSPropertyRefExpr : public Expr {
  864   Expr *BaseExpr;
  873   MSPropertyRefExpr(Expr *baseExpr, MSPropertyDecl *decl, bool isArrow,
  919   Expr *getBaseExpr() const { return BaseExpr; }
  937 class MSPropertySubscriptExpr : public Expr {
  945   void setBase(Expr *Base) { SubExprs[BASE_EXPR] = Base; }
  946   void setIdx(Expr *Idx) { SubExprs[IDX_EXPR] = Idx; }
  949   MSPropertySubscriptExpr(Expr *Base, Expr *Idx, QualType Ty, ExprValueKind VK,
  949   MSPropertySubscriptExpr(Expr *Base, Expr *Idx, QualType Ty, ExprValueKind VK,
  963   Expr *getBase() { return cast<Expr>(SubExprs[BASE_EXPR]); }
  963   Expr *getBase() { return cast<Expr>(SubExprs[BASE_EXPR]); }
  964   const Expr *getBase() const { return cast<Expr>(SubExprs[BASE_EXPR]); }
  964   const Expr *getBase() const { return cast<Expr>(SubExprs[BASE_EXPR]); }
  966   Expr *getIdx() { return cast<Expr>(SubExprs[IDX_EXPR]); }
  966   Expr *getIdx() { return cast<Expr>(SubExprs[IDX_EXPR]); }
  967   const Expr *getIdx() const { return cast<Expr>(SubExprs[IDX_EXPR]); }
  967   const Expr *getIdx() const { return cast<Expr>(SubExprs[IDX_EXPR]); }
 1000 class CXXUuidofExpr : public Expr {
 1015   CXXUuidofExpr(QualType Ty, Expr *Operand, StringRef UuidStr, SourceRange R)
 1046   Expr *getExprOperand() const {
 1051   void setExprOperand(Expr *E) {
 1097 class CXXThisExpr : public Expr {
 1140 class CXXThrowExpr : public Expr {
 1151   CXXThrowExpr(Expr *Operand, QualType Ty, SourceLocation Loc,
 1162   const Expr *getSubExpr() const { return cast_or_null<Expr>(Operand); }
 1162   const Expr *getSubExpr() const { return cast_or_null<Expr>(Operand); }
 1163   Expr *getSubExpr() { return cast_or_null<Expr>(Operand); }
 1163   Expr *getSubExpr() { return cast_or_null<Expr>(Operand); }
 1202 class CXXDefaultArgExpr final : public Expr {
 1241   const Expr *getExpr() const { return getParam()->getDefaultArg(); }
 1242   Expr *getExpr() { return getParam()->getDefaultArg(); }
 1279 class CXXDefaultInitExpr : public Expr {
 1307   const Expr *getExpr() const {
 1311   Expr *getExpr() {
 1373 class CXXBindTemporaryExpr : public Expr {
 1377   CXXBindTemporaryExpr(CXXTemporary *temp, Expr* SubExpr)
 1390                                       Expr* SubExpr);
 1396   const Expr *getSubExpr() const { return cast<Expr>(SubExpr); }
 1396   const Expr *getSubExpr() const { return cast<Expr>(SubExpr); }
 1397   Expr *getSubExpr() { return cast<Expr>(SubExpr); }
 1397   Expr *getSubExpr() { return cast<Expr>(SubExpr); }
 1398   void setSubExpr(Expr *E) { SubExpr = E; }
 1422 class CXXConstructExpr : public Expr {
 1467                    ArrayRef<Expr *> Args, bool HadMultipleCandidates,
 1485          CXXConstructorDecl *Ctor, bool Elidable, ArrayRef<Expr *> Args,
 1564   Expr **getArgs() { return reinterpret_cast<Expr **>(getTrailingArgs()); }
 1565   const Expr *const *getArgs() const {
 1573   Expr *getArg(unsigned Arg) {
 1577   const Expr *getArg(unsigned Arg) const {
 1583   void setArg(unsigned Arg, Expr *ArgExpr) {
 1613 class CXXInheritedCtorInitExpr : public Expr {
 1696                         CastKind kind, Expr *castExpr, unsigned pathSize,
 1712                                        CastKind Kind, Expr *Op,
 1760                          TypeSourceInfo *TSI, ArrayRef<Expr *> Args,
 1771          TypeSourceInfo *TSI, ArrayRef<Expr *> Args,
 1818 class LambdaExpr final : public Expr,
 1855              ArrayRef<Expr *> CaptureInits, SourceLocation ClosingBrace,
 1880          bool ExplicitResultType, ArrayRef<Expr *> CaptureInits,
 1945   using capture_init_iterator = Expr **;
 1949   using const_capture_init_iterator = Expr *const *;
 2053 class CXXScalarValueInitExpr : public Expr {
 2101     : public Expr,
 2167              bool UsualArrayDeleteWantsSize, ArrayRef<Expr *> PlacementArgs,
 2168              SourceRange TypeIdParens, Optional<Expr *> ArraySize,
 2169              InitializationStyle InitializationStyle, Expr *Initializer,
 2182          bool UsualArrayDeleteWantsSize, ArrayRef<Expr *> PlacementArgs,
 2183          SourceRange TypeIdParens, Optional<Expr *> ArraySize,
 2184          InitializationStyle InitializationStyle, Expr *Initializer,
 2225   Optional<Expr *> getArraySize() {
 2228     return cast_or_null<Expr>(getTrailingObjects<Stmt *>()[arraySizeOffset()]);
 2230   Optional<const Expr *> getArraySize() const {
 2233     return cast_or_null<Expr>(getTrailingObjects<Stmt *>()[arraySizeOffset()]);
 2240   Expr **getPlacementArgs() {
 2245   Expr *getPlacementArg(unsigned I) {
 2249   const Expr *getPlacementArg(unsigned I) const {
 2275   Expr *getInitializer() {
 2277                ? cast<Expr>(getTrailingObjects<Stmt *>()[initExprOffset()])
 2280   const Expr *getInitializer() const {
 2282                ? cast<Expr>(getTrailingObjects<Stmt *>()[initExprOffset()])
 2359 class CXXDeleteExpr : public Expr {
 2371                 FunctionDecl *OperatorDelete, Expr *Arg, SourceLocation Loc)
 2401   Expr *getArgument() { return cast<Expr>(Argument); }
 2401   Expr *getArgument() { return cast<Expr>(Argument); }
 2402   const Expr *getArgument() const { return cast<Expr>(Argument); }
 2402   const Expr *getArgument() const { return cast<Expr>(Argument); }
 2479 class CXXPseudoDestructorExpr : public Expr {
 2512                           Expr *Base, bool isArrow, SourceLocation OperatorLoc,
 2522   Expr *getBase() const { return cast<Expr>(Base); }
 2522   Expr *getBase() const { return cast<Expr>(Base); }
 2628     : public Expr,
 2715 class ArrayTypeTraitExpr : public Expr {
 2723   Expr *Dimension;
 2739                      Expr *dimension, SourceLocation rparen, QualType ty)
 2762   Expr *getDimensionExpression() const { return Dimension; }
 2785 class ExpressionTraitExpr : public Expr {
 2799   Expr* QueriedExpression = nullptr;
 2805                      Expr *queried, bool value,
 2824   Expr *getQueriedExpression() const { return QueriedExpression; }
 2844 class OverloadExpr : public Expr {
 2904   static FindResult find(Expr *E) {
 3156     : public Expr,
 3321   ExprWithCleanups(Expr *SubExpr, bool CleanupsHaveSideEffects,
 3328   static ExprWithCleanups *Create(const ASTContext &C, Expr *subexpr,
 3391     : public Expr,
 3392       private llvm::TrailingObjects<CXXUnresolvedConstructExpr, Expr *> {
 3406                              ArrayRef<Expr *> Args, SourceLocation RParenLoc);
 3417                                             ArrayRef<Expr *> Args,
 3449   using arg_iterator = Expr **;
 3452   arg_iterator arg_begin() { return getTrailingObjects<Expr *>(); }
 3456   using const_arg_iterator = const Expr* const *;
 3459   const_arg_iterator arg_begin() const { return getTrailingObjects<Expr *>(); }
 3465   Expr *getArg(unsigned I) {
 3470   const Expr *getArg(unsigned I) const {
 3475   void setArg(unsigned I, Expr *E) {
 3512     : public Expr,
 3574   CXXDependentScopeMemberExpr(const ASTContext &Ctx, Expr *Base,
 3588   Create(const ASTContext &Ctx, Expr *Base, QualType BaseType, bool IsArrow,
 3604     return cast<Expr>(Base)->isImplicitCXXThis();
 3609   Expr *getBase() const {
 3611     return cast<Expr>(Base);
 3807                        Expr *Base, QualType BaseType, bool IsArrow,
 3828   Create(const ASTContext &Context, bool HasUnresolvedUsing, Expr *Base,
 3848   Expr *getBase() {
 3850     return cast<Expr>(Base);
 3852   const Expr *getBase() const {
 3854     return cast<Expr>(Base);
 3958 class CXXNoexceptExpr : public Expr {
 3965   CXXNoexceptExpr(QualType Ty, Expr *Operand, CanThrowResult Val,
 3978   Expr *getOperand() const { return static_cast<Expr *>(Operand); }
 4015 class PackExpansionExpr : public Expr {
 4031   PackExpansionExpr(QualType T, Expr *Pattern, SourceLocation EllipsisLoc,
 4044   Expr *getPattern() { return reinterpret_cast<Expr *>(Pattern); }
 4047   const Expr *getPattern() const { return reinterpret_cast<Expr *>(Pattern); }
 4092     : public Expr,
 4209 class SubstNonTypeTemplateParmExpr : public Expr {
 4226                                Expr *Replacement)
 4241   Expr *getReplacement() const { return cast<Expr>(Replacement); }
 4241   Expr *getReplacement() const { return cast<Expr>(Replacement); }
 4269 class SubstNonTypeTemplateParmPackExpr : public Expr {
 4338     : public Expr,
 4419 class MaterializeTemporaryExpr : public Expr {
 4438   MaterializeTemporaryExpr(QualType T, Expr *Temporary,
 4457   Expr *GetTemporaryExpr() const { return static_cast<Expr *>(getTemporary()); }
 4535 class CXXFoldExpr : public Expr {
 4549   CXXFoldExpr(QualType T, SourceLocation LParenLoc, Expr *LHS,
 4550               BinaryOperatorKind Opcode, SourceLocation EllipsisLoc, Expr *RHS,
 4563   Expr *getLHS() const { return static_cast<Expr*>(SubExprs[0]); }
 4564   Expr *getRHS() const { return static_cast<Expr*>(SubExprs[1]); }
 4575   Expr *getPattern() const { return isLeftFold() ? getRHS() : getLHS(); }
 4578   Expr *getInit() const { return isLeftFold() ? getLHS() : getRHS(); }
 4618 class CoroutineSuspendExpr : public Expr {
 4629   CoroutineSuspendExpr(StmtClass SC, SourceLocation KeywordLoc, Expr *Common,
 4630                        Expr *Ready, Expr *Suspend, Expr *Resume,
 4630                        Expr *Ready, Expr *Suspend, Expr *Resume,
 4630                        Expr *Ready, Expr *Suspend, Expr *Resume,
 4644                        Expr *Common)
 4665   Expr *getCommonExpr() const {
 4672   Expr *getReadyExpr() const {
 4676   Expr *getSuspendExpr() const {
 4680   Expr *getResumeExpr() const {
 4709   CoawaitExpr(SourceLocation CoawaitLoc, Expr *Operand, Expr *Ready,
 4709   CoawaitExpr(SourceLocation CoawaitLoc, Expr *Operand, Expr *Ready,
 4710               Expr *Suspend, Expr *Resume, OpaqueValueExpr *OpaqueValue,
 4710               Expr *Suspend, Expr *Resume, OpaqueValueExpr *OpaqueValue,
 4717   CoawaitExpr(SourceLocation CoawaitLoc, QualType Ty, Expr *Operand,
 4726   Expr *getOperand() const {
 4741 class DependentCoawaitExpr : public Expr {
 4748   DependentCoawaitExpr(SourceLocation KeywordLoc, QualType Ty, Expr *Op,
 4766   Expr *getOperand() const { return cast<Expr>(SubExprs[0]); }
 4766   Expr *getOperand() const { return cast<Expr>(SubExprs[0]); }
 4796   CoyieldExpr(SourceLocation CoyieldLoc, Expr *Operand, Expr *Ready,
 4796   CoyieldExpr(SourceLocation CoyieldLoc, Expr *Operand, Expr *Ready,
 4797               Expr *Suspend, Expr *Resume, OpaqueValueExpr *OpaqueValue)
 4797               Expr *Suspend, Expr *Resume, OpaqueValueExpr *OpaqueValue)
 4800   CoyieldExpr(SourceLocation CoyieldLoc, QualType Ty, Expr *Operand)
 4805   Expr *getOperand() const {
 4829   BuiltinBitCastExpr(QualType T, ExprValueKind VK, CastKind CK, Expr *SrcExpr,
 4849 class ConceptSpecializationExpr final : public Expr,
tools/clang/include/clang/AST/ExprObjC.h
   50 class ObjCStringLiteral : public Expr {
   85 class ObjCBoolLiteralExpr : public Expr {
  124 class ObjCBoxedExpr : public Expr {
  132   ObjCBoxedExpr(Expr *E, QualType T, ObjCMethodDecl *method,
  142   Expr *getSubExpr() { return cast<Expr>(SubExpr); }
  142   Expr *getSubExpr() { return cast<Expr>(SubExpr); }
  143   const Expr *getSubExpr() const { return cast<Expr>(SubExpr); }
  143   const Expr *getSubExpr() const { return cast<Expr>(SubExpr); }
  189     : public Expr,
  190       private llvm::TrailingObjects<ObjCArrayLiteral, Expr *> {
  195   ObjCArrayLiteral(ArrayRef<Expr *> Elements,
  207                                   ArrayRef<Expr *> Elements,
  219   Expr **getElements() { return getTrailingObjects<Expr *>(); }
  219   Expr **getElements() { return getTrailingObjects<Expr *>(); }
  222   const Expr * const *getElements() const {
  223     return getTrailingObjects<Expr *>();
  230   Expr *getElement(unsigned Index) {
  234   const Expr *getElement(unsigned Index) const {
  263   Expr *Key;
  266   Expr *Value;
  285   Expr *Key;
  286   Expr *Value;
  305     : public Expr,
  407 class ObjCEncodeExpr : public Expr {
  454 class ObjCSelectorExpr : public Expr {
  503 class ObjCProtocolExpr : public Expr {
  546 class ObjCIvarRefExpr : public Expr {
  563                   Expr *base,
  580   const Expr *getBase() const { return cast<Expr>(Base); }
  580   const Expr *getBase() const { return cast<Expr>(Base); }
  581   Expr *getBase() { return cast<Expr>(Base); }
  581   Expr *getBase() { return cast<Expr>(Base); }
  582   void setBase(Expr * base) { Base = base; }
  614 class ObjCPropertyRefExpr : public Expr {
  650                       SourceLocation l, Expr *base)
  672                       SourceLocation IdLoc, Expr *Base)
  756   const Expr *getBase() const {
  757     return cast<Expr>(Receiver.get<Stmt*>());
  759   Expr *getBase() {
  760     return cast<Expr>(Receiver.get<Stmt*>());
  826   void setBase(Expr *Base) { Receiver = Base; }
  845 class ObjCSubscriptRefExpr : public Expr {
  862   ObjCSubscriptRefExpr(Expr *base, Expr *key, QualType T,
  862   ObjCSubscriptRefExpr(Expr *base, Expr *key, QualType T,
  890   Expr *getBaseExpr() const { return cast<Expr>(SubExprs[BASE]); }
  890   Expr *getBaseExpr() const { return cast<Expr>(SubExprs[BASE]); }
  893   Expr *getKeyExpr() const { return cast<Expr>(SubExprs[KEY]); }
  893   Expr *getKeyExpr() const { return cast<Expr>(SubExprs[KEY]); }
  951     : public Expr,
 1012                   ArrayRef<Expr *> Args,
 1022                   ArrayRef<Expr *> Args,
 1027                   Expr *Receiver,
 1032                   ArrayRef<Expr *> Args,
 1043   void initArgsAndSelLocs(ArrayRef<Expr *> Args,
 1081                                 ArrayRef<Expr *> Args,
 1144                                  ArrayRef<Expr *> Args,
 1178                                  ArrayRef<Expr *> Args,
 1208                                  Expr *Receiver,
 1212                                  ArrayRef<Expr *> Args,
 1260   Expr *getInstanceReceiver() {
 1266   const Expr *getInstanceReceiver() const {
 1272   void setInstanceReceiver(Expr *rec) {
 1386   Expr **getArgs() {
 1389   const Expr * const *getArgs() const {
 1395   Expr *getArg(unsigned Arg) {
 1399   const Expr *getArg(unsigned Arg) const {
 1405   void setArg(unsigned Arg, Expr *ArgExpr) {
 1492 class ObjCIsaExpr : public Expr {
 1506   ObjCIsaExpr(Expr *base, bool isarrow, SourceLocation l, SourceLocation oploc,
 1517   void setBase(Expr *E) { Base = E; }
 1518   Expr *getBase() const { return cast<Expr>(Base); }
 1518   Expr *getBase() const { return cast<Expr>(Base); }
 1577 class ObjCIndirectCopyRestoreExpr : public Expr {
 1593   ObjCIndirectCopyRestoreExpr(Expr *operand, QualType type, bool shouldCopy)
 1602   Expr *getSubExpr() { return cast<Expr>(Operand); }
 1602   Expr *getSubExpr() { return cast<Expr>(Operand); }
 1603   const Expr *getSubExpr() const { return cast<Expr>(Operand); }
 1603   const Expr *getSubExpr() const { return cast<Expr>(Operand); }
 1653                       TypeSourceInfo *TSInfo, Expr *Operand)
 1699 class ObjCAvailabilityCheckExpr : public Expr {
tools/clang/include/clang/AST/ExprOpenMP.h
   44 class OMPArraySectionExpr : public Expr {
   51   OMPArraySectionExpr(Expr *Base, Expr *LowerBound, Expr *Length, QualType Type,
   51   OMPArraySectionExpr(Expr *Base, Expr *LowerBound, Expr *Length, QualType Type,
   51   OMPArraySectionExpr(Expr *Base, Expr *LowerBound, Expr *Length, QualType Type,
   81   Expr *getBase() { return cast<Expr>(SubExprs[BASE]); }
   81   Expr *getBase() { return cast<Expr>(SubExprs[BASE]); }
   82   const Expr *getBase() const { return cast<Expr>(SubExprs[BASE]); }
   82   const Expr *getBase() const { return cast<Expr>(SubExprs[BASE]); }
   84   void setBase(Expr *E) { SubExprs[BASE] = E; }
   87   static QualType getBaseOriginalType(const Expr *Base);
   90   Expr *getLowerBound() { return cast_or_null<Expr>(SubExprs[LOWER_BOUND]); }
   90   Expr *getLowerBound() { return cast_or_null<Expr>(SubExprs[LOWER_BOUND]); }
   91   const Expr *getLowerBound() const {
   92     return cast_or_null<Expr>(SubExprs[LOWER_BOUND]);
   95   void setLowerBound(Expr *E) { SubExprs[LOWER_BOUND] = E; }
   98   Expr *getLength() { return cast_or_null<Expr>(SubExprs[LENGTH]); }
   98   Expr *getLength() { return cast_or_null<Expr>(SubExprs[LENGTH]); }
   99   const Expr *getLength() const { return cast_or_null<Expr>(SubExprs[LENGTH]); }
   99   const Expr *getLength() const { return cast_or_null<Expr>(SubExprs[LENGTH]); }
  101   void setLength(Expr *E) { SubExprs[LENGTH] = E; }
tools/clang/include/clang/AST/NSAPI.h
   60   bool isNSUTF8StringEncodingConstant(const Expr *E) const {
   66   bool isNSASCIIStringEncodingConstant(const Expr *E) const {
  233   bool isObjCEnumerator(const Expr *E,
tools/clang/include/clang/AST/OSLog.h
   73   const Expr *TheExpr = nullptr;
   80   OSLogBufferItem(Kind kind, const Expr *expr, CharUnits size, unsigned flags,
  104   const Expr *getExpr() const { return TheExpr; }
tools/clang/include/clang/AST/OpenMPClause.h
  147   Expr *PostUpdate = nullptr;
  155   void setPostUpdateExpr(Expr *S) { PostUpdate = S; }
  159   const Expr *getPostUpdateExpr() const { return PostUpdate; }
  162   Expr *getPostUpdateExpr() { return PostUpdate; }
  207   MutableArrayRef<Expr *> getVarRefs() {
  208     return MutableArrayRef<Expr *>(
  209         static_cast<T *>(this)->template getTrailingObjects<Expr *>(), NumVars);
  213   void setVarRefs(ArrayRef<Expr *> VL) {
  217               static_cast<T *>(this)->template getTrailingObjects<Expr *>());
  221   using varlist_iterator = MutableArrayRef<Expr *>::iterator;
  222   using varlist_const_iterator = ArrayRef<const Expr *>::iterator;
  248   ArrayRef<const Expr *> getVarRefs() const {
  250         static_cast<const T *>(this)->template getTrailingObjects<Expr *>(),
  273   void setAllocator(Expr *A) { Allocator = A; }
  282   OMPAllocatorClause(Expr *A, SourceLocation StartLoc, SourceLocation LParenLoc,
  298   Expr *getAllocator() const { return cast_or_null<Expr>(Allocator); }
  298   Expr *getAllocator() const { return cast_or_null<Expr>(Allocator); }
  327       private llvm::TrailingObjects<OMPAllocateClause, Expr *> {
  334   Expr *Allocator = nullptr;
  347                     Expr *Allocator, SourceLocation ColonLoc,
  364   void setAllocator(Expr *A) { Allocator = A; }
  377                                    SourceLocation LParenLoc, Expr *Allocator,
  379                                    SourceLocation EndLoc, ArrayRef<Expr *> VL);
  382   Expr *getAllocator() const { return Allocator; }
  441   void setCondition(Expr *Cond) { Condition = Cond; }
  465   OMPIfClause(OpenMPDirectiveKind NameModifier, Expr *Cond, Stmt *HelperCond,
  490   Expr *getCondition() const { return cast_or_null<Expr>(Condition); }
  490   Expr *getCondition() const { return cast_or_null<Expr>(Condition); }
  532   void setCondition(Expr *Cond) { Condition = Cond; }
  544   OMPFinalClause(Expr *Cond, Stmt *HelperCond,
  564   Expr *getCondition() const { return cast_or_null<Expr>(Condition); }
  564   Expr *getCondition() const { return cast_or_null<Expr>(Condition); }
  601   void setNumThreads(Expr *NThreads) { NumThreads = NThreads; }
  613   OMPNumThreadsClause(Expr *NumThreads, Stmt *HelperNumThreads,
  635   Expr *getNumThreads() const { return cast_or_null<Expr>(NumThreads); }
  635   Expr *getNumThreads() const { return cast_or_null<Expr>(NumThreads); }
  677   void setSafelen(Expr *Len) { Safelen = Len; }
  685   OMPSafelenClause(Expr *Len, SourceLocation StartLoc, SourceLocation LParenLoc,
  701   Expr *getSafelen() const { return cast_or_null<Expr>(Safelen); }
  701   Expr *getSafelen() const { return cast_or_null<Expr>(Safelen); }
  742   void setSimdlen(Expr *Len) { Simdlen = Len; }
  750   OMPSimdlenClause(Expr *Len, SourceLocation StartLoc, SourceLocation LParenLoc,
  766   Expr *getSimdlen() const { return cast_or_null<Expr>(Simdlen); }
  766   Expr *getSimdlen() const { return cast_or_null<Expr>(Simdlen); }
  807   void setNumForLoops(Expr *Num) { NumForLoops = Num; }
  816   OMPCollapseClause(Expr *Num, SourceLocation StartLoc,
  832   Expr *getNumForLoops() const { return cast_or_null<Expr>(NumForLoops); }
  832   Expr *getNumForLoops() const { return cast_or_null<Expr>(NumForLoops); }
 1301   Expr *ChunkSize = nullptr;
 1362   void setChunkSize(Expr *E) { ChunkSize = E; }
 1383                     Expr *ChunkSize, Stmt *HelperChunkSize,
 1437   Expr *getChunkSize() { return ChunkSize; }
 1440   const Expr *getChunkSize() const { return ChunkSize; }
 1473       private llvm::TrailingObjects<OMPOrderedClause, Expr *> {
 1493   OMPOrderedClause(Expr *Num, unsigned NumLoops, SourceLocation StartLoc,
 1504   void setNumForLoops(Expr *Num) { NumForLoops = Num; }
 1514   static OMPOrderedClause *Create(const ASTContext &C, Expr *Num,
 1529   Expr *getNumForLoops() const { return cast_or_null<Expr>(NumForLoops); }
 1529   Expr *getNumForLoops() const { return cast_or_null<Expr>(NumForLoops); }
 1532   void setLoopNumIterations(unsigned NumLoop, Expr *NumIterations);
 1534   ArrayRef<Expr *> getLoopNumIterations() const;
 1537   void setLoopCounter(unsigned NumLoop, Expr *Counter);
 1539   Expr *getLoopCounter(unsigned NumLoop);
 1540   const Expr *getLoopCounter(unsigned NumLoop) const;
 1884       private llvm::TrailingObjects<OMPPrivateClause, Expr *> {
 1911   void setPrivateCopies(ArrayRef<Expr *> VL);
 1915   MutableArrayRef<Expr *> getPrivateCopies() {
 1918   ArrayRef<const Expr *> getPrivateCopies() const {
 1933                                   SourceLocation EndLoc, ArrayRef<Expr *> VL,
 1934                                   ArrayRef<Expr *> PrivateVL);
 1942   using private_copies_iterator = MutableArrayRef<Expr *>::iterator;
 1943   using private_copies_const_iterator = ArrayRef<const Expr *>::iterator;
 1991       private llvm::TrailingObjects<OMPFirstprivateClause, Expr *> {
 2020   void setPrivateCopies(ArrayRef<Expr *> VL);
 2024   MutableArrayRef<Expr *> getPrivateCopies() {
 2027   ArrayRef<const Expr *> getPrivateCopies() const {
 2034   void setInits(ArrayRef<Expr *> VL);
 2038   MutableArrayRef<Expr *> getInits() {
 2041   ArrayRef<const Expr *> getInits() const {
 2061          SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> PrivateVL,
 2061          SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> PrivateVL,
 2062          ArrayRef<Expr *> InitVL, Stmt *PreInit);
 2070   using private_copies_iterator = MutableArrayRef<Expr *>::iterator;
 2071   using private_copies_const_iterator = ArrayRef<const Expr *>::iterator;
 2085   using inits_iterator = MutableArrayRef<Expr *>::iterator;
 2086   using inits_const_iterator = ArrayRef<const Expr *>::iterator;
 2132       private llvm::TrailingObjects<OMPLastprivateClause, Expr *> {
 2176   MutableArrayRef<Expr *> getPrivateCopies() {
 2179   ArrayRef<const Expr *> getPrivateCopies() const {
 2187   void setSourceExprs(ArrayRef<Expr *> SrcExprs);
 2190   MutableArrayRef<Expr *> getSourceExprs() {
 2193   ArrayRef<const Expr *> getSourceExprs() const {
 2201   void setDestinationExprs(ArrayRef<Expr *> DstExprs);
 2204   MutableArrayRef<Expr *> getDestinationExprs() {
 2207   ArrayRef<const Expr *> getDestinationExprs() const {
 2214   void setAssignmentOps(ArrayRef<Expr *> AssignmentOps);
 2217   MutableArrayRef<Expr *> getAssignmentOps() {
 2220   ArrayRef<const Expr *> getAssignmentOps() const {
 2251          SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> SrcExprs,
 2251          SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> SrcExprs,
 2252          ArrayRef<Expr *> DstExprs, ArrayRef<Expr *> AssignmentOps,
 2252          ArrayRef<Expr *> DstExprs, ArrayRef<Expr *> AssignmentOps,
 2253          Stmt *PreInit, Expr *PostUpdate);
 2261   using helper_expr_iterator = MutableArrayRef<Expr *>::iterator;
 2262   using helper_expr_const_iterator = ArrayRef<const Expr *>::iterator;
 2269   void setPrivateCopies(ArrayRef<Expr *> PrivateCopies);
 2341       private llvm::TrailingObjects<OMPSharedClause, Expr *> {
 2374                                  SourceLocation EndLoc, ArrayRef<Expr *> VL);
 2415       private llvm::TrailingObjects<OMPReductionClause, Expr *> {
 2468   void setPrivates(ArrayRef<Expr *> Privates);
 2471   MutableArrayRef<Expr *> getPrivates() {
 2474   ArrayRef<const Expr *> getPrivates() const {
 2481   void setLHSExprs(ArrayRef<Expr *> LHSExprs);
 2484   MutableArrayRef<Expr *> getLHSExprs() {
 2487   ArrayRef<const Expr *> getLHSExprs() const {
 2496   void setRHSExprs(ArrayRef<Expr *> RHSExprs);
 2499   MutableArrayRef<Expr *> getRHSExprs() {
 2502   ArrayRef<const Expr *> getRHSExprs() const {
 2510   void setReductionOps(ArrayRef<Expr *> ReductionOps);
 2513   MutableArrayRef<Expr *> getReductionOps() {
 2516   ArrayRef<const Expr *> getReductionOps() const {
 2555          SourceLocation ColonLoc, SourceLocation EndLoc, ArrayRef<Expr *> VL,
 2557          const DeclarationNameInfo &NameInfo, ArrayRef<Expr *> Privates,
 2558          ArrayRef<Expr *> LHSExprs, ArrayRef<Expr *> RHSExprs,
 2558          ArrayRef<Expr *> LHSExprs, ArrayRef<Expr *> RHSExprs,
 2559          ArrayRef<Expr *> ReductionOps, Stmt *PreInit, Expr *PostUpdate);
 2559          ArrayRef<Expr *> ReductionOps, Stmt *PreInit, Expr *PostUpdate);
 2576   using helper_expr_iterator = MutableArrayRef<Expr *>::iterator;
 2577   using helper_expr_const_iterator = ArrayRef<const Expr *>::iterator;
 2651       private llvm::TrailingObjects<OMPTaskReductionClause, Expr *> {
 2703   void setPrivates(ArrayRef<Expr *> Privates);
 2706   MutableArrayRef<Expr *> getPrivates() {
 2709   ArrayRef<const Expr *> getPrivates() const {
 2716   void setLHSExprs(ArrayRef<Expr *> LHSExprs);
 2719   MutableArrayRef<Expr *> getLHSExprs() {
 2722   ArrayRef<const Expr *> getLHSExprs() const {
 2730   void setRHSExprs(ArrayRef<Expr *> RHSExprs);
 2733   MutableArrayRef<Expr *> getRHSExprs() {
 2736   ArrayRef<const Expr *> getRHSExprs() const {
 2744   void setReductionOps(ArrayRef<Expr *> ReductionOps);
 2747   MutableArrayRef<Expr *> getReductionOps() {
 2750   ArrayRef<const Expr *> getReductionOps() const {
 2789          SourceLocation ColonLoc, SourceLocation EndLoc, ArrayRef<Expr *> VL,
 2791          const DeclarationNameInfo &NameInfo, ArrayRef<Expr *> Privates,
 2792          ArrayRef<Expr *> LHSExprs, ArrayRef<Expr *> RHSExprs,
 2792          ArrayRef<Expr *> LHSExprs, ArrayRef<Expr *> RHSExprs,
 2793          ArrayRef<Expr *> ReductionOps, Stmt *PreInit, Expr *PostUpdate);
 2793          ArrayRef<Expr *> ReductionOps, Stmt *PreInit, Expr *PostUpdate);
 2810   using helper_expr_iterator = MutableArrayRef<Expr *>::iterator;
 2811   using helper_expr_const_iterator = ArrayRef<const Expr *>::iterator;
 2882       private llvm::TrailingObjects<OMPInReductionClause, Expr *> {
 2934   void setPrivates(ArrayRef<Expr *> Privates);
 2937   MutableArrayRef<Expr *> getPrivates() {
 2940   ArrayRef<const Expr *> getPrivates() const {
 2947   void setLHSExprs(ArrayRef<Expr *> LHSExprs);
 2950   MutableArrayRef<Expr *> getLHSExprs() {
 2953   ArrayRef<const Expr *> getLHSExprs() const {
 2961   void setRHSExprs(ArrayRef<Expr *> RHSExprs);
 2964   MutableArrayRef<Expr *> getRHSExprs() {
 2967   ArrayRef<const Expr *> getRHSExprs() const {
 2975   void setReductionOps(ArrayRef<Expr *> ReductionOps);
 2978   MutableArrayRef<Expr *> getReductionOps() {
 2981   ArrayRef<const Expr *> getReductionOps() const {
 2986   void setTaskgroupDescriptors(ArrayRef<Expr *> ReductionOps);
 2989   MutableArrayRef<Expr *> getTaskgroupDescriptors() {
 2992   ArrayRef<const Expr *> getTaskgroupDescriptors() const {
 3033          SourceLocation ColonLoc, SourceLocation EndLoc, ArrayRef<Expr *> VL,
 3035          const DeclarationNameInfo &NameInfo, ArrayRef<Expr *> Privates,
 3036          ArrayRef<Expr *> LHSExprs, ArrayRef<Expr *> RHSExprs,
 3036          ArrayRef<Expr *> LHSExprs, ArrayRef<Expr *> RHSExprs,
 3037          ArrayRef<Expr *> ReductionOps, ArrayRef<Expr *> TaskgroupDescriptors,
 3037          ArrayRef<Expr *> ReductionOps, ArrayRef<Expr *> TaskgroupDescriptors,
 3038          Stmt *PreInit, Expr *PostUpdate);
 3055   using helper_expr_iterator = MutableArrayRef<Expr *>::iterator;
 3056   using helper_expr_const_iterator = ArrayRef<const Expr *>::iterator;
 3138       private llvm::TrailingObjects<OMPLinearClause, Expr *> {
 3153   void setStep(Expr *Step) { *(getFinals().end()) = Step; }
 3156   void setCalcStep(Expr *CalcStep) { *(getFinals().end() + 1) = CalcStep; }
 3195   MutableArrayRef<Expr *> getPrivates() {
 3198   ArrayRef<const Expr *> getPrivates() const {
 3202   MutableArrayRef<Expr *> getInits() {
 3205   ArrayRef<const Expr *> getInits() const {
 3210   MutableArrayRef<Expr *> getUpdates() {
 3213   ArrayRef<const Expr *> getUpdates() const {
 3218   MutableArrayRef<Expr *> getFinals() {
 3221   ArrayRef<const Expr *> getFinals() const {
 3226   MutableArrayRef<Expr *> getUsedExprs() {
 3229   ArrayRef<const Expr *> getUsedExprs() const {
 3235   void setPrivates(ArrayRef<Expr *> PL);
 3239   void setInits(ArrayRef<Expr *> IL);
 3264          SourceLocation ColonLoc, SourceLocation EndLoc, ArrayRef<Expr *> VL,
 3265          ArrayRef<Expr *> PL, ArrayRef<Expr *> IL, Expr *Step, Expr *CalcStep,
 3265          ArrayRef<Expr *> PL, ArrayRef<Expr *> IL, Expr *Step, Expr *CalcStep,
 3265          ArrayRef<Expr *> PL, ArrayRef<Expr *> IL, Expr *Step, Expr *CalcStep,
 3265          ArrayRef<Expr *> PL, ArrayRef<Expr *> IL, Expr *Step, Expr *CalcStep,
 3266          Stmt *PreInit, Expr *PostUpdate);
 3293   Expr *getStep() { return *(getFinals().end()); }
 3296   const Expr *getStep() const { return *(getFinals().end()); }
 3299   Expr *getCalcStep() { return *(getFinals().end() + 1); }
 3302   const Expr *getCalcStep() const { return *(getFinals().end() + 1); }
 3306   void setUpdates(ArrayRef<Expr *> UL);
 3310   void setFinals(ArrayRef<Expr *> FL);
 3313   void setUsedExprs(ArrayRef<Expr *> UE);
 3315   using privates_iterator = MutableArrayRef<Expr *>::iterator;
 3316   using privates_const_iterator = ArrayRef<const Expr *>::iterator;
 3328   using inits_iterator = MutableArrayRef<Expr *>::iterator;
 3329   using inits_const_iterator = ArrayRef<const Expr *>::iterator;
 3341   using updates_iterator = MutableArrayRef<Expr *>::iterator;
 3342   using updates_const_iterator = ArrayRef<const Expr *>::iterator;
 3354   using finals_iterator = MutableArrayRef<Expr *>::iterator;
 3355   using finals_const_iterator = ArrayRef<const Expr *>::iterator;
 3367   using used_expressions_iterator = MutableArrayRef<Expr *>::iterator;
 3368   using used_expressions_const_iterator = ArrayRef<const Expr *>::iterator;
 3414       private llvm::TrailingObjects<OMPAlignedClause, Expr *> {
 3423   void setAlignment(Expr *A) { *varlist_end() = A; }
 3460                                   SourceLocation EndLoc, ArrayRef<Expr *> VL,
 3461                                   Expr *A);
 3476   Expr *getAlignment() { return *varlist_end(); }
 3479   const Expr *getAlignment() const { return *varlist_end(); }
 3512       private llvm::TrailingObjects<OMPCopyinClause, Expr *> {
 3552   void setSourceExprs(ArrayRef<Expr *> SrcExprs);
 3555   MutableArrayRef<Expr *> getSourceExprs() {
 3558   ArrayRef<const Expr *> getSourceExprs() const {
 3565   void setDestinationExprs(ArrayRef<Expr *> DstExprs);
 3568   MutableArrayRef<Expr *> getDestinationExprs() {
 3571   ArrayRef<const Expr *> getDestinationExprs() const {
 3579   void setAssignmentOps(ArrayRef<Expr *> AssignmentOps);
 3582   MutableArrayRef<Expr *> getAssignmentOps() {
 3585   ArrayRef<const Expr *> getAssignmentOps() const {
 3613          SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> SrcExprs,
 3613          SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> SrcExprs,
 3614          ArrayRef<Expr *> DstExprs, ArrayRef<Expr *> AssignmentOps);
 3614          ArrayRef<Expr *> DstExprs, ArrayRef<Expr *> AssignmentOps);
 3622   using helper_expr_iterator = MutableArrayRef<Expr *>::iterator;
 3623   using helper_expr_const_iterator = ArrayRef<const Expr *>::iterator;
 3689       private llvm::TrailingObjects<OMPCopyprivateClause, Expr *> {
 3716   void setSourceExprs(ArrayRef<Expr *> SrcExprs);
 3719   MutableArrayRef<Expr *> getSourceExprs() {
 3722   ArrayRef<const Expr *> getSourceExprs() const {
 3729   void setDestinationExprs(ArrayRef<Expr *> DstExprs);
 3732   MutableArrayRef<Expr *> getDestinationExprs() {
 3735   ArrayRef<const Expr *> getDestinationExprs() const {
 3743   void setAssignmentOps(ArrayRef<Expr *> AssignmentOps);
 3746   MutableArrayRef<Expr *> getAssignmentOps() {
 3749   ArrayRef<const Expr *> getAssignmentOps() const {
 3776          SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> SrcExprs,
 3776          SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> SrcExprs,
 3777          ArrayRef<Expr *> DstExprs, ArrayRef<Expr *> AssignmentOps);
 3777          ArrayRef<Expr *> DstExprs, ArrayRef<Expr *> AssignmentOps);
 3785   using helper_expr_iterator = MutableArrayRef<Expr *>::iterator;
 3786   using helper_expr_const_iterator = ArrayRef<const Expr *>::iterator;
 3856       private llvm::TrailingObjects<OMPFlushClause, Expr *> {
 3889                                 ArrayRef<Expr *> VL);
 3929       private llvm::TrailingObjects<OMPDependClause, Expr *> {
 3997                                  ArrayRef<Expr *> VL, unsigned NumLoops);
 4022   void setLoopData(unsigned NumLoop, Expr *Cnt);
 4025   Expr *getLoopData(unsigned NumLoop);
 4026   const Expr *getLoopData(unsigned NumLoop) const;
 4070   void setDevice(Expr *E) { Device = E; }
 4081   OMPDeviceClause(Expr *E, Stmt *HelperE, OpenMPDirectiveKind CaptureRegion,
 4101   Expr *getDevice() { return cast<Expr>(Device); }
 4101   Expr *getDevice() { return cast<Expr>(Device); }
 4104   Expr *getDevice() const { return cast<Expr>(Device); }
 4104   Expr *getDevice() const { return cast<Expr>(Device); }
 4213     Expr *AssociatedExpression = nullptr;
 4222     explicit MappableComponent(Expr *AssociatedExpression,
 4230     Expr *getAssociatedExpression() const { return AssociatedExpression; }
 4525   MutableArrayRef<Expr *> getUDMapperRefs() {
 4526     return llvm::makeMutableArrayRef<Expr *>(
 4527         static_cast<T *>(this)->template getTrailingObjects<Expr *>() +
 4534   ArrayRef<Expr *> getUDMapperRefs() const {
 4536         static_cast<T *>(this)->template getTrailingObjects<Expr *>() +
 4543   void setUDMapperRefs(ArrayRef<Expr *> DMDs) {
 4772   using mapperlist_iterator = MutableArrayRef<Expr *>::iterator;
 4773   using mapperlist_const_iterator = ArrayRef<const Expr *>::iterator;
 4804                                OMPMapClause, Expr *, ValueDecl *, unsigned,
 4813   size_t numTrailingObjects(OverloadToken<Expr *>) const {
 4956          ArrayRef<Expr *> Vars, ArrayRef<ValueDecl *> Declarations,
 4958          ArrayRef<Expr *> UDMapperRefs,
 5070   void setNumTeams(Expr *E) { NumTeams = E; }
 5082   OMPNumTeamsClause(Expr *E, Stmt *HelperE, OpenMPDirectiveKind CaptureRegion,
 5102   Expr *getNumTeams() { return cast<Expr>(NumTeams); }
 5102   Expr *getNumTeams() { return cast<Expr>(NumTeams); }
 5105   Expr *getNumTeams() const { return cast<Expr>(NumTeams); }
 5105   Expr *getNumTeams() const { return cast<Expr>(NumTeams); }
 5145   void setThreadLimit(Expr *E) { ThreadLimit = E; }
 5157   OMPThreadLimitClause(Expr *E, Stmt *HelperE,
 5178   Expr *getThreadLimit() { return cast<Expr>(ThreadLimit); }
 5178   Expr *getThreadLimit() { return cast<Expr>(ThreadLimit); }
 5181   Expr *getThreadLimit() const { return cast<Expr>(ThreadLimit); }
 5181   Expr *getThreadLimit() const { return cast<Expr>(ThreadLimit); }
 5221   void setPriority(Expr *E) { Priority = E; }
 5233   OMPPriorityClause(Expr *Priority, Stmt *HelperPriority,
 5253   Expr *getPriority() { return cast<Expr>(Priority); }
 5253   Expr *getPriority() { return cast<Expr>(Priority); }
 5256   Expr *getPriority() const { return cast<Expr>(Priority); }
 5256   Expr *getPriority() const { return cast<Expr>(Priority); }
 5293   void setGrainsize(Expr *Size) { Grainsize = Size; }
 5304   OMPGrainsizeClause(Expr *Size, Stmt *HelperSize,
 5324   Expr *getGrainsize() const { return cast_or_null<Expr>(Grainsize); }
 5324   Expr *getGrainsize() const { return cast_or_null<Expr>(Grainsize); }
 5400   void setNumTasks(Expr *Size) { NumTasks = Size; }
 5411   OMPNumTasksClause(Expr *Size, Stmt *HelperSize,
 5431   Expr *getNumTasks() const { return cast_or_null<Expr>(NumTasks); }
 5431   Expr *getNumTasks() const { return cast_or_null<Expr>(NumTasks); }
 5467   void setHint(Expr *H) { Hint = H; }
 5476   OMPHintClause(Expr *Hint, SourceLocation StartLoc, SourceLocation LParenLoc,
 5491   Expr *getHint() const { return cast_or_null<Expr>(Hint); }
 5491   Expr *getHint() const { return cast_or_null<Expr>(Hint); }
 5535   Expr *ChunkSize = nullptr;
 5560   void setChunkSize(Expr *E) { ChunkSize = E; }
 5577                         OpenMPDistScheduleClauseKind Kind, Expr *ChunkSize,
 5603   Expr *getChunkSize() { return ChunkSize; }
 5606   const Expr *getChunkSize() const { return ChunkSize; }
 5752                               OMPToClause, Expr *, ValueDecl *, unsigned,
 5791   size_t numTrailingObjects(OverloadToken<Expr *>) const {
 5819                              ArrayRef<Expr *> Vars,
 5822                              ArrayRef<Expr *> UDMapperRefs,
 5870           OMPFromClause, Expr *, ValueDecl *, unsigned,
 5909   size_t numTrailingObjects(OverloadToken<Expr *>) const {
 5937                                ArrayRef<Expr *> Vars,
 5940                                ArrayRef<Expr *> UDMapperRefs,
 5988           OMPUseDevicePtrClause, Expr *, ValueDecl *, unsigned,
 6022   size_t numTrailingObjects(OverloadToken<Expr *>) const {
 6035   void setPrivateCopies(ArrayRef<Expr *> VL);
 6039   MutableArrayRef<Expr *> getPrivateCopies() {
 6042   ArrayRef<const Expr *> getPrivateCopies() const {
 6049   void setInits(ArrayRef<Expr *> VL);
 6053   MutableArrayRef<Expr *> getInits() {
 6056   ArrayRef<const Expr *> getInits() const {
 6074          ArrayRef<Expr *> Vars, ArrayRef<Expr *> PrivateVars,
 6074          ArrayRef<Expr *> Vars, ArrayRef<Expr *> PrivateVars,
 6075          ArrayRef<Expr *> Inits, ArrayRef<ValueDecl *> Declarations,
 6089   using private_copies_iterator = MutableArrayRef<Expr *>::iterator;
 6090   using private_copies_const_iterator = ArrayRef<const Expr *>::iterator;
 6105   using inits_iterator = MutableArrayRef<Expr *>::iterator;
 6106   using inits_const_iterator = ArrayRef<const Expr *>::iterator;
 6151           OMPIsDevicePtrClause, Expr *, ValueDecl *, unsigned,
 6185   size_t numTrailingObjects(OverloadToken<Expr *>) const {
 6207          ArrayRef<Expr *> Vars, ArrayRef<ValueDecl *> Declarations,
tools/clang/include/clang/AST/ParentMap.h
   58   bool isConsumedExpr(Expr *E) const;
   60   bool isConsumedExpr(const Expr *E) const {
tools/clang/include/clang/AST/RecursiveASTVisitor.h
  298                              Expr *Init);
  916                                                     Expr *Init) {
 1639     if (Expr *RequiresClause = TPL->getRequiresClause()) {
 3066   for (auto *E : Node->varlists()) {
 3075   for (auto *E : C->private_copies()) {
 3086   for (auto *E : C->private_copies()) {
 3089   for (auto *E : C->inits()) {
 3100   for (auto *E : C->private_copies()) {
 3103   for (auto *E : C->source_exprs()) {
 3106   for (auto *E : C->destination_exprs()) {
 3109   for (auto *E : C->assignment_ops()) {
 3127   for (auto *E : C->privates()) {
 3130   for (auto *E : C->inits()) {
 3133   for (auto *E : C->updates()) {
 3136   for (auto *E : C->finals()) {
 3152   for (auto *E : C->source_exprs()) {
 3155   for (auto *E : C->destination_exprs()) {
 3158   for (auto *E : C->assignment_ops()) {
 3168   for (auto *E : C->source_exprs()) {
 3171   for (auto *E : C->destination_exprs()) {
 3174   for (auto *E : C->assignment_ops()) {
 3187   for (auto *E : C->privates()) {
 3190   for (auto *E : C->lhs_exprs()) {
 3193   for (auto *E : C->rhs_exprs()) {
 3196   for (auto *E : C->reduction_ops()) {
 3209   for (auto *E : C->privates()) {
 3212   for (auto *E : C->lhs_exprs()) {
 3215   for (auto *E : C->rhs_exprs()) {
 3218   for (auto *E : C->reduction_ops()) {
 3231   for (auto *E : C->privates()) {
 3234   for (auto *E : C->lhs_exprs()) {
 3237   for (auto *E : C->rhs_exprs()) {
 3240   for (auto *E : C->reduction_ops()) {
 3243   for (auto *E : C->taskgroup_descriptors())
tools/clang/include/clang/AST/SelectorLocationsKind.h
   47                                               ArrayRef<Expr *> Args,
   59                                       ArrayRef<Expr *> Args,
tools/clang/include/clang/AST/Stmt.h
 1053       : llvm::iterator_adaptor_base<CastIterator<T, TPtr, StmtPtr>, StmtPtr *,
 1061       return cast_or_null<T>(*this->I);
 1069   using ExprIterator = CastIterator<Expr>;
 1070   using ConstExprIterator = ConstCastIterator<Expr>;
 1525   CaseStmt(Expr *lhs, Expr *rhs, SourceLocation caseLoc,
 1525   CaseStmt(Expr *lhs, Expr *rhs, SourceLocation caseLoc,
 1547   static CaseStmt *Create(const ASTContext &Ctx, Expr *lhs, Expr *rhs,
 1547   static CaseStmt *Create(const ASTContext &Ctx, Expr *lhs, Expr *rhs,
 1577   Expr *getLHS() {
 1581   const Expr *getLHS() const {
 1585   void setLHS(Expr *Val) {
 1589   Expr *getRHS() {
 1595   const Expr *getRHS() const {
 1601   void setRHS(Expr *Val) {
 1706   const Expr *getExprStmt() const;
 1707   Expr *getExprStmt() {
 1871          VarDecl *Var, Expr *Cond, Stmt *Then, SourceLocation EL, Stmt *Else);
 1879                         bool IsConstexpr, Stmt *Init, VarDecl *Var, Expr *Cond,
 1897   Expr *getCond() {
 1901   const Expr *getCond() const {
 1905   void setCond(Expr *Cond) {
 2066   SwitchStmt(const ASTContext &Ctx, Stmt *Init, VarDecl *Var, Expr *Cond);
 2074                             Expr *Cond);
 2087   Expr *getCond() {
 2091   const Expr *getCond() const {
 2095   void setCond(Expr *Cond) {
 2241   WhileStmt(const ASTContext &Ctx, VarDecl *Var, Expr *Cond, Stmt *Body,
 2249   static WhileStmt *Create(const ASTContext &Ctx, VarDecl *Var, Expr *Cond,
 2259   Expr *getCond() {
 2263   const Expr *getCond() const {
 2267   void setCond(Expr *Cond) {
 2345   DoStmt(Stmt *Body, Expr *Cond, SourceLocation DL, SourceLocation WL,
 2356   Expr *getCond() { return reinterpret_cast<Expr *>(SubExprs[COND]); }
 2357   const Expr *getCond() const {
 2361   void setCond(Expr *Cond) { SubExprs[COND] = reinterpret_cast<Stmt *>(Cond); }
 2400   ForStmt(const ASTContext &C, Stmt *Init, Expr *Cond, VarDecl *condVar,
 2401           Expr *Inc, Stmt *Body, SourceLocation FL, SourceLocation LP,
 2426   Expr *getCond() { return reinterpret_cast<Expr*>(SubExprs[COND]); }
 2427   Expr *getInc()  { return reinterpret_cast<Expr*>(SubExprs[INC]); }
 2431   const Expr *getCond() const { return reinterpret_cast<Expr*>(SubExprs[COND]);}
 2432   const Expr *getInc()  const { return reinterpret_cast<Expr*>(SubExprs[INC]); }
 2436   void setCond(Expr *E) { SubExprs[COND] = reinterpret_cast<Stmt*>(E); }
 2437   void setInc(Expr *E) { SubExprs[INC] = reinterpret_cast<Stmt*>(E); }
 2509   IndirectGotoStmt(SourceLocation gotoLoc, SourceLocation starLoc, Expr *target)
 2524   Expr *getTarget() { return reinterpret_cast<Expr *>(Target); }
 2525   const Expr *getTarget() const {
 2528   void setTarget(Expr *E) { Target = reinterpret_cast<Stmt *>(E); }
 2639   ReturnStmt(SourceLocation RL, Expr *E, const VarDecl *NRVOCandidate);
 2646   static ReturnStmt *Create(const ASTContext &Ctx, SourceLocation RL, Expr *E,
 2653   Expr *getRetValue() { return reinterpret_cast<Expr *>(RetExpr); }
 2654   const Expr *getRetValue() const { return reinterpret_cast<Expr *>(RetExpr); }
 2655   void setRetValue(Expr *E) { RetExpr = reinterpret_cast<Stmt *>(E); }
 2766   const Expr *getOutputExpr(unsigned i) const;
 2780   const Expr *getInputExpr(unsigned i) const;
 2877              IdentifierInfo **names, StringLiteral **constraints, Expr **exprs,
 2970   Expr *getOutputExpr(unsigned i);
 2972   const Expr *getOutputExpr(unsigned i) const {
 2998   Expr *getInputExpr(unsigned i);
 2999   void setInputExpr(unsigned i, Expr *E);
 3001   const Expr *getInputExpr(unsigned i) const {
 3102             ArrayRef<Expr*> exprs, StringRef asmstr,
 3131   Expr *getOutputExpr(unsigned i);
 3133   const Expr *getOutputExpr(unsigned i) const {
 3144   Expr *getInputExpr(unsigned i);
 3145   void setInputExpr(unsigned i, Expr *E);
 3147   const Expr *getInputExpr(unsigned i) const {
 3161   ArrayRef<Expr*> getAllExprs() const {
 3171                   ArrayRef<Expr*> Exprs, ArrayRef<StringRef> Clobbers);
 3198   SEHExceptStmt(SourceLocation Loc, Expr *FilterExpr, Stmt *Block);
 3204                                Expr *FilterExpr,
 3212   Expr *getFilterExpr() const {
 3433                ArrayRef<Expr *> CaptureInits, CapturedDecl *CD, RecordDecl *RD);
 3454                               ArrayRef<Expr *> CaptureInits,
 3516   using capture_init_iterator = Expr **;
 3521   using const_capture_init_iterator = Expr *const *;
tools/clang/include/clang/AST/StmtCXX.h
  147                   DeclStmt *End, Expr *Cond, Expr *Inc, DeclStmt *LoopVar,
  147                   DeclStmt *End, Expr *Cond, Expr *Inc, DeclStmt *LoopVar,
  154   Expr *getRangeInit();
  158   const Expr *getRangeInit() const;
  166   Expr *getCond() { return cast_or_null<Expr>(SubExprs[COND]); }
  166   Expr *getCond() { return cast_or_null<Expr>(SubExprs[COND]); }
  167   Expr *getInc() { return cast_or_null<Expr>(SubExprs[INC]); }
  167   Expr *getInc() { return cast_or_null<Expr>(SubExprs[INC]); }
  180   const Expr *getCond() const {
  181     return cast_or_null<Expr>(SubExprs[COND]);
  183   const Expr *getInc() const {
  184     return cast_or_null<Expr>(SubExprs[INC]);
  192   void setRangeInit(Expr *E) { SubExprs[RANGE] = reinterpret_cast<Stmt*>(E); }
  196   void setCond(Expr *E) { SubExprs[COND] = reinterpret_cast<Stmt*>(E); }
  197   void setInc(Expr *E) { SubExprs[INC] = reinterpret_cast<Stmt*>(E); }
  350     Expr *InitialSuspend = nullptr;
  351     Expr *FinalSuspend = nullptr;
  354     Expr *Allocate = nullptr;
  355     Expr *Deallocate = nullptr;
  356     Expr *ReturnValue = nullptr;
  403   Expr *getAllocate() const {
  404     return cast_or_null<Expr>(getStoredStmts()[SubStmt::Allocate]);
  406   Expr *getDeallocate() const {
  407     return cast_or_null<Expr>(getStoredStmts()[SubStmt::Deallocate]);
  409   Expr *getReturnValueInit() const {
  410     return cast<Expr>(getStoredStmts()[SubStmt::ReturnValue]);
  480   Expr *getOperand() const { return static_cast<Expr*>(SubStmts[Operand]); }
  485   Expr *getPromiseCall() const {
tools/clang/include/clang/AST/StmtObjC.h
   29   ObjCForCollectionStmt(Stmt *Elem, Expr *Collect, Stmt *Body,
   35   Expr *getCollection() {
   41   const Expr *getCollection() const {
   47   void setCollection(Expr *E) {
  305   const Expr *getSynchExpr() const {
  308   Expr *getSynchExpr() {
  344   const Expr *getThrowExpr() const { return reinterpret_cast<Expr*>(Throw); }
  345   Expr *getThrowExpr() { return reinterpret_cast<Expr*>(Throw); }
tools/clang/include/clang/AST/StmtOpenMP.h
  486   MutableArrayRef<Expr *> getCounters() {
  487     Expr **Storage = reinterpret_cast<Expr **>(
  493   MutableArrayRef<Expr *> getPrivateCounters() {
  494     Expr **Storage = reinterpret_cast<Expr **>(&*std::next(
  500   MutableArrayRef<Expr *> getInits() {
  501     Expr **Storage = reinterpret_cast<Expr **>(
  508   MutableArrayRef<Expr *> getUpdates() {
  509     Expr **Storage = reinterpret_cast<Expr **>(
  516   MutableArrayRef<Expr *> getFinals() {
  517     Expr **Storage = reinterpret_cast<Expr **>(
  524   MutableArrayRef<Expr *> getDependentCounters() {
  525     Expr **Storage = reinterpret_cast<Expr **>(
  532   MutableArrayRef<Expr *> getDependentInits() {
  533     Expr **Storage = reinterpret_cast<Expr **>(
  540   MutableArrayRef<Expr *> getFinalsConditions() {
  541     Expr **Storage = reinterpret_cast<Expr **>(
  587   void setIterationVariable(Expr *IV) {
  590   void setLastIteration(Expr *LI) {
  593   void setCalcLastIteration(Expr *CLI) {
  596   void setPreCond(Expr *PC) {
  599   void setCond(Expr *Cond) {
  602   void setInit(Expr *Init) { *std::next(child_begin(), InitOffset) = Init; }
  603   void setInc(Expr *Inc) { *std::next(child_begin(), IncOffset) = Inc; }
  607   void setIsLastIterVariable(Expr *IL) {
  614   void setLowerBoundVariable(Expr *LB) {
  621   void setUpperBoundVariable(Expr *UB) {
  628   void setStrideVariable(Expr *ST) {
  635   void setEnsureUpperBound(Expr *EUB) {
  642   void setNextLowerBound(Expr *NLB) {
  649   void setNextUpperBound(Expr *NUB) {
  656   void setNumIterations(Expr *NI) {
  663   void setPrevLowerBoundVariable(Expr *PrevLB) {
  668   void setPrevUpperBoundVariable(Expr *PrevUB) {
  673   void setDistInc(Expr *DistInc) {
  678   void setPrevEnsureUpperBound(Expr *PrevEUB) {
  683   void setCombinedLowerBoundVariable(Expr *CombLB) {
  688   void setCombinedUpperBoundVariable(Expr *CombUB) {
  693   void setCombinedEnsureUpperBound(Expr *CombEUB) {
  698   void setCombinedInit(Expr *CombInit) {
  703   void setCombinedCond(Expr *CombCond) {
  708   void setCombinedNextLowerBound(Expr *CombNLB) {
  713   void setCombinedNextUpperBound(Expr *CombNUB) {
  718   void setCombinedDistCond(Expr *CombDistCond) {
  723   void setCombinedParForInDistCond(Expr *CombParForInDistCond) {
  729   void setCounters(ArrayRef<Expr *> A);
  730   void setPrivateCounters(ArrayRef<Expr *> A);
  731   void setInits(ArrayRef<Expr *> A);
  732   void setUpdates(ArrayRef<Expr *> A);
  733   void setFinals(ArrayRef<Expr *> A);
  734   void setDependentCounters(ArrayRef<Expr *> A);
  735   void setDependentInits(ArrayRef<Expr *> A);
  736   void setFinalsConditions(ArrayRef<Expr *> A);
  744     Expr *LB;
  747     Expr *UB;
  750     Expr *EUB;
  754     Expr *Init;
  757     Expr *Cond;
  760     Expr *NLB;
  763     Expr *NUB;
  766     Expr *DistCond;
  770     Expr *ParForInDistCond;
  777     Expr *IterationVarRef;
  779     Expr *LastIteration;
  781     Expr *NumIterations;
  783     Expr *CalcLastIteration;
  785     Expr *PreCond;
  787     Expr *Cond;
  789     Expr *Init;
  791     Expr *Inc;
  793     Expr *IL;
  795     Expr *LB;
  797     Expr *UB;
  799     Expr *ST;
  801     Expr *EUB;
  803     Expr *NLB;
  805     Expr *NUB;
  808     Expr *PrevLB;
  811     Expr *PrevUB;
  815     Expr *DistInc;
  821     Expr *PrevEUB;
  823     SmallVector<Expr *, 4> Counters;
  825     SmallVector<Expr *, 4> PrivateCounters;
  827     SmallVector<Expr *, 4> Inits;
  829     SmallVector<Expr *, 4> Updates;
  831     SmallVector<Expr *, 4> Finals;
  834     SmallVector<Expr *, 4> DependentCounters;
  837     SmallVector<Expr *, 4> DependentInits;
  840     SmallVector<Expr *, 4> FinalsConditions;
  913   Expr *getIterationVariable() const {
  917   Expr *getLastIteration() const {
  921   Expr *getCalcLastIteration() const {
  925   Expr *getPreCond() const {
  929   Expr *getCond() const {
  933   Expr *getInit() const {
  937   Expr *getInc() const {
  945   Expr *getIsLastIterVariable() const {
  953   Expr *getLowerBoundVariable() const {
  961   Expr *getUpperBoundVariable() const {
  969   Expr *getStrideVariable() const {
  977   Expr *getEnsureUpperBound() const {
  985   Expr *getNextLowerBound() const {
  993   Expr *getNextUpperBound() const {
 1001   Expr *getNumIterations() const {
 1009   Expr *getPrevLowerBoundVariable() const {
 1015   Expr *getPrevUpperBoundVariable() const {
 1021   Expr *getDistInc() const {
 1027   Expr *getPrevEnsureUpperBound() const {
 1033   Expr *getCombinedLowerBoundVariable() const {
 1039   Expr *getCombinedUpperBoundVariable() const {
 1045   Expr *getCombinedEnsureUpperBound() const {
 1051   Expr *getCombinedInit() const {
 1057   Expr *getCombinedCond() const {
 1063   Expr *getCombinedNextLowerBound() const {
 1069   Expr *getCombinedNextUpperBound() const {
 1075   Expr *getCombinedDistCond() const {
 1081   Expr *getCombinedParForInDistCond() const {
 1111   ArrayRef<Expr *> counters() { return getCounters(); }
 1113   ArrayRef<Expr *> counters() const {
 1117   ArrayRef<Expr *> private_counters() { return getPrivateCounters(); }
 1119   ArrayRef<Expr *> private_counters() const {
 1123   ArrayRef<Expr *> inits() { return getInits(); }
 1125   ArrayRef<Expr *> inits() const {
 1129   ArrayRef<Expr *> updates() { return getUpdates(); }
 1131   ArrayRef<Expr *> updates() const {
 1135   ArrayRef<Expr *> finals() { return getFinals(); }
 1137   ArrayRef<Expr *> finals() const {
 1141   ArrayRef<Expr *> dependent_counters() { return getDependentCounters(); }
 1143   ArrayRef<Expr *> dependent_counters() const {
 1147   ArrayRef<Expr *> dependent_inits() { return getDependentInits(); }
 1149   ArrayRef<Expr *> dependent_inits() const {
 1153   ArrayRef<Expr *> finals_conditions() { return getFinalsConditions(); }
 1155   ArrayRef<Expr *> finals_conditions() const {
 2154   void setReductionRef(Expr *RR) {
 2171          Expr *ReductionRef);
 2183   const Expr *getReductionRef() const {
 2186   Expr *getReductionRef() {
 2360   void setX(Expr *X) { *std::next(child_begin()) = X; }
 2364   void setUpdateExpr(Expr *UE) { *std::next(child_begin(), 2) = UE; }
 2366   void setV(Expr *V) { *std::next(child_begin(), 3) = V; }
 2368   void setExpr(Expr *E) { *std::next(child_begin(), 4) = E; }
 2392          ArrayRef<OMPClause *> Clauses, Stmt *AssociatedStmt, Expr *X, Expr *V,
 2392          ArrayRef<OMPClause *> Clauses, Stmt *AssociatedStmt, Expr *X, Expr *V,
 2393          Expr *E, Expr *UE, bool IsXLHSInRHSPart, bool IsPostfixUpdate);
 2393          Expr *E, Expr *UE, bool IsXLHSInRHSPart, bool IsPostfixUpdate);
 2405   Expr *getX() { return cast_or_null<Expr>(*std::next(child_begin())); }
 2405   Expr *getX() { return cast_or_null<Expr>(*std::next(child_begin())); }
 2406   const Expr *getX() const {
 2407     return cast_or_null<Expr>(*std::next(child_begin()));
 2412   Expr *getUpdateExpr() {
 2413     return cast_or_null<Expr>(*std::next(child_begin(), 2));
 2415   const Expr *getUpdateExpr() const {
 2416     return cast_or_null<Expr>(*std::next(child_begin(), 2));
 2426   Expr *getV() { return cast_or_null<Expr>(*std::next(child_begin(), 3)); }
 2426   Expr *getV() { return cast_or_null<Expr>(*std::next(child_begin(), 3)); }
 2427   const Expr *getV() const {
 2428     return cast_or_null<Expr>(*std::next(child_begin(), 3));
 2431   Expr *getExpr() { return cast_or_null<Expr>(*std::next(child_begin(), 4)); }
 2431   Expr *getExpr() { return cast_or_null<Expr>(*std::next(child_begin(), 4)); }
 2432   const Expr *getExpr() const {
 2433     return cast_or_null<Expr>(*std::next(child_begin(), 4));
tools/clang/include/clang/AST/TemplateBase.h
  209   TemplateArgument(Expr *E) {
  329   Expr *getAsExpr() const {
  405     Expr *Expression;
  414   TemplateArgumentLocInfo(Expr *E) : Expression(E) {}
  429   Expr *getAsExpr() const {
  465   TemplateArgumentLoc(const TemplateArgument &Argument, Expr *E)
  511   Expr *getSourceExpression() const {
  516   Expr *getSourceDeclExpression() const {
  521   Expr *getSourceNullPtrExpression() const {
  526   Expr *getSourceIntegralExpression() const {
tools/clang/include/clang/AST/Type.h
 2878             unsigned tq, const Expr *sz = nullptr);
 2908       private llvm::TrailingObjects<ConstantArrayType, const Expr *> {
 2915                     const Expr *sz, ArraySizeModifier sm, unsigned tq)
 2920       *getTrailingObjects<const Expr*>() = sz;
 2924   unsigned numTrailingObjects(OverloadToken<const Expr*>) const {
 2930   const Expr *getSizeExpr() const {
 2932                ? *getTrailingObjects<const Expr *>()
 2955                       const Expr *SizeExpr, ArraySizeModifier SizeMod,
 3020   VariableArrayType(QualType et, QualType can, Expr *e,
 3029   Expr *getSizeExpr() const {
 3080                           Expr *e, ArraySizeModifier sm, unsigned tq,
 3086   Expr *getSizeExpr() const {
 3110                       unsigned TypeQuals, Expr *E);
 3128   Expr *AddrSpaceExpr;
 3133                             QualType can, Expr *AddrSpaceExpr,
 3137   Expr *getAddrSpaceExpr() const { return AddrSpaceExpr; }
 3153                       QualType PointeeType, Expr *AddrSpaceExpr);
 3170   Expr *SizeExpr;
 3178                               QualType can, Expr *SizeExpr, SourceLocation loc);
 3181   Expr *getSizeExpr() const { return SizeExpr; }
 3197                       QualType ElementType, Expr *SizeExpr);
 3288   Expr *SizeExpr;
 3292                            QualType CanonType, Expr *SizeExpr,
 3296   Expr *getSizeExpr() const { return SizeExpr; }
 3315                       QualType ElementType, const Expr *SizeExpr,
 3730           FunctionType::ExceptionType, Expr *, FunctionDecl *,
 3787     Expr *NoexceptExpr = nullptr;
 3839   unsigned numTrailingObjects(OverloadToken<Expr *>) const {
 4002   Expr *getNoexceptExpr() const {
 4005     return *getTrailingObjects<Expr *>();
 4251   Expr *TOExpr;
 4256   TypeOfExprType(Expr *E, QualType can = QualType());
 4259   Expr *getUnderlyingExpr() const { return TOExpr; }
 4281   DependentTypeOfExprType(const ASTContext &Context, Expr *E)
 4289                       Expr *E);
 4321   Expr *E;
 4327   DecltypeType(Expr *E, QualType underlyingType, QualType can = QualType());
 4330   Expr *getUnderlyingExpr() const { return E; }
 4352   DependentDecltypeType(const ASTContext &Context, Expr *E);
 4359                       Expr *E);
tools/clang/include/clang/AST/TypeLoc.h
 1491   Expr *Size;
 1520   Expr *getSizeExpr() const {
 1524   void setSizeExpr(Expr *Size) {
 1687   Expr *ExprOperand;
 1711   Expr *getAttrExprOperand() const {
 1714   void setAttrExprOperand(Expr *e) {
 1859   Expr* getUnderlyingExpr() const {
 1892   Expr *getUnderlyingExpr() const { return getTypePtr()->getUnderlyingExpr(); }
tools/clang/include/clang/ASTMatchers/ASTMatchFinder.h
  266 const NodeT *
  269     if (const NodeT *Node = N.getNodeAs<NodeT>(BoundTo))
  269     if (const NodeT *Node = N.getNodeAs<NodeT>(BoundTo))
tools/clang/include/clang/ASTMatchers/ASTMatchers.h
  110   const T *getNodeAs(StringRef ID) const {
  111     return MyBoundNodes.getNodeAs<T>(ID);
  625   const Expr *Initializer = Node.getInClassInitializer();
  824   const Expr *E = Node.IgnoreParens();
 1493   const Expr *SyntForm = Node.getSyntacticForm();
 1789 extern const internal::VariadicDynCastAllOfMatcher<Stmt, Expr> expr;
 1903   const Expr *const Init = Node.getRangeInit();
 3016   const Expr *ExprNode = Node.getImplicitObjectArgument()
 3117   const Expr *ReceiverNode = Node.getInstanceReceiver();
 3235   const Expr *ExprNode = Node.getCallee();
 3439   const Expr *ExprNode = Node.getImplicitObjectArgument();
 3562   const Expr *Initializer = Node.getAnyInitializer();
 3839   const Expr* NodeAsExpr = Node.getInit();
 3925   for (const Expr *Arg : Node.arguments()) {
 4287   const Expr *const Condition = Node.getCond();
 4380   if (const Expr* Expression = Node.getIdx())
 4397   if (const Expr* Expression = Node.getBase())
 4563   const Expr *LeftHandSide = Node.getLHS();
 4578   const Expr *RightHandSide = Node.getRHS();
 4586     const internal::Matcher<Expr> &InnerMatcher) {
 4599   const Expr * const Operand = Node.getSubExpr();
 4623   const Expr *const SubExpression =
 4711   const Expr *Expression = Node.getTrueExpr();
 4726   const Expr *Expression = Node.getFalseExpr();
 6419   if (const auto *RetValue = Node.getRetValue())
 6450                                     Expr::NPC_ValueDependentIsNull);
 6612   const Expr *E = &Node;
tools/clang/include/clang/ASTMatchers/ASTMatchersInternal.h
  120 inline QualType getUnderlyingType(const Expr &Node) { return Node.getType(); }
  160   const T *getNodeAs(StringRef ID) const {
  165     return It->second.get<T>();
  302   virtual bool matches(const T &Node,
  309     return matches(DynNode.getUnchecked<T>(), Finder, Builder);
  345   DynTypedMatcher(MatcherInterface<T> *Implementation)
  346       : SupportedKind(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()),
  436     return canConvertTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
  445   template <typename T> Matcher<T> convertTo() const {
  447     return unconditionalConvertTo<T>();
  479 class WrapperMatcherInterface : public MatcherInterface<T> {
  499   explicit Matcher(MatcherInterface<T> *Implementation)
  506   Matcher(const Matcher<From> &Other,
  507           typename std::enable_if<std::is_base_of<From, T>::value &&
  507           typename std::enable_if<std::is_base_of<From, T>::value &&
  508                                !std::is_same<From, T>::value>::type * = nullptr)
  508                                !std::is_same<From, T>::value>::type * = nullptr)
  520             std::is_same<T, QualType>::value &&
  528   Matcher<To> dynCastTo() const {
  529     static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
  529     static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
  534   bool matches(const T &Node,
  581     return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
  596 inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
  596 inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
  994   bool matchesChildOf(const T &Node, const DynTypedMatcher &Matcher,
  997     static_assert(std::is_base_of<Decl, T>::value ||
  998                   std::is_base_of<Stmt, T>::value ||
  999                   std::is_base_of<NestedNameSpecifier, T>::value ||
 1000                   std::is_base_of<NestedNameSpecifierLoc, T>::value ||
 1001                   std::is_base_of<TypeLoc, T>::value ||
 1002                   std::is_base_of<QualType, T>::value,
 1009   bool matchesDescendantOf(const T &Node,
 1013     static_assert(std::is_base_of<Decl, T>::value ||
 1014                   std::is_base_of<Stmt, T>::value ||
 1015                   std::is_base_of<NestedNameSpecifier, T>::value ||
 1016                   std::is_base_of<NestedNameSpecifierLoc, T>::value ||
 1017                   std::is_base_of<TypeLoc, T>::value ||
 1018                   std::is_base_of<QualType, T>::value,
 1026   bool matchesAncestorOf(const T &Node,
 1030     static_assert(std::is_base_of<Decl, T>::value ||
 1031                       std::is_base_of<NestedNameSpecifierLoc, T>::value ||
 1032                       std::is_base_of<Stmt, T>::value ||
 1033                       std::is_base_of<TypeLoc, T>::value,
 1067   using head = T1;
 1084       std::is_base_of<typename AnyTypeList::head, T>::value ||
 1085       TypeListContainsSuperOf<typename AnyTypeList::tail, T>::value;
 1141     explicit Adaptor(const Matcher<T> &InnerMatcher)
 1146     template <typename To> operator Matcher<To>() const {
 1151     const Matcher<T> InnerMatcher;
 1155   static Adaptor<T> create(const Matcher<T> &InnerMatcher) {
 1155   static Adaptor<T> create(const Matcher<T> &InnerMatcher) {
 1160   Adaptor<T> operator()(const Matcher<T> &InnerMatcher) const {
 1160   Adaptor<T> operator()(const Matcher<T> &InnerMatcher) const {
 1202   operator Matcher<T>() const {
 1203     static_assert(TypeListContainsSuperOf<ReturnTypes, T>::value,
 1243   operator Matcher<T>() const {
 1245                ast_type_traits::ASTNodeKind::getFromNodeKind<T>())
 1246         .template unconditionalConvertTo<T>();
 1255 class BindableMatcher : public Matcher<T> {
 1257   explicit BindableMatcher(const Matcher<T> &M) : Matcher<T>(M) {}
 1258   explicit BindableMatcher(MatcherInterface<T> *Implementation)
 1265   Matcher<T> bind(StringRef ID) const {
 1285 class HasMatcher : public WrapperMatcherInterface<T> {
 1287   explicit HasMatcher(const Matcher<ChildT> &ChildMatcher)
 1290   bool matches(const T &Node, ASTMatchFinder *Finder,
 1335   template <typename T> operator Matcher<T>() const {
 1337                Op, ast_type_traits::ASTNodeKind::getFromNodeKind<T>(),
 1338                getMatchers<T>(std::index_sequence_for<Ps...>()))
 1339         .template unconditionalConvertTo<T>();
 1370 inline Matcher<T> DynTypedMatcher::unconditionalConvertTo() const {
 1376 BindableMatcher<T> makeAllOfComposite(
 1377     ArrayRef<const Matcher<T> *> InnerMatchers) {
 1388   using PI = llvm::pointee_iterator<const Matcher<T> *const *>;
 1395           ast_type_traits::ASTNodeKind::getFromNodeKind<T>(),
 1397           .template unconditionalConvertTo<T>());
 1407 BindableMatcher<T> makeDynCastAllOfComposite(
 1408     ArrayRef<const Matcher<InnerT> *> InnerMatchers) {
 1410       makeAllOfComposite(InnerMatchers).template dynCastTo<T>());
 1418 class HasDescendantMatcher : public WrapperMatcherInterface<T> {
 1426   bool matches(const T &Node, ASTMatchFinder *Finder,
 1438 class HasParentMatcher : public WrapperMatcherInterface<T> {
 1446   bool matches(const T &Node, ASTMatchFinder *Finder,
 1458 class HasAncestorMatcher : public WrapperMatcherInterface<T> {
 1466   bool matches(const T &Node, ASTMatchFinder *Finder,
 1480 class ForEachDescendantMatcher : public WrapperMatcherInterface<T> {
 1489   bool matches(const T &Node, ASTMatchFinder *Finder,
 1557     : public VariadicFunction<BindableMatcher<SourceT>, Matcher<TargetT>,
 1557     : public VariadicFunction<BindableMatcher<SourceT>, Matcher<TargetT>,
 1558                               makeDynCastAllOfComposite<SourceT, TargetT>> {
 1558                               makeDynCastAllOfComposite<SourceT, TargetT>> {
 1792   static const Expr *get(const Ty &Node) {
 1798 inline const Expr *GetSourceExpressionMatcher<OpaqueValueExpr>::get(
tools/clang/include/clang/ASTMatchers/Dynamic/VariantValue.h
  199   ast_matchers::internal::Matcher<T> getTypedMatcher() const {
  202         ->template convertTo<T>();
  227       : MatcherOps(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()) {}
  228   typedef ast_matchers::internal::Matcher<T> MatcherT;
  232     return DynTypedMatcher(Matcher.convertTo<T>());
tools/clang/include/clang/Analysis/Analyses/ExprMutationAnalyzer.h
   28   bool isMutated(const Expr *Exp) { return findMutation(Exp) != nullptr; }
   30   const Stmt *findMutation(const Expr *Exp);
   33   bool isPointeeMutated(const Expr *Exp) {
   39   const Stmt *findPointeeMutation(const Expr *Exp);
   44   using ResultMap = llvm::DenseMap<const Expr *, const Stmt *>;
   46   const Stmt *findMutationMemoized(const Expr *Exp,
   51   bool isUnevaluated(const Expr *Exp);
   60   const Stmt *findDirectMutation(const Expr *Exp);
   61   const Stmt *findMemberMutation(const Expr *Exp);
   62   const Stmt *findArrayElementMutation(const Expr *Exp);
   63   const Stmt *findCastMutation(const Expr *Exp);
   64   const Stmt *findRangeLoopMutation(const Expr *Exp);
   65   const Stmt *findReferenceMutation(const Expr *Exp);
   66   const Stmt *findFunctionArgMutation(const Expr *Exp);
tools/clang/include/clang/Analysis/Analyses/ThreadSafetyCommon.h
  348     const Expr *SelfArg = nullptr;
  354     const Expr *const *FunArgs = nullptr;
  371   CapabilityExpr translateAttrExpr(const Expr *AttrExp, const NamedDecl *D,
  372                                    const Expr *DeclExp, VarDecl *SelfD=nullptr);
  374   CapabilityExpr translateAttrExpr(const Expr *AttrExp, CallingContext *Ctx);
  402                                 const Expr *SelfE = nullptr);
tools/clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h
  531   Literal(const Expr *C)
  539   const Expr *clangExpr() const { return Cexpr; }
  560   const Expr *Cexpr = nullptr;
tools/clang/include/clang/Analysis/Analyses/ThreadSafetyUtil.h
   78 std::string getSourceLiteralString(const Expr *CE);
tools/clang/include/clang/Analysis/Analyses/UninitializedValues.h
   39   const Expr *User;
   55   UninitUse(const Expr *User, bool AlwaysUninit)
   66   const Expr *getUser() const { return User; }
tools/clang/include/clang/Analysis/AnyCall.h
   58   const Expr *E = nullptr;
  106   static Optional<AnyCall> forExpr(const Expr *E) {
  191   const Expr *getExpr() const {
tools/clang/include/clang/Analysis/CFG.h
  188   static bool isCXXRecordTypedCall(Expr *E) {
  197   explicit CFGCXXRecordTypedCall(Expr *E, const ConstructionContext *C)
 1060   const Expr *getLastCondition() const;
 1105   void appendCXXRecordTypedCall(Expr *E,
tools/clang/include/clang/Analysis/ConstructionContext.h
  117   ConstructionContextItem(const Expr *E, unsigned Index)
  627   const Expr *CE;
  639   explicit ArgumentConstructionContext(const Expr *CE, unsigned Index,
  649   const Expr *getCallLikeExpr() const { return CE; }
tools/clang/include/clang/Index/IndexDataConsumer.h
   29     const Expr *OrigE;
tools/clang/include/clang/Parse/LoopHint.h
   35   Expr *ValueExpr;
tools/clang/include/clang/Parse/Parser.h
  300       Expr *TemplateName;
  323     void add(Parser &P, Expr *TemplateName, SourceLocation LessLoc,
 1705   typedef SmallVector<Expr*, 20> ExprListTy;
 1709   bool ParseExpressionList(SmallVectorImpl<Expr *> &Exprs,
 1716   bool ParseSimpleExpressionList(SmallVectorImpl<Expr*> &Exprs,
 1811   ExprResult ParseCXXPseudoDestructor(Expr *Base, SourceLocation OpLoc,
 1860   bool ParseExpressionListOrTypeId(SmallVectorImpl<Expr*> &Exprs,
 1919                                             Expr *ReceiverExpr);
 1922       ParsedType ReceiverType, Expr *ReceiverExpr);
 1932   typedef SmallVector<Expr*, 12> ExprVector;
 2021                            SmallVectorImpl<Expr *> &Constraints,
 2022                            SmallVectorImpl<Expr *> &Exprs);
 2961     Expr *TailExpr = nullptr;
 2979                           SmallVectorImpl<Expr *> &Vars,
tools/clang/include/clang/Sema/DeclSpec.h
  371     Expr *ExprRep;
  490   Expr *getRepAsExpr() const {
  671                        unsigned &DiagID, Expr *Rep,
  696   void UpdateExprRep(Expr *Rep) {
 1222     Expr *NumElts;
 1339       Expr *NoexceptExpr;
 1586                                   bool isStatic, bool isStar, Expr *NumElts,
 1615                                      Expr *NoexceptExpr,
 1826   Expr *AsmLabel;
 2440   void setAsmLabel(Expr *E) { AsmLabel = E; }
 2441   Expr *getAsmLabel() const { return AsmLabel; }
 2502   Expr *BitfieldSize;
tools/clang/include/clang/Sema/Designator.h
   50     Expr *Index;
   55     Expr *Start, *End;
   88   Expr *getArrayIndex() const {
   93   Expr *getArrayRangeStart() const {
   97   Expr *getArrayRangeEnd() const {
  135   static Designator getArray(Expr *Index,
  145   static Designator getArrayRange(Expr *Start,
  146                                   Expr *End,
tools/clang/include/clang/Sema/Initialization.h
  673                                           Expr *Init) {
 1167                 ArrayRef<Expr *> Args);
 1208   bool endsWithNarrowing(ASTContext &Ctx, const Expr *Initializer,
tools/clang/include/clang/Sema/Overload.h
  360     getNarrowingKind(ASTContext &Context, const Expr *Converted,
  473     Expr *FromExpr;
  485     void init(FailureKind K, Expr *From, QualType To) {
  500     void setFromExpr(Expr *E) {
  641                 Expr *FromExpr, QualType ToType) {
 1070         Sema &S, OverloadCandidateDisplayKind OCD, ArrayRef<Expr *> Args,
 1077         ArrayRef<Expr *> Args, StringRef Opc = "",
 1082     void NoteCandidates(Sema &S, ArrayRef<Expr *> Args,
tools/clang/include/clang/Sema/Ownership.h
  217     template <typename T> T *getAs() { return static_cast<T*>(get()); }
  263   using ExprResult = ActionResult<Expr *>;
  273   using MultiExprArg = MutableArrayRef<Expr *>;
  288   inline Expr *AssertSuccess(ExprResult R) {
tools/clang/include/clang/Sema/ParsedAttr.h
   67   const Expr *Replacement;
   72                    SourceLocation Strict, const Expr *ReplaceExpr)
  105 using ArgsUnion = llvm::PointerUnion<Expr *, IdentifierLoc *>;
  182   const Expr *MessageExpr;
  221              const Expr *messageExpr, Syntax syntaxUsed, SourceLocation strict,
  222              const Expr *replacementExpr)
  380     return Arg < NumArgs && getArg(Arg).is<Expr*>();
  383   Expr *getArgAsExpr(unsigned Arg) const {
  384     return getArg(Arg).get<Expr*>();
  425   const Expr * getMessageExpr() const {
  431   const Expr *getReplacementExpr() const {
  671                      SourceLocation unavailable, const Expr *MessageExpr,
  673                      const Expr *ReplacementExpr) {
  867                      SourceLocation unavailable, const Expr *MessageExpr,
  869                      const Expr *ReplacementExpr) {
tools/clang/include/clang/Sema/ParsedTemplate.h
   82     Expr *getAsExpr() const {
tools/clang/include/clang/Sema/ScopeInfo.h
  268     WeakObjectProfileTy(const Expr *Base, const ObjCPropertyDecl *Property);
  329     llvm::PointerIntPair<const Expr *, 1, bool> Rep;
  332     WeakUseTy(const Expr *Use, bool IsRead) : Rep(Use, IsRead) {}
  334     const Expr *getUseExpr() const { return Rep.getPointer(); }
  390   void markSafeWeakUse(const Expr *E);
  863   llvm::SmallVector<Expr*, 4> PotentiallyCapturingExprs;
  869   llvm::SmallSet<Expr *, 8> NonODRUsedCapturingExprs;
  922   void addPotentialCapture(Expr *VarExpr) {
  975   void markVariableExprAsNonODRUsed(Expr *CapturingVarExpr) {
  981   bool isVariableExprMarkedAsNonODRUsed(Expr *CapturingVarExpr) const {
  987   void removePotentialCapture(Expr *E) {
 1007       llvm::function_ref<void(VarDecl *, Expr *)> Callback) const;
tools/clang/include/clang/Sema/Sema.h
  304   void enterBinary(Sema &S, SourceLocation Tok, Expr *LHS, tok::TokenKind Op);
  305   void enterMemAccess(Sema &S, SourceLocation Tok, Expr *Base);
  306   void enterSubscript(Sema &S, SourceLocation Tok, Expr *LHS);
  606   using MaybeODRUseExprSet = llvm::SmallPtrSet<Expr *, 2>;
 1061     llvm::SmallPtrSet<const Expr *, 8> PossibleDerefs;
 1066     SmallVector<Expr*, 2> VolatileAssignmentLHSs;
 1272   bool isSelfExpr(Expr *RExpr);
 1273   bool isSelfExpr(Expr *RExpr, const ObjCMethodDecl *Method);
 1526                           Expr *ArraySize, unsigned Quals,
 1528   QualType BuildVectorType(QualType T, Expr *VecSize, SourceLocation AttrLoc);
 1529   QualType BuildExtVectorType(QualType T, Expr *ArraySize,
 1531   QualType BuildAddressSpaceAttr(QualType &T, LangAS ASIdx, Expr *AddrSpace,
 1535   QualType BuildAddressSpaceAttr(QualType &T, Expr *AddrSpace,
 1595   CanThrowResult canThrow(const Expr *E);
 1653   static SourceRange getPrintable(const Expr *E) { return E->getSourceRange(); }
 1690   void CheckAddressOfNoDeref(const Expr *E);
 1798   void completeExprArrayBound(Expr *E);
 1799   bool RequireCompleteExprType(Expr *E, TypeDiagnoser &Diagnoser);
 1800   bool RequireCompleteExprType(Expr *E, unsigned DiagID);
 1803   bool RequireCompleteExprType(Expr *E, unsigned DiagID, const Ts &...Args) {
 1823   QualType BuildTypeofExprType(Expr *E, SourceLocation Loc);
 1826   QualType BuildDecltypeType(Expr *E, SourceLocation Loc,
 2128   void CheckShadowingDeclModification(Expr *E, SourceLocation Loc);
 2138   void CheckCastAlign(Expr *Op, QualType T, SourceRange TRange);
 2161                                      Expr *Init);
 2211                                  Expr *defarg);
 2216   bool SetParamDefaultArgument(ParmVarDecl *Param, Expr *DefaultArg,
 2246   void checkNonTrivialCUnionInInitializer(const Expr *Init, SourceLocation Loc);
 2261   void AddInitializerToDecl(Decl *dcl, Expr *init, bool DirectInit);
 2340   Decl *ActOnFileScopeAsmDecl(Expr *expr,
 2526                    Declarator &D, Expr *BitfieldWidth);
 2529                          Declarator &D, Expr *BitfieldWidth,
 2534                                    Expr *BitfieldWidth,
 2542                             bool Mutable, Expr *BitfieldWidth,
 2611                   Declarator &D, Expr *BitfieldWidth,
 2669                                       Expr *val);
 2683                           SourceLocation EqualLoc, Expr *Val);
 2880   TryImplicitConversion(Expr *From, QualType ToType,
 2887   bool IsIntegralPromotion(Expr *From, QualType FromType, QualType ToType);
 2890   bool IsPointerConversion(Expr *From, QualType FromType, QualType ToType,
 2907   bool CheckPointerConversion(Expr *From, QualType ToType,
 2912   bool IsMemberPointerConversion(Expr *From, QualType FromType, QualType ToType,
 2915   bool CheckMemberPointerConversion(Expr *From, QualType ToType,
 2923   bool DiagnoseMultipleUserDefinedConversion(Expr *From, QualType ToType);
 2929                                              Expr *Value,
 2942   ExprResult PerformObjectArgumentInitialization(Expr *From,
 2950   void checkInitializerLifetime(const InitializedEntity &Entity, Expr *Init);
 2952   ExprResult PerformContextuallyConvertToBool(Expr *From);
 2953   ExprResult PerformContextuallyConvertToObjCPointer(Expr *From);
 2964   ExprResult CheckConvertedConstantExpression(Expr *From, QualType T,
 2966   ExprResult CheckConvertedConstantExpression(Expr *From, QualType T,
 3044       SourceLocation Loc, Expr *FromE, ContextualImplicitConverter &Converter);
 3052   ObjCSubscriptKind CheckSubscriptingKind(Expr *FromE);
 3065   ObjCLiteralKind CheckLiteralKind(Expr *FromE);
 3067   ExprResult PerformObjectMemberConversion(Expr *From,
 3080                             ArrayRef<Expr *> Args,
 3090                       ArrayRef<Expr *> Args,
 3098                           Expr::Classification ObjectClassification,
 3099                           ArrayRef<Expr *> Args,
 3106                           Expr::Classification ObjectClassification,
 3107                           ArrayRef<Expr *> Args,
 3118                                   Expr::Classification ObjectClassification,
 3119                                   ArrayRef<Expr *> Args,
 3126       TemplateArgumentListInfo *ExplicitTemplateArgs, ArrayRef<Expr *> Args,
 3133       ArrayRef<Expr *> Args, OverloadCandidateSet &CandidateSet,
 3136       Expr::Classification ObjectClassification = {},
 3140       CXXRecordDecl *ActingContext, Expr *From, QualType ToType,
 3145       CXXRecordDecl *ActingContext, Expr *From, QualType ToType,
 3152                              Expr *Object, ArrayRef<Expr *> Args,
 3152                              Expr *Object, ArrayRef<Expr *> Args,
 3155       const UnresolvedSetImpl &Functions, ArrayRef<Expr *> Args,
 3159                                    SourceLocation OpLoc, ArrayRef<Expr *> Args,
 3162   void AddBuiltinCandidate(QualType *ParamTys, ArrayRef<Expr *> Args,
 3167                                     SourceLocation OpLoc, ArrayRef<Expr *> Args,
 3171                                             ArrayRef<Expr *> Args,
 3184   void NoteAllOverloadCandidates(Expr *E, QualType DestType = QualType(),
 3189   EnableIfAttr *CheckEnableIf(FunctionDecl *Function, ArrayRef<Expr *> Args,
 3194   std::pair<Expr *, std::string> findFailedBooleanCondition(Expr *Cond);
 3194   std::pair<Expr *, std::string> findFailedBooleanCondition(Expr *Cond);
 3204                                            const Expr *ThisArg,
 3205                                            ArrayRef<const Expr *> Args,
 3235   ResolveAddressOfOverloadedFunction(Expr *AddressOfExpr,
 3242   resolveAddressOfOnlyViableOverloadCandidate(Expr *E,
 3262   Expr *FixOverloadedFunctionReference(Expr *E,
 3262   Expr *FixOverloadedFunctionReference(Expr *E,
 3270                                    ArrayRef<Expr *> Args,
 3287                                            Expr *Range, ExprResult *CallExpr);
 3289   ExprResult BuildOverloadedCallExpr(Scope *S, Expr *Fn,
 3294                                      Expr *ExecConfig,
 3298   bool buildOverloadedCallSet(Scope *S, Expr *Fn, UnresolvedLookupExpr *ULE,
 3306                                      Expr *input, bool RequiresADL = true);
 3311                                    Expr *LHS, Expr *RHS,
 3311                                    Expr *LHS, Expr *RHS,
 3317                                                 Expr *Base,Expr *Idx);
 3317                                                 Expr *Base,Expr *Idx);
 3320   BuildCallToMemberFunction(Scope *S, Expr *MemExpr,
 3325   BuildCallToObjectOfClassType(Scope *S, Expr *Object, SourceLocation LParenLoc,
 3329   ExprResult BuildOverloadedArrowExpr(Scope *S, Expr *Base,
 3598                                ArrayRef<Expr *> Args, ADLResult &Functions);
 3650   CorrectDelayedTyposInExpr(Expr *E, VarDecl *InitDecl = nullptr,
 3651                             llvm::function_ref<ExprResult(Expr *)> Filter =
 3652                                 [](Expr *E) -> ExprResult { return E; });
 3655   CorrectDelayedTyposInExpr(Expr *E,
 3656                             llvm::function_ref<ExprResult(Expr *)> Filter) {
 3662                             llvm::function_ref<ExprResult(Expr *)> Filter =
 3663                                 [](Expr *E) -> ExprResult { return E; }) {
 3669                             llvm::function_ref<ExprResult(Expr *)> Filter) {
 3685                                           ArrayRef<Expr *> Args,
 4012     Expr *get() const { return E; }
 4014     Expr *operator->() {
 4023     explicit FullExprArg(Expr *expr) : E(expr) {}
 4025     Expr *E;
 4028   FullExprArg MakeFullExpr(Expr *Arg) {
 4031   FullExprArg MakeFullExpr(Expr *Arg, SourceLocation CC) {
 4035   FullExprArg MakeFullDiscardedValueExpr(Expr *Arg) {
 4084   StmtResult ActOnForEachLValueExpr(Expr *E);
 4119                          Expr *Cond, SourceLocation CondRParen);
 4129                                            Expr *collection);
 4131                                         Stmt *First, Expr *collection,
 4150                                   SourceLocation ColonLoc, Expr *Collection,
 4158                                   Expr *Cond, Expr *Inc,
 4158                                   Expr *Cond, Expr *Inc,
 4169                                    Expr *DestExp);
 4197   VarDecl *getCopyElisionCandidate(QualType ReturnType, Expr *E,
 4202   StmtResult ActOnReturnStmt(SourceLocation ReturnLoc, Expr *RetValExp,
 4204   StmtResult BuildReturnStmt(SourceLocation ReturnLoc, Expr *RetValExp);
 4205   StmtResult ActOnCapScopeReturnStmt(SourceLocation ReturnLoc, Expr *RetValExp);
 4211                              Expr *AsmString, MultiExprArg Clobbers,
 4215   void FillInlineAsmIdentifierInfo(Expr *Res,
 4223   ExprResult LookupInlineAsmVarDeclField(Expr *RefExpr, StringRef Member,
 4231                             ArrayRef<Expr*> Exprs,
 4252   StmtResult BuildObjCAtThrowStmt(SourceLocation AtLoc, Expr *Throw);
 4253   StmtResult ActOnObjCAtThrowStmt(SourceLocation AtLoc, Expr *Throw,
 4256                                             Expr *operand);
 4258                                          Expr *SynchExpr,
 4279                                  Expr *FilterExpr,
 4316   void DiagnoseSelfMove(const Expr *LHSExpr, const Expr *RHSExpr,
 4316   void DiagnoseSelfMove(const Expr *LHSExpr, const Expr *RHSExpr,
 4325   void diagnoseZeroToNullptrConversion(CastKind Kind, const Expr *E);
 4369                              ArrayRef<Expr *> Args);
 4384   ExprResult TransformToPotentiallyEvaluated(Expr *E);
 4385   ExprResult HandleExprEvaluationContextForTypeof(Expr *E);
 4387   ExprResult CheckUnevaluatedOperand(Expr *E);
 4388   void CheckUnusedVolatileAssignment(Expr *E);
 4408   void MarkDeclRefReferenced(DeclRefExpr *E, const Expr *Base = nullptr);
 4414   ExprResult CheckLValueToRValueConversionOperand(Expr *E);
 4476   void MarkDeclarationsReferencedInExpr(Expr *E,
 4487   bool tryExprAsCall(Expr &E, QualType &ZeroArgCallReturnTy,
 4505   SourceRange getExprRange(Expr *E) const;
 4522                       ArrayRef<Expr *> Args = None, TypoExpr **Out = nullptr);
 4566       Expr *baseObjectExpr = nullptr,
 4607                       ArrayRef<Expr *> Args,
 4616   bool CheckLoopHintExpr(Expr *E, SourceLocation Loc);
 4621   ExprResult ActOnParenExpr(SourceLocation L, SourceLocation R, Expr *E);
 4634                                        Expr *ControllingExpr,
 4636                                        ArrayRef<Expr *> ArgExprs);
 4640                                         Expr *ControllingExpr,
 4642                                         ArrayRef<Expr *> Exprs);
 4646                                   Expr *InputExpr);
 4648                           UnaryOperatorKind Opc, Expr *Input);
 4650                           tok::TokenKind Op, Expr *Input);
 4652   bool isQualifiedMemberAccess(Expr *E);
 4659   ExprResult CreateUnaryExprOrTypeTraitExpr(Expr *E, SourceLocation OpLoc,
 4667   ExprResult CheckPlaceholderExpr(Expr *E);
 4668   bool CheckVecStepExpr(Expr *E);
 4670   bool CheckUnaryExprOrTypeTraitOperand(Expr *E, UnaryExprOrTypeTrait ExprKind);
 4680                                  tok::TokenKind Kind, Expr *Input);
 4682   ExprResult ActOnArraySubscriptExpr(Scope *S, Expr *Base, SourceLocation LLoc,
 4683                                      Expr *Idx, SourceLocation RLoc);
 4684   ExprResult CreateBuiltinArraySubscriptExpr(Expr *Base, SourceLocation LLoc,
 4685                                              Expr *Idx, SourceLocation RLoc);
 4686   ExprResult ActOnOMPArraySectionExpr(Expr *Base, SourceLocation LBLoc,
 4687                                       Expr *LowerBound, SourceLocation ColonLoc,
 4688                                       Expr *Length, SourceLocation RBLoc);
 4702       Expr *Base, QualType BaseType, SourceLocation OpLoc, bool IsArrow,
 4710   BuildMemberReferenceExpr(Expr *Base, QualType BaseType, SourceLocation OpLoc,
 4719   ExprResult BuildFieldReferenceExpr(Expr *BaseExpr, bool IsArrow,
 4725   ExprResult PerformMemberExprBaseConversion(Expr *Base, bool IsArrow);
 4727   bool CheckQualifiedMemberReference(Expr *BaseExpr, QualType BaseType,
 4731   ExprResult ActOnDependentMemberExpr(Expr *Base, QualType BaseType,
 4739   ExprResult ActOnMemberAccessExpr(Scope *S, Expr *Base,
 4748   BuildMemberExpr(Expr *Base, bool IsArrow, SourceLocation OpLoc,
 4756   BuildMemberExpr(Expr *Base, bool IsArrow, SourceLocation OpLoc,
 4765   bool ConvertArgumentsForCall(CallExpr *Call, Expr *Fn,
 4768                                ArrayRef<Expr *> Args,
 4773                                 const Expr *ArgExpr);
 4778   ExprResult ActOnCallExpr(Scope *S, Expr *Fn, SourceLocation LParenLoc,
 4780                            Expr *ExecConfig = nullptr);
 4781   ExprResult BuildCallExpr(Scope *S, Expr *Fn, SourceLocation LParenLoc,
 4783                            Expr *ExecConfig = nullptr,
 4792   BuildResolvedCallExpr(Expr *Fn, NamedDecl *NDecl, SourceLocation LParenLoc,
 4793                         ArrayRef<Expr *> Arg, SourceLocation RParenLoc,
 4794                         Expr *Config = nullptr, bool IsExecConfig = false,
 4803                            SourceLocation RParenLoc, Expr *CastExpr);
 4807                                  Expr *Op);
 4812                                 SourceLocation RParenLoc, Expr *E,
 4815   ExprResult MaybeConvertParenListExprToParenExpr(Scope *S, Expr *ME);
 4820                                   Expr *InitExpr);
 4825                                       Expr *LiteralExpr);
 4845                         tok::TokenKind Kind, Expr *LHSExpr, Expr *RHSExpr);
 4845                         tok::TokenKind Kind, Expr *LHSExpr, Expr *RHSExpr);
 4847                         BinaryOperatorKind Opc, Expr *LHSExpr, Expr *RHSExpr);
 4847                         BinaryOperatorKind Opc, Expr *LHSExpr, Expr *RHSExpr);
 4849                                 Expr *LHSExpr, Expr *RHSExpr);
 4849                                 Expr *LHSExpr, Expr *RHSExpr);
 4851   void DiagnoseCommaOperator(const Expr *LHS, SourceLocation Loc);
 4857                                 Expr *CondExpr, Expr *LHSExpr, Expr *RHSExpr);
 4857                                 Expr *CondExpr, Expr *LHSExpr, Expr *RHSExpr);
 4857                                 Expr *CondExpr, Expr *LHSExpr, Expr *RHSExpr);
 4876       Expr *E;
 4894                              Expr *CondExpr, Expr *LHSExpr,
 4894                              Expr *CondExpr, Expr *LHSExpr,
 4895                              Expr *RHSExpr, SourceLocation RPLoc);
 4898   ExprResult ActOnVAArg(SourceLocation BuiltinLoc, Expr *E, ParsedType Ty,
 4900   ExprResult BuildVAArgExpr(SourceLocation BuiltinLoc, Expr *E,
 4917   bool CheckCaseExpression(Expr *E);
 4977   ExprResult ActOnConvertVectorExpr(Expr *E, ParsedType ParsedDestTy,
 4984   ExprResult ActOnAsTypeExpr(Expr *E, ParsedType ParsedDestTy,
 5202     void CalledExpr(Expr *E);
 5268   ExprResult ActOnNoexceptSpec(SourceLocation NoexceptLoc, Expr *NoexceptExpr,
 5277                                    Expr *NoexceptExpr,
 5293          Expr *NoexceptExpr);
 5422   ExprResult MaybeBindToTemporary(Expr *E);
 5427                                SmallVectorImpl<Expr*> &ConvertedArgs,
 5458                                Expr *E,
 5464                                Expr *E,
 5473                                      Expr *Operand, SourceLocation RParenLoc);
 5481                             Expr *Operand,
 5496                             Expr *Operand,
 5506   ExprResult ActOnCXXFoldExpr(SourceLocation LParenLoc, Expr *LHS,
 5508                               SourceLocation EllipsisLoc, Expr *RHS,
 5510   ExprResult BuildCXXFoldExpr(SourceLocation LParenLoc, Expr *LHS,
 5512                               SourceLocation EllipsisLoc, Expr *RHS,
 5522   Expr *BuildCXXThisExpr(SourceLocation Loc, QualType Type, bool IsImplicit);
 5593   ExprResult ActOnCXXThrow(Scope *S, SourceLocation OpLoc, Expr *expr);
 5594   ExprResult BuildCXXThrow(SourceLocation OpLoc, Expr *Ex,
 5596   bool CheckCXXThrowOperand(SourceLocation ThrowLoc, QualType ThrowTy, Expr *E);
 5620                          Expr *Initializer);
 5628                          Optional<Expr *> ArraySize,
 5630                          Expr *Initializer);
 5683                             Expr *Operand);
 5690                                Expr *Operand, SourceLocation RParen);
 5691   ExprResult BuildCXXNoexceptExpr(SourceLocation KeyLoc, Expr *Operand,
 5707                                  Expr *DimExpr,
 5713                                  Expr *DimExpr,
 5720                                   Expr *Queried,
 5725                                   Expr *Queried,
 5729                                           Expr *Base,
 5735   ExprResult BuildPseudoDestructorExpr(Expr *Base,
 5744   ExprResult ActOnPseudoDestructorExpr(Scope *S, Expr *Base,
 5753   ExprResult ActOnPseudoDestructorExpr(Scope *S, Expr *Base,
 5762   Expr *MaybeCreateExprWithCleanups(Expr *SubExpr);
 5762   Expr *MaybeCreateExprWithCleanups(Expr *SubExpr);
 5767   CreateMaterializeTemporaryExpr(QualType T, Expr *Temporary,
 5770   ExprResult ActOnFinishFullExpr(Expr *Expr, bool DiscardedValue) {
 5774   ExprResult ActOnFinishFullExpr(Expr *Expr, SourceLocation CC,
 5889   ExprResult ActOnDecltypeExpression(Expr *E);
 6019       IdentifierInfo *Id, LambdaCaptureInitKind InitKind, Expr *&Init) {
 6027       Expr *&Init);
 6038                                           unsigned InitStyle, Expr *Init);
 6128                                            Expr *Src);
 6132   bool CheckConstraintExpression(Expr *CE);
 6136                                        Expr *ConstraintExpr,
 6147                                     ArrayRef<Expr *> Strings);
 6154   ExprResult BuildObjCNumericLiteral(SourceLocation AtLoc, Expr *Number);
 6164   ExprResult BuildObjCBoxedExpr(SourceRange SR, Expr *ValueExpr);
 6166   ExprResult BuildObjCSubscriptExpression(SourceLocation RB, Expr *BaseExpr,
 6167                                           Expr *IndexExpr,
 6177   ExprResult BuildCXXMemberCallExpr(Expr *Exp, NamedDecl *FoundDecl,
 6208                                        Expr *LangStr,
 6230                                  Expr *BitfieldWidth, const VirtSpecifiers &VS,
 6236                                               Expr *Init);
 6246                                     ArrayRef<Expr *> Args,
 6257                                     Expr *InitList,
 6267                                     Expr *Init,
 6271                                        Expr *Init,
 6276                                      Expr *Init,
 6281                                            Expr *Init,
 6397                                      Expr *AssertExpr,
 6398                                      Expr *AssertMessageExpr,
 6401                                      Expr *AssertExpr,
 6557                                          Expr *ObjectExpr,
 6558                                          Expr *ArgExpr,
 6560   AccessResult CheckAddressOfMemberAccess(Expr *OvlExpr,
 6717                                       Expr *DefaultArg);
 6736                              Expr *RequiresClause);
 6975                                    QualType InstantiatedParamType, Expr *Arg,
 7081   ExprResult RebuildExprInCurrentInstantiation(Expr *E);
 7097       IdentifierInfo *Name, SourceLocation NameLoc, Expr *ConstraintExpr);
 7207   bool DiagnoseUnexpandedParameterPack(Expr *E,
 7340   ExprResult ActOnPackExpansion(Expr *Pattern, SourceLocation EllipsisLoc);
 7349   ExprResult CheckPackExpansion(Expr *Pattern, SourceLocation EllipsisLoc,
 7557       TemplateArgumentListInfo *ExplicitTemplateArgs, ArrayRef<Expr *> Args,
 7600   DeduceAutoType(TypeSourceInfo *AutoType, Expr *&Initializer, QualType &Result,
 7603   DeduceAutoType(TypeLoc AutoTypeLoc, Expr *&Initializer, QualType &Result,
 7605   void DiagnoseAutoDeductionFailure(VarDecl *VDecl, Expr *Init);
 7621                                         Expr *Init);
 7627                                         Expr *&RetExpr, AutoType *AT);
 8339   ExprResult SubstExpr(Expr *E,
 8355   bool SubstExprs(ArrayRef<Expr *> Exprs, bool IsCall,
 8357                   SmallVectorImpl<Expr *> &Outputs);
 8369   ExprResult SubstInitializer(Expr *E,
 8761                             Expr *BaseExpr,
 8828   ExprResult BuildInstanceMessage(Expr *Receiver,
 8839   ExprResult BuildInstanceMessageImplicit(Expr *Receiver,
 8847                                   Expr *Receiver,
 8858                                   Expr *SubExpr);
 8866                                   Expr *SubExpr);
 8868   void CheckTollFreeBridgeCast(QualType castType, Expr *castExpr);
 8870   void CheckObjCBridgeRelatedCast(QualType castType, Expr *castExpr);
 8872   bool CheckTollFreeBridgeStaticCast(QualType castType, Expr *castExpr,
 8885                                          Expr *&SrcExpr, bool Diagnose = true);
 8887   bool ConversionToObjCStringLiteralCheck(QualType DstType, Expr *&SrcExpr,
 8928                        StringRef SlotLabel, Expr *Alignment);
 9104   void AddAlignedAttr(Decl *D, const AttributeCommonInfo &CI, Expr *E,
 9111   void AddAssumeAlignedAttr(Decl *D, const AttributeCommonInfo &CI, Expr *E,
 9112                             Expr *OE);
 9117                          Expr *ParamExpr);
 9121   void AddAlignValueAttr(Decl *D, const AttributeCommonInfo &CI, Expr *E);
 9126                            Expr *MaxThreads, Expr *MinBlocks);
 9126                            Expr *MaxThreads, Expr *MinBlocks);
 9142                                       Expr *Min, Expr *Max);
 9142                                       Expr *Min, Expr *Max);
 9147                                Expr *Min, Expr *Max);
 9147                                Expr *Min, Expr *Max);
 9156   ExprResult ActOnCoawaitExpr(Scope *S, SourceLocation KwLoc, Expr *E);
 9157   ExprResult ActOnCoyieldExpr(Scope *S, SourceLocation KwLoc, Expr *E);
 9158   StmtResult ActOnCoreturnStmt(Scope *S, SourceLocation KwLoc, Expr *E);
 9160   ExprResult BuildResolvedCoawaitExpr(SourceLocation KwLoc, Expr *E,
 9162   ExprResult BuildUnresolvedCoawaitExpr(SourceLocation KwLoc, Expr *E,
 9164   ExprResult BuildCoyieldExpr(SourceLocation KwLoc, Expr *E);
 9165   StmtResult BuildCoreturnStmt(SourceLocation KwLoc, Expr *E,
 9239   bool checkOpenCLDisabledDecl(const NamedDecl &D, const Expr &E);
 9252   VerifyPositiveIntegerConstantInClause(Expr *Op, OpenMPClauseKind CKind,
 9281   void checkOpenMPDeviceExpr(const Expr *E);
 9379                                                     Expr *Op);
 9406                                      ArrayRef<Expr *> VarList);
 9409                                                   ArrayRef<Expr *> VarList);
 9412                                               ArrayRef<Expr *> VarList,
 9433   void ActOnOpenMPDeclareReductionCombinerEnd(Decl *D, Expr *Combiner);
 9438   void ActOnOpenMPDeclareReductionInitializerEnd(Decl *D, Expr *Initializer,
 9481   checkDeclIsAllowedInOpenMPTarget(Expr *E, Decl *D,
 9513       llvm::SmallDenseMap<const ValueDecl *, const Expr *, 4>;
 9774       Expr *Simdlen, ArrayRef<Expr *> Uniforms, ArrayRef<Expr *> Aligneds,
 9774       Expr *Simdlen, ArrayRef<Expr *> Uniforms, ArrayRef<Expr *> Aligneds,
 9774       Expr *Simdlen, ArrayRef<Expr *> Uniforms, ArrayRef<Expr *> Aligneds,
 9775       ArrayRef<Expr *> Alignments, ArrayRef<Expr *> Linears,
 9775       ArrayRef<Expr *> Alignments, ArrayRef<Expr *> Linears,
 9776       ArrayRef<unsigned> LinModifiers, ArrayRef<Expr *> Steps, SourceRange SR);
 9786   Optional<std::pair<FunctionDecl *, Expr *>> checkOpenMPDeclareVariantFunction(
 9787       DeclGroupPtrTy DG, Expr *VariantRef, SourceRange SR);
 9798       FunctionDecl *FD, Expr *VariantRef, SourceRange SR,
 9802                                          Expr *Expr,
 9807   OMPClause *ActOnOpenMPAllocatorClause(Expr *Allocator,
 9813                                  Expr *Condition, SourceLocation StartLoc,
 9819   OMPClause *ActOnOpenMPFinalClause(Expr *Condition, SourceLocation StartLoc,
 9823   OMPClause *ActOnOpenMPNumThreadsClause(Expr *NumThreads,
 9828   OMPClause *ActOnOpenMPSafelenClause(Expr *Length,
 9833   OMPClause *ActOnOpenMPSimdlenClause(Expr *Length, SourceLocation StartLoc,
 9837   OMPClause *ActOnOpenMPCollapseClause(Expr *NumForLoops,
 9845                            Expr *NumForLoops = nullptr);
 9847   OMPClause *ActOnOpenMPGrainsizeClause(Expr *Size, SourceLocation StartLoc,
 9851   OMPClause *ActOnOpenMPNumTasksClause(Expr *NumTasks, SourceLocation StartLoc,
 9855   OMPClause *ActOnOpenMPHintClause(Expr *Hint, SourceLocation StartLoc,
 9879       OpenMPClauseKind Kind, ArrayRef<unsigned> Arguments, Expr *Expr,
 9886       OpenMPScheduleClauseKind Kind, Expr *ChunkSize, SourceLocation StartLoc,
 9947       OpenMPClauseKind Kind, ArrayRef<Expr *> Vars, Expr *TailExpr,
 9947       OpenMPClauseKind Kind, ArrayRef<Expr *> Vars, Expr *TailExpr,
 9957   ActOnOpenMPAllocateClause(Expr *Allocator, ArrayRef<Expr *> VarList,
 9957   ActOnOpenMPAllocateClause(Expr *Allocator, ArrayRef<Expr *> VarList,
 9961   OMPClause *ActOnOpenMPPrivateClause(ArrayRef<Expr *> VarList,
 9966   OMPClause *ActOnOpenMPFirstprivateClause(ArrayRef<Expr *> VarList,
 9971   OMPClause *ActOnOpenMPLastprivateClause(ArrayRef<Expr *> VarList,
 9976   OMPClause *ActOnOpenMPSharedClause(ArrayRef<Expr *> VarList,
 9982       ArrayRef<Expr *> VarList, SourceLocation StartLoc,
 9986       ArrayRef<Expr *> UnresolvedReductions = llvm::None);
 9989       ArrayRef<Expr *> VarList, SourceLocation StartLoc,
 9993       ArrayRef<Expr *> UnresolvedReductions = llvm::None);
 9996       ArrayRef<Expr *> VarList, SourceLocation StartLoc,
10000       ArrayRef<Expr *> UnresolvedReductions = llvm::None);
10003   ActOnOpenMPLinearClause(ArrayRef<Expr *> VarList, Expr *Step,
10003   ActOnOpenMPLinearClause(ArrayRef<Expr *> VarList, Expr *Step,
10008   OMPClause *ActOnOpenMPAlignedClause(ArrayRef<Expr *> VarList,
10009                                       Expr *Alignment,
10015   OMPClause *ActOnOpenMPCopyinClause(ArrayRef<Expr *> VarList,
10020   OMPClause *ActOnOpenMPCopyprivateClause(ArrayRef<Expr *> VarList,
10025   OMPClause *ActOnOpenMPFlushClause(ArrayRef<Expr *> VarList,
10032                           SourceLocation ColonLoc, ArrayRef<Expr *> VarList,
10036   OMPClause *ActOnOpenMPDeviceClause(Expr *Device, SourceLocation StartLoc,
10047                        ArrayRef<Expr *> VarList, const OMPVarListLocTy &Locs,
10048                        ArrayRef<Expr *> UnresolvedMappers = llvm::None);
10050   OMPClause *ActOnOpenMPNumTeamsClause(Expr *NumTeams, SourceLocation StartLoc,
10054   OMPClause *ActOnOpenMPThreadLimitClause(Expr *ThreadLimit,
10059   OMPClause *ActOnOpenMPPriorityClause(Expr *Priority, SourceLocation StartLoc,
10064       OpenMPDistScheduleClauseKind Kind, Expr *ChunkSize,
10074   ActOnOpenMPToClause(ArrayRef<Expr *> VarList, CXXScopeSpec &MapperIdScopeSpec,
10077                       ArrayRef<Expr *> UnresolvedMappers = llvm::None);
10080       ArrayRef<Expr *> VarList, CXXScopeSpec &MapperIdScopeSpec,
10082       ArrayRef<Expr *> UnresolvedMappers = llvm::None);
10084   OMPClause *ActOnOpenMPUseDevicePtrClause(ArrayRef<Expr *> VarList,
10087   OMPClause *ActOnOpenMPIsDevicePtrClause(ArrayRef<Expr *> VarList,
10112   ExprResult ImpCastExprToType(Expr *E, QualType Type, CastKind CK,
10125   ExprResult IgnoredValueConversions(Expr *E);
10129   ExprResult UsualUnaryConversions(Expr *E);
10133   ExprResult CallExprUnaryConversions(Expr *E);
10137   ExprResult DefaultFunctionArrayConversion(Expr *E, bool Diagnose = true);
10142   ExprResult DefaultFunctionArrayLvalueConversion(Expr *E,
10149   ExprResult DefaultLvalueConversion(Expr *E);
10154   ExprResult DefaultArgumentPromotion(Expr *E);
10159   ExprResult TemporaryMaterializationConversion(Expr *E);
10172                                        Expr *Fn);
10189   void checkVariadicArgument(const Expr *E, VariadicCallType CT);
10192   bool hasCStrMethod(const Expr *E);
10198                               unsigned FirstParam, ArrayRef<Expr *> Args,
10199                               SmallVectorImpl<Expr *> &AllArgs,
10206   ExprResult DefaultVariadicArgumentPromotion(Expr *E, VariadicCallType CT,
10301                                 Expr *SrcExpr, AssignmentAction Action,
10313                               Expr *SrcExpr);
10353   bool IsStringLiteralToNonConstPointerConversion(Expr *From, QualType ToType);
10355   bool CheckExceptionSpecCompatibility(Expr *From, QualType ToType);
10357   ExprResult PerformImplicitConversion(Expr *From, QualType ToType,
10360   ExprResult PerformImplicitConversion(Expr *From, QualType ToType,
10364   ExprResult PerformImplicitConversion(Expr *From, QualType ToType,
10369   ExprResult PerformImplicitConversion(Expr *From, QualType ToType,
10375       Expr *E, QualType Ty, ExprValueKind VK = VK_RValue,
10418     Expr *LHSExpr, ExprResult &RHS, SourceLocation Loc, QualType CompoundType);
10421                                      UnaryOperatorKind Opcode, Expr *Op);
10424                                          Expr *LHS, Expr *RHS);
10424                                          Expr *LHS, Expr *RHS);
10425   ExprResult checkPseudoObjectRValue(Expr *E);
10426   Expr *recreateSyntacticForm(PseudoObjectExpr *E);
10434   QualType FindCompositePointerType(SourceLocation Loc, Expr *&E1, Expr *&E2,
10434   QualType FindCompositePointerType(SourceLocation Loc, Expr *&E1, Expr *&E2,
10439     Expr *E1Tmp = E1.get(), *E2Tmp = E2.get();
10450   bool DiagnoseConditionalForNull(Expr *LHSExpr, Expr *RHSExpr,
10450   bool DiagnoseConditionalForNull(Expr *LHSExpr, Expr *RHSExpr,
10453   void DiagnoseAlwaysNonNullPointer(Expr *E,
10454                                     Expr::NullPointerConstantKind NullType,
10472   bool CheckForConstantInitializer(Expr *e, QualType t);
10498                                  Expr *CastExpr, CastKind &CastKind,
10503   ExprResult forceUnknownAnyToType(Expr *E, QualType ToType);
10508                                 Expr *result, QualType &paramType);
10519   ExprResult prepareVectorSplat(QualType VectorTy, Expr *SplattedExpr);
10526   ExprResult CheckExtVectorCast(SourceRange R, QualType DestTy, Expr *CastExpr,
10531                                         Expr *CastExpr,
10539                                           QualType castType, Expr *&op,
10546   Expr *stripARCUnbridgedCast(Expr *e);
10546   Expr *stripARCUnbridgedCast(Expr *e);
10547   void diagnoseARCUnbridgedCast(Expr *e);
10555   void checkRetainCycles(Expr *receiver, Expr *argument);
10555   void checkRetainCycles(Expr *receiver, Expr *argument);
10556   void checkRetainCycles(VarDecl *Var, Expr *Init);
10560   bool checkUnsafeAssigns(SourceLocation Loc, QualType LHS, Expr *RHS);
10564   void checkUnsafeExprAssigns(SourceLocation Loc, Expr *LHS, Expr *RHS);
10564   void checkUnsafeExprAssigns(SourceLocation Loc, Expr *LHS, Expr *RHS);
10570   bool CheckMessageArgumentTypes(const Expr *Receiver, QualType ReceiverType,
10581   QualType getMessageSendResultType(const Expr *Receiver, QualType ReceiverType,
10587   void EmitRelatedResultTypeNote(const Expr *E);
10616     std::pair<VarDecl *, Expr *> get() const {
10635                                  Expr *SubExpr, ConditionKind CK);
10646   ExprResult CheckSwitchCondition(SourceLocation SwitchLoc, Expr *Cond);
10656   ExprResult CheckBooleanCondition(SourceLocation Loc, Expr *E,
10661   ExplicitSpecifier ActOnExplicitBoolSpecifier(Expr *E);
10669   void DiagnoseAssignmentAsCondition(Expr *E);
10676   ExprResult CheckCXXBooleanCondition(Expr *CondExpr, bool IsConstexpr = false);
10706   ExprResult VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result,
10709   ExprResult VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result,
10712   ExprResult VerifyIntegerConstantExpression(Expr *E,
10721                             Expr *BitWidth, bool *ZeroWidth = nullptr);
11113   void CodeCompleteMemberReferenceExpr(Scope *S, Expr *Base, Expr *OtherOpBase,
11113   void CodeCompleteMemberReferenceExpr(Scope *S, Expr *Base, Expr *OtherOpBase,
11127   QualType ProduceCallSignatureHelp(Scope *S, Expr *Fn, ArrayRef<Expr *> Args,
11127   QualType ProduceCallSignatureHelp(Scope *S, Expr *Fn, ArrayRef<Expr *> Args,
11131                                            ArrayRef<Expr *> Args,
11136                                               ArrayRef<Expr *> ArgExprs,
11174   void CodeCompleteObjCInstanceMessage(Scope *S, Expr *Receiver,
11233   void CheckArrayAccess(const Expr *BaseExpr, const Expr *IndexExpr,
11233   void CheckArrayAccess(const Expr *BaseExpr, const Expr *IndexExpr,
11236   void CheckArrayAccess(const Expr *E);
11250                            ArrayRef<const Expr *> Args);
11255                             ArrayRef<const Expr *> Args,
11260                  const Expr *ThisArg, ArrayRef<const Expr *> Args,
11260                  const Expr *ThisArg, ArrayRef<const Expr *> Args,
11264   bool CheckObjCString(Expr *Arg);
11265   ExprResult CheckOSLogFormatStringArg(Expr *Arg);
11299   ExprResult SemaConvertVectorExpr(Expr *E, TypeSourceInfo *TInfo,
11350                             ArrayRef<const Expr *> Args,
11355   bool CheckFormatArguments(ArrayRef<const Expr *> Args,
11377   void CheckReturnValExpr(Expr *RetValExp, QualType lhsType,
11384   void CheckFloatComparison(SourceLocation Loc, Expr *LHS, Expr *RHS);
11384   void CheckFloatComparison(SourceLocation Loc, Expr *LHS, Expr *RHS);
11387   void CheckImplicitConversions(Expr *E, SourceLocation CC = SourceLocation());
11388   void CheckBoolLikeConversion(Expr *E, SourceLocation CC);
11389   void CheckForIntOverflow(Expr *E);
11390   void CheckUnsequencedOperations(Expr *E);
11394   void CheckCompletedExpr(Expr *E, SourceLocation CheckLoc = SourceLocation(),
11398                                    Expr *Init);
11408   void CheckBreakContinueBinding(Expr *E);
11451                                 const ArrayRef<const Expr *> ExprArgs,
11456   void CheckAddressOfPackedMember(Expr *rhs);
11577     Expr *E;
11583     MisalignedMember(Expr *E, RecordDecl *RD, ValueDecl *MD,
11586     explicit MisalignedMember(Expr *E)
11596   void AddPotentialMisalignedMembers(Expr *E, RecordDecl *RD, ValueDecl *MD,
11610   void DiscardMisalignedMemberAddress(const Type *T, Expr *E);
11616       Expr *E,
11617       llvm::function_ref<void(Expr *, RecordDecl *, FieldDecl *, CharUnits)>
tools/clang/include/clang/Sema/SemaFixItUtils.h
   75   bool tryToFixConversion(const Expr *FromExpr,
tools/clang/include/clang/Serialization/ASTReader.h
 2271   Expr *ReadExpr(ModuleFile &F);
 2284   Expr *ReadSubExpr();
 2468   Expr *readExpr() { return Reader->ReadExpr(*F); }
 2474   Expr *readSubExpr() { return Reader->ReadSubExpr(); }
tools/clang/include/clang/Serialization/ASTWriter.h
  728                               Expr *ThisArg) override;
tools/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
  106   virtual std::string getMessageForArg(const Expr *ArgE, unsigned ArgIndex);
tools/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitors.h
  114 bool trackExpressionValue(const ExplodedNode *N, const Expr *E,
  119 const Expr *getDerefExpr(const Stmt *S);
  209   static const Expr *getNilReceiver(const Stmt *S, const ExplodedNode *N);
  243   PathDiagnosticPieceRef VisitTrueTest(const Expr *Cond,
  248   PathDiagnosticPieceRef VisitTrueTest(const Expr *Cond, const DeclRefExpr *DR,
  255   VisitTrueTest(const Expr *Cond, const BinaryOperator *BExpr,
  259   PathDiagnosticPieceRef VisitTrueTest(const Expr *Cond, const MemberExpr *ME,
  266   VisitConditionVariable(StringRef LhsString, const Expr *CondVarExpr,
  279   bool printValue(const Expr *CondVarExpr, raw_ostream &Out,
  282   bool patternMatch(const Expr *Ex,
  283                     const Expr *ParentEx,
tools/clang/include/clang/StaticAnalyzer/Core/Checker.h
  104     ((const CHECKER *)checker)->checkPostStmt(cast<STMT>(S), C);
  108     return isa<STMT>(S);
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
  145   llvm::PointerUnion<const Expr *, const Decl *> Origin;
  167   CallEvent(const Expr *E, ProgramStateRef state, const LocationContext *lctx)
  222   const Expr *getOriginExpr() const {
  223     return Origin.dyn_cast<const Expr *>();
  272   virtual const Expr *getArgExpr(unsigned Index) const { return nullptr; }
  463   AnyFunctionCall(const Expr *E, ProgramStateRef St,
  518   const Expr *getArgExpr(unsigned Index) const override {
  553   const Expr *getArgExpr(unsigned Index) const override {
  653   virtual const Expr *getCXXThisExpr() const { return nullptr; }
  696   const Expr *getArgExpr(unsigned Index) const override {
  700   const Expr *getCXXThisExpr() const override;
  737   const Expr *getArgExpr(unsigned Index) const override {
  741   const Expr *getCXXThisExpr() const override;
  852   const Expr *getArgExpr(unsigned Index) const override {
  903   const Expr *getArgExpr(unsigned Index) const override {
  914   const Expr *getPlacementArgExpr(unsigned Index) const {
  974   const Expr *getArgExpr(unsigned Index) const override {
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h
  150   bool isGreaterOrEqual(const Expr *E, unsigned long long Val);
  153   bool isNegative(const Expr *E);
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerHelpers.h
   43 std::pair<const clang::VarDecl *, const clang::Expr *>
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
  481   const Expr *E;
  486                     const Expr *e, const CFGBlock *dispatch, CoreEngine* eng)
  516   const Expr *getTarget() const { return E; }
  528   const Expr *Condition;
  533                     const Expr *condition, CoreEngine* eng)
  570   const Expr *getCondition() const { return Condition; }
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h
  456   static bool isInterestingLValueExpr(const Expr *Ex);
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
  446   void VisitCast(const CastExpr *CastE, const Expr *Ex, ExplodedNode *Pred,
  454   void VisitCommonDeclRefExpr(const Expr *DR, const NamedDecl *D,
  462   void VisitGuardedExpr(const Expr *Ex, const Expr *L, const Expr *R,
  462   void VisitGuardedExpr(const Expr *Ex, const Expr *L, const Expr *R,
  462   void VisitGuardedExpr(const Expr *Ex, const Expr *L, const Expr *R,
  554                          const Expr *Ex);
  567   ProgramStateRef handleLValueBitCast(ProgramStateRef state, const Expr *Ex,
  643                 const Expr *NodeEx,  /* Eventually will be a CFGStmt */
  644                 const Expr *BoundExpr,
  653   void evalStore(ExplodedNodeSet &Dst, const Expr *AssignE, const Expr *StoreE,
  653   void evalStore(ExplodedNodeSet &Dst, const Expr *AssignE, const Expr *StoreE,
  686                       const Expr *NodeEx,  /* Eventually will be a CFGStmt */
  687                       const Expr *BoundEx,
  776       const Expr *InitWithAdjustments, const Expr *Result = nullptr,
  776       const Expr *InitWithAdjustments, const Expr *Result = nullptr,
  804       const Expr *E, ProgramStateRef State, const LocationContext *LCtx,
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
  479   const Expr *Ex;
  481   AllocaRegion(const Expr *ex, unsigned cnt, const MemSpaceRegion *superRegion)
  486   static void ProfileRegion(llvm::FoldingSetNodeID& ID, const Expr *Ex,
  490   const Expr *getExpr() const { return Ex; }
 1125   Expr const *Ex;
 1127   CXXTempObjectRegion(Expr const *E, MemSpaceRegion const *sReg)
 1135                             Expr const *E, const MemRegion *sReg);
 1138   const Expr *getExpr() const { return Ex; }
 1299   const AllocaRegion *getAllocaRegion(const Expr *Ex, unsigned Cnt,
 1362   const CXXTempObjectRegion *getCXXTempObjectRegion(Expr const *Ex,
 1406   const CXXTempObjectRegion *getCXXStaticTempObjectRegion(const Expr *Ex);
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
  283   invalidateRegions(ArrayRef<const MemRegion *> Regions, const Expr *E,
  290   invalidateRegions(ArrayRef<SVal> Regions, const Expr *E,
  444                         const Expr *E, unsigned BlockCount,
  766   if (const Expr *Ex = dyn_cast<Expr>(S)) {
  766   if (const Expr *Ex = dyn_cast<Expr>(S)) {
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
  187   const SymbolConjured* conjureSymbol(const Expr *expr,
  207                                         const Expr *expr,
  211                                         const Expr *expr,
  223   DefinedOrUnknownSVal getConjuredHeapSymbolVal(const Expr *E,
  232                                    const Expr *expr, QualType type,
  248   Optional<SVal> getConstantVal(const Expr *E);
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h
  236                                   const Expr *E, unsigned Count,
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
  492   const SymbolConjured* conjureSymbol(const Expr *E,
tools/clang/include/clang/Tooling/FixIt.h
   43 template <typename T> CharSourceRange getSourceRange(const T &Node) {
   50 StringRef getText(const T &Node, const ASTContext &Context) {
   56 template <typename T> FixItHint createRemoval(const T &Node) {
   62 FixItHint createReplacement(const D &Destination, const S &Source,
   62 FixItHint createReplacement(const D &Destination, const S &Source,
   70 FixItHint createReplacement(const D &Destination, StringRef Source) {
tools/clang/include/clang/Tooling/Transformer/SourceCode.h
   32 CharSourceRange getExtendedRange(const T &Node, tok::TokenKind Next,
   43 StringRef getText(const T &Node, const ASTContext &Context) {
   71 StringRef getExtendedText(const T &Node, tok::TokenKind Next,
tools/clang/include/clang/Tooling/Transformer/SourceCodeBuilders.h
   28 const Expr *reallyIgnoreImplicit(const Expr &E);
   28 const Expr *reallyIgnoreImplicit(const Expr &E);
   33 bool mayEverNeedParens(const Expr &E);
   39 inline bool needParensBeforeDotOrArrow(const Expr &E) {
   45 bool needParensAfterUnaryOperator(const Expr &E);
   53 llvm::Optional<std::string> buildParens(const Expr &E,
   58 llvm::Optional<std::string> buildDereference(const Expr &E,
   63 llvm::Optional<std::string> buildAddressOf(const Expr &E,
   72 llvm::Optional<std::string> buildDot(const Expr &E, const ASTContext &Context);
   80 llvm::Optional<std::string> buildArrow(const Expr &E,
tools/clang/lib/ARCMigrate/ObjCMT.cpp
  227   bool subscriptOperatorNeedsParens(const Expr *FullExpr) {
  228     const Expr* Expr = FullExpr->IgnoreImpCasts();
  250     if (const Expr *Receiver = Msg->getInstanceReceiver())
  268     const Expr *receiver = Msg->getInstanceReceiver();
  300       const Expr*const* Args = Msg->getArgs();
  301       const Expr *RHS = Args[0];
  807     const Expr *InitExpr = Enumerator->getInitExpr();
tools/clang/lib/ARCMigrate/TransAPIUses.cpp
   71       Expr *parm = E->getArg(0)->IgnoreParenCasts();
tools/clang/lib/ARCMigrate/TransARCAssign.cpp
   45     Expr *E = Exp->getLHS();
   51       Expr::isModifiableLvalueResult IsLV = E->isModifiableLvalue(Ctx, &Loc);
   52       if (IsLV != Expr::MLV_ConstQualified)
tools/clang/lib/ARCMigrate/TransAutoreleasePool.cpp
   55     Expr *instance = E->getInstanceReceiver()->IgnoreParenCasts();
  349   bool isPoolCreation(Expr *E) {
  360       Expr *rec = getEssential(ME->getInstanceReceiver());
  378       Expr *rec = getEssential(ME->getInstanceReceiver());
  401   static Expr *getEssential(Expr *E) {
  401   static Expr *getEssential(Expr *E) {
  402     return cast<Expr>(getEssential((Stmt*)E));
  407     if (Expr *E = dyn_cast<Expr>(S))
  407     if (Expr *E = dyn_cast<Expr>(S))
tools/clang/lib/ARCMigrate/TransEmptyStatementsAndDealloc.cpp
   98     Expr *condE = S->getCond();
  110     Expr *condE = S->getCond();
  120     Expr *condE = S->getCond();
  130     Expr *Exp = S->getCollection();
tools/clang/lib/ARCMigrate/TransGCCalls.cpp
   45     Expr *CEE = E->getCallee()->IgnoreParenImpCasts();
tools/clang/lib/ARCMigrate/TransProperties.cpp
  291       Expr *lhs = E->getLHS()->IgnoreParenImpCasts();
tools/clang/lib/ARCMigrate/TransRetainReleaseDealloc.cpp
   85         if (Expr *rec = E->getInstanceReceiver()) {
  135     Expr *rec = E->getInstanceReceiver();
  142     Expr *RecContainer = Msg;
  183     Expr *Rec = E->getInstanceReceiver();
  204     Expr *Rec = E->getInstanceReceiver();
  240   Stmt *getNextStmt(Expr *E) {
  244   std::pair<Stmt *, Stmt *> getPreviousAndNextStmt(Expr *E) {
  272       if (auto *E = dyn_cast_or_null<Expr>(prevStmt))
  272       if (auto *E = dyn_cast_or_null<Expr>(prevStmt))
  283     if (auto *E = dyn_cast_or_null<Expr>(nextStmt))
  283     if (auto *E = dyn_cast_or_null<Expr>(nextStmt))
  289   Decl *getReferencedDecl(Expr *E) {
  325   void checkForGCDOrXPC(ObjCMessageExpr *Msg, Expr *&RecContainer,
  326                         Expr *&Rec, SourceRange &RecRange) {
  373     Expr *Init = VD->getInit();
  395   bool isDelegateMessage(Expr *E) const {
  410   bool isInAtFinally(Expr *E) const {
  422   bool isRemovable(Expr *E) const {
  426   bool tryRemoving(Expr *E) const {
tools/clang/lib/ARCMigrate/TransUnbridgedCasts.cpp
   94     Expr *castExpr = E->getSubExpr();
  105                                         Expr::NPC_ValueDependentIsNull))
  133     Expr *inner = E->IgnoreParenCasts();
  159               Expr *Arg = callE->getArg(0);
  161                 const Expr *sub = ICE->getSubExpr();
  181     Expr *base = inner->IgnoreParenImpCasts();
  251       Expr *WrapE = E->getSubExpr();
  315       if (tryRemoving(cast<Expr>(StmtMap->getParentIgnoreParenCasts(E))))
  321   bool tryRemoving(Expr *E) const {
  385     Expr *subExpr = E->getSubExpr();
  406   static ObjCMethodFamily getFamilyOfMessage(Expr *E) {
  414   bool isPassedToCFRetain(Expr *E, CallExpr *&callE) const {
  427   bool isPassedToCParamWithKnownOwnership(Expr *E, bool &isConsumed) const {
  434           Expr *arg = callE->getArg(i);
  450   bool isSelf(Expr *E) const {
tools/clang/lib/ARCMigrate/TransUnusedInitDelegate.cpp
   67   bool isRemovable(Expr *E) const {
tools/clang/lib/ARCMigrate/TransZeroOutPropsInDealloc.cpp
   48     Expr *receiver = ME->getInstanceReceiver();
   71     Expr *RHS = ME->getArg(0);
   74                                  Expr::NPC_ValueDependentIsNull);
  147   bool isRemovable(Expr *E) const {
  151   bool isZeroingPropIvar(Expr *E) {
  168     Expr *LHS = BOE->getLHS();
  213   bool isZero(Expr *E) {
  214     if (E->isNullPointerConstant(Pass.Ctx, Expr::NPC_ValueDependentIsNull))
tools/clang/lib/ARCMigrate/TransformActions.cpp
  316   if (auto *E = dyn_cast<Expr>(S))
  316   if (auto *E = dyn_cast<Expr>(S))
  455   if (Expr *E = dyn_cast<Expr>(S)) {
  455   if (Expr *E = dyn_cast<Expr>(S)) {
tools/clang/lib/ARCMigrate/Transforms.cpp
   73 bool trans::isPlusOne(const Expr *E) {
  167 bool trans::hasSideEffects(Expr *E, ASTContext &Ctx) {
  196 bool trans::isGlobalVar(Expr *E) {
  291     if (auto *E = dyn_cast<Expr>(S))
  291     if (auto *E = dyn_cast<Expr>(S))
  293     if (auto *E = dyn_cast<Expr>(S))
  293     if (auto *E = dyn_cast<Expr>(S))
tools/clang/lib/ARCMigrate/Transforms.h
  163 bool isPlusOne(const Expr *E);
  179 bool hasSideEffects(Expr *E, ASTContext &Ctx);
  180 bool isGlobalVar(Expr *E);
  205 typedef llvm::DenseSet<Expr *> ExprSet;
tools/clang/lib/AST/APValue.cpp
   42 APValue::LValueBase::LValueBase(const Expr *P, unsigned I, unsigned V)
  560         Base.get<const Expr*>()->printPretty(Out, nullptr,
  591       const Expr *E = Base.get<const Expr*>();
  591       const Expr *E = Base.get<const Expr*>();
tools/clang/lib/AST/ASTContext.cpp
  743   Expr *const CanonRequiresClause = nullptr;
 2580 bool ASTContext::isSentinelNullExpr(const Expr *E) {
 2589                                                 Expr::NPC_ValueDependentIsNull))
 2669 void ASTContext::setBlockVarCopyInit(const VarDecl*VD, Expr *CopyExpr,
 3169                                           const Expr *SizeExpr,
 3211       ConstantArrayType::totalSizeToAlloc<const Expr *>(SizeExpr ? 1 : 0),
 3360                                           Expr *NumElts,
 3388                                                 Expr *numElements,
 3523 ASTContext::getDependentVectorType(QualType VecType, Expr *SizeExpr,
 3594                                            Expr *SizeExpr,
 3635                                                   Expr *AddrSpaceExpr,
 3881       FunctionType::ExceptionType, Expr *, FunctionDecl *,
 4446     Expr *E = new (*this) DeclRefExpr(
 4449         Expr::getValueKindForType(NTTP->getType()), NTTP->getLocation());
 4871 QualType ASTContext::getTypeOfExprType(Expr *tofExpr) const {
 4916 QualType ASTContext::getDecltypeType(Expr *e, QualType UnderlyingType) const {
 5790 QualType ASTContext::isPromotableBitField(Expr *E) const {
 6194     const Expr *copyExpr = getBlockVarCopyInit(D).getCopyExpr();
 9069           Expr *E = VAT->getSizeExpr();
tools/clang/lib/AST/ASTDiagnostic.cpp
  547       Expr *ArgExpr = nullptr;
  619     void SetExpressionDiff(Expr *FromExpr, Expr *ToExpr, bool FromDefault,
  619     void SetExpressionDiff(Expr *FromExpr, Expr *ToExpr, bool FromDefault,
  640                         Expr *FromExpr, Expr *ToExpr, bool FromDefault,
  640                         Expr *FromExpr, Expr *ToExpr, bool FromDefault,
  657                             bool FromNullPtr, bool ToNullPtr, Expr *FromExpr,
  658                             Expr *ToExpr, bool FromDefault, bool ToDefault) {
  674         Expr *FromExpr, const llvm::APSInt &ToInt, bool IsValidToInt,
  675         QualType ToIntType, Expr *ToExpr, bool FromDefault, bool ToDefault) {
  691         Expr *FromExpr, ValueDecl *ToValueDecl, bool ToAddressOf,
  692         bool ToNullPtr, Expr *ToExpr, bool FromDefault, bool ToDefault) {
  781     void GetExpressionDiff(Expr *&FromExpr, Expr *&ToExpr) {
  781     void GetExpressionDiff(Expr *&FromExpr, Expr *&ToExpr) {
  796                         Expr *&FromExpr, Expr *&ToExpr) {
  796                         Expr *&FromExpr, Expr *&ToExpr) {
  810                             bool &FromNullPtr, bool &ToNullPtr, Expr *&FromExpr,
  811                             Expr *&ToExpr) {
  825         Expr *&FromExpr, llvm::APSInt &ToInt, bool &IsValidToInt,
  826         QualType &ToIntType, Expr *&ToExpr) {
  841         Expr *&FromExpr, ValueDecl *&ToValueDecl, bool &ToAddressOf,
  842         bool &ToNullPtr, Expr *&ToExpr) {
 1165                                              Expr *&E, ValueDecl *&VD,
 1233     Expr *FromExpr = nullptr, *ToExpr = nullptr;
 1427   static bool IsEqualExpr(ASTContext &Context, Expr *FromExpr, Expr *ToExpr) {
 1427   static bool IsEqualExpr(ASTContext &Context, Expr *FromExpr, Expr *ToExpr) {
 1465         Expr *FromExpr, *ToExpr;
 1480         Expr *FromExpr, *ToExpr;
 1494         Expr *FromExpr, *ToExpr;
 1507         Expr *FromExpr;
 1511         Expr *ToExpr;
 1525         Expr *FromExpr;
 1529         Expr *ToExpr;
 1666   void PrintExpr(const Expr *FromExpr, const Expr *ToExpr, bool FromDefault,
 1666   void PrintExpr(const Expr *FromExpr, const Expr *ToExpr, bool FromDefault,
 1691   void PrintExpr(const Expr *E) {
 1736                    QualType ToIntType, Expr *FromExpr, Expr *ToExpr,
 1736                    QualType ToIntType, Expr *FromExpr, Expr *ToExpr,
 1767   void PrintAPSInt(const llvm::APSInt &Val, Expr *E, bool Valid,
 1801   bool HasExtraInfo(Expr *E) {
 1819   void PrintValueDecl(ValueDecl *VD, bool AddressOf, Expr *E, bool NullPtr) {
 1850                       bool ToNullPtr, Expr *FromExpr, Expr *ToExpr,
 1850                       bool ToNullPtr, Expr *FromExpr, Expr *ToExpr,
 1878                                 bool IsNullPtr, Expr *VDExpr, bool DefaultDecl,
 1880                                 Expr *IntExpr, bool DefaultInt) {
 1900                                 Expr *IntExpr, bool DefaultInt, ValueDecl *VD,
 1902                                 Expr *VDExpr, bool DefaultDecl) {
tools/clang/lib/AST/ASTImporter.cpp
   80   using ExpectedExpr = llvm::Expected<Expr *>;
  162     Expected<T *> import(T *From) {
  162     Expected<T *> import(T *From) {
  166       return cast_or_null<T>(*ToOrErr);
  170     Expected<T *> import(const T *From) {
  170     Expected<T *> import(const T *From) {
  544     ExpectedStmt VisitExpr(Expr *E);
 1102   const Expr *ToSizeExpr;
 1127   Expr *ToSizeExpr;
 1143   Expr *ToSizeExpr;
 1898   Expr *FromInit = From->getInit();
 2158   Expr *ToAssertExpr;
 3158     Expr *ExplicitExpr = nullptr;
 3183     Expr *ToThisArg;
 3197     Expr *ExplicitExpr = nullptr;
 3388         if (Expr *FromInitializer = D->getInClassInitializer()) {
 3418   Expr *ToBitWidth;
 3420   Expr *ToInitializer;
 3620   Expr *ToBitWidth;
 5688   SmallVector<Expr *, 4> Exprs(S->getNumOutputs() + S->getNumInputs() +
 5774   Expr *ToLHS, *ToRHS;
 5840   Expr *ToCond;
 5859   Expr *ToCond;
 5892   Expr *ToCond;
 5909   Expr *ToCond;
 5925   Expr *ToCond, *ToInc;
 5958   Expr *ToTarget;
 5986   Expr *ToRetValue;
 6043   Expr *ToCond, *ToInc;
 6065   Expr *ToCollection;
 6136   Expr *ToSynchExpr;
 6170 ExpectedStmt ASTNodeImporter::VisitExpr(Expr *E) {
 6184   Expr *ToSubExpr;
 6201   Expr *ToCond;
 6202   Expr *ToLHS;
 6203   Expr *ToRHS;
 6307   SmallVector<Expr *, 4> ToIndexExprs(E->getNumSubExprs() - 1);
 6419   Expr *ToInitializer;
 6437   SmallVector<Expr *, 6> ToExprs(E->getNumSubExprs());
 6467   Expr *ToSubExpr;
 6486   Expr *ToSubExpr;
 6494   SmallVector<Expr *, 4> ToExprs(E->getNumExprs());
 6531   Expr *ToSubExpr;
 6576   Expr *ToLHS, *ToRHS;
 6593   Expr *ToCond, *ToLHS, *ToRHS;
 6611   Expr *ToCommon, *ToCond, *ToTrueExpr, *ToFalseExpr;
 6634   Expr *ToDimensionExpression;
 6652   Expr *ToQueriedExpression;
 6669   Expr *ToSourceExpr;
 6682   Expr *ToLHS, *ToRHS;
 6700   Expr *ToLHS, *ToRHS;
 6749   Expr *ToSubExpr;
 6845   SmallVector<Expr *, 4> ToExprs(E->getNumExpressions());
 6876   Expr *ToOperand;
 6895   Expr *ToSubExpr;
 6981   SmallVector<Expr *, 8> ToArgs(E->getNumArgs());
 7000   Expr *ToTemporaryExpr;
 7019   Expr *ToPattern;
 7067   Optional<Expr *> ToArraySize;
 7068   Expr *ToInitializer;
 7075   SmallVector<Expr *, 4> ToPlacementArgs(E->getNumPlacementArgs());
 7096   Expr *ToArgument;
 7119   SmallVector<Expr *, 6> ToArgs(E->getNumArgs());
 7151   Expr *ToCallee;
 7156   SmallVector<Expr *, 4> ToArgs(E->getNumArgs());
 7197   Expr *ToBase;
 7245   Expr *ToBase;
 7288   Expr *ToBase = nullptr;
 7365   SmallVector<Expr *, 8> ToArgs(E->arg_size());
 7461   Expr *ToBase = nullptr;
 7480   Expr *ToCallee;
 7486   llvm::SmallVector<Expr *, 2> ToArgs(NumArgs);
 7522   SmallVector<Expr *, 8> ToCaptureInits(E->capture_size());
 7552   SmallVector<Expr *, 4> ToExprs(E->getNumInits());
 7625   Expr *ToCommonExpr, *ToSubExpr;
 7664   Expr *ToSubExpr;
 7710   Expr *ToReplacement;
 8118 Expected<Expr *> ASTImporter::Import(Expr *FromE) {
 8118 Expected<Expr *> ASTImporter::Import(Expr *FromE) {
 8120     return cast_or_null<Expr>(*ToSOrErr);
 8140   if (auto *ToE = dyn_cast<Expr>(*ToSOrErr)) {
 8140   if (auto *ToE = dyn_cast<Expr>(*ToSOrErr)) {
 8141     auto *FromE = cast<Expr>(FromS);
 8141     auto *FromE = cast<Expr>(FromS);
tools/clang/lib/AST/ASTStructuralEquivalence.cpp
  160                                      const Expr *E1, const Expr *E2) {
  160                                      const Expr *E1, const Expr *E2) {
tools/clang/lib/AST/Decl.cpp
 2006   if (const Expr *Init = getInit()) {
 2201 const Expr *VarDecl::getAnyInitializer(const VarDecl *&D) const {
 2219 Expr *VarDecl::getInit() {
 2224     return cast<Expr>(S);
 2226   return cast_or_null<Expr>(Init.get<EvaluatedStmt *>()->Value);
 2268 void VarDecl::setInit(Expr *I) {
 2313   const Expr *Init = getAnyInitializer(DefVD);
 2356   const auto *Init = cast<Expr>(Eval->Value);
 2356   const auto *Init = cast<Expr>(Eval->Value);
 2424   const auto *Init = cast<Expr>(Eval->Value);
 2424   const auto *Init = cast<Expr>(Eval->Value);
 2661                                  StorageClass S, Expr *DefArg) {
 2695 Expr *ParmVarDecl::getDefaultArg() {
 2700   Expr *Arg = getInit();
 2707 void ParmVarDecl::setDefaultArg(Expr *defarg) {
 2723     if (const Expr *E = getInit())
 2732 void ParmVarDecl::setUninstantiatedDefaultArg(Expr *arg) {
 2737 Expr *ParmVarDecl::getUninstantiatedDefaultArg() {
 2740   return cast_or_null<Expr>(Init.get<Stmt *>());
 3930                              TypeSourceInfo *TInfo, Expr *BW, bool Mutable,
 4016   const Expr *FinalExpr = getInClassInitializer();
 4676                                            Expr *E, const llvm::APSInt &V) {
tools/clang/lib/AST/DeclCXX.cpp
 2057 CXXMethodDecl *CXXMethodDecl::getDevirtualizedMethod(const Expr *Base,
 2356                                        SourceLocation L, Expr *Init,
 2366                                        SourceLocation L, Expr *Init,
 2375                                        SourceLocation L, Expr *Init,
 2383                                        SourceLocation L, Expr *Init,
 2423     if (Expr *I = D->getInClassInitializer())
 2491   Expr *E = (*init_begin())->getInit()->IgnoreImplicit();
 2618 void CXXDestructorDecl::setOperatorDelete(FunctionDecl *OD, Expr *ThisArg) {
 2973                                            Expr *AssertExpr,
 3005   Expr *B = getBinding();
tools/clang/lib/AST/DeclObjC.cpp
 1751                                    AccessControl ac, Expr *BW,
 1827                              IdentifierInfo *Id, QualType T, Expr *BW) {
tools/clang/lib/AST/DeclOpenMP.cpp
   31                                                    ArrayRef<Expr *> VL) {
   33       new (C, DC, additionalSizeToAlloc<Expr *>(VL.size()))
   43   OMPThreadPrivateDecl *D = new (C, ID, additionalSizeToAlloc<Expr *>(N))
   49 void OMPThreadPrivateDecl::setVars(ArrayRef<Expr *> VL) {
   52   std::uninitialized_copy(VL.begin(), VL.end(), getTrailingObjects<Expr *>());
   62                                          SourceLocation L, ArrayRef<Expr *> VL,
   65       C, DC, additionalSizeToAlloc<Expr *, OMPClause *>(VL.size(), CL.size()))
   78       new (C, ID, additionalSizeToAlloc<Expr *, OMPClause *>(NVars, NClauses))
   85 void OMPAllocateDecl::setVars(ArrayRef<Expr *> VL) {
   88   std::uninitialized_copy(VL.begin(), VL.end(), getTrailingObjects<Expr *>());
tools/clang/lib/AST/DeclPrinter.cpp
  324       Expr *Init = BMInitializer->getInit();
  330       Expr *SimpleInit = nullptr;
  331       Expr **Args = nullptr;
  563   if (Expr *Init = D->getInitExpr()) {
  816   Expr *Init = D->getInClassInitializer();
  867   Expr *Init = D->getInit();
 1668     if (auto *Init = D->getInitializer()) {
tools/clang/lib/AST/DeclTemplate.cpp
   50                                              Expr *RequiresClause)
   72     *getTrailingObjects<Expr *>() = RequiresClause;
   82                               SourceLocation RAngleLoc, Expr *RequiresClause) {
   83   void *Mem = C.Allocate(totalSizeToAlloc<NamedDecl *, Expr *>(
  142 getAssociatedConstraints(llvm::SmallVectorImpl<const Expr *> &AC) const {
  173 getAssociatedConstraints(llvm::SmallVectorImpl<const Expr *> &AC) const {
  855                                  Expr *ConstraintExpr) {
tools/clang/lib/AST/Expr.cpp
   37 const Expr *Expr::getBestDynamicClassTypeExpr() const {
   38   const Expr *E = this;
   63   const Expr *E = getBestDynamicClassTypeExpr();
   76 const Expr *Expr::skipRValueSubobjectAdjustments(
   77     SmallVectorImpl<const Expr *> &CommaLHSs,
   79   const Expr *E = this;
  135   const Expr *E = IgnoreParens();
  205   SourceLocation getExprLocImpl(const Expr *expr,
  215   SourceLocation getExprLocImpl(const Expr *expr,
  274 ConstantExpr::ConstantExpr(Expr *subexpr, ResultStorageKind StorageKind)
  279 ConstantExpr *ConstantExpr::Create(const ASTContext &Context, Expr *E,
  291 ConstantExpr *ConstantExpr::Create(const ASTContext &Context, Expr *E,
  430       if (const Expr *Init = Var->getAnyInitializer())
 1335 CallExpr::CallExpr(StmtClass SC, Expr *Fn, ArrayRef<Expr *> PreArgs,
 1335 CallExpr::CallExpr(StmtClass SC, Expr *Fn, ArrayRef<Expr *> PreArgs,
 1336                    ArrayRef<Expr *> Args, QualType Ty, ExprValueKind VK,
 1381 CallExpr *CallExpr::Create(const ASTContext &Ctx, Expr *Fn,
 1382                            ArrayRef<Expr *> Args, QualType Ty, ExprValueKind VK,
 1394 CallExpr *CallExpr::CreateTemporary(void *Mem, Expr *Fn, QualType Ty,
 1429 void CallExpr::updateDependenciesFromArg(Expr *Arg) {
 1441   Expr *CEE = IgnoreParenImpCasts();
 1497   const Expr *Callee = getCallee();
 1508     CalleeType = Expr::findBoundMemberType(Callee);
 1551                                    ArrayRef<Expr*> exprs,
 1554       totalSizeToAlloc<OffsetOfNode, Expr *>(comps.size(), exprs.size()));
 1563       C.Allocate(totalSizeToAlloc<OffsetOfNode, Expr *>(numComps, numExprs));
 1569                            ArrayRef<OffsetOfNode> comps, ArrayRef<Expr*> exprs,
 1602     UnaryExprOrTypeTrait ExprKind, Expr *E, QualType resultType,
 1639 MemberExpr::MemberExpr(Expr *Base, bool IsArrow, SourceLocation OperatorLoc,
 1660     const ASTContext &C, Expr *Base, bool IsArrow, SourceLocation OperatorLoc,
 1891   const Expr *skipImplicitTemporary(const Expr *E) {
 1891   const Expr *skipImplicitTemporary(const Expr *E) {
 1904 Expr *CastExpr::getSubExprAsWritten() {
 1905   const Expr *SubExpr = nullptr;
 1931   const Expr *SubExpr = nullptr;
 1982                                            CastKind Kind, Expr *Operand,
 2008                                        ExprValueKind VK, CastKind K, Expr *Op,
 2104                                                       Expr *LHS, Expr *RHS) {
 2104                                                       Expr *LHS, Expr *RHS) {
 2109   Expr *PExp;
 2124           ->isNullPointerConstant(Ctx, Expr::NPC_ValueDependentIsNotNull))
 2174                                          const Expr *DefaultExpr) const {
 2220                            ArrayRef<Expr*> initExprs, SourceLocation rbraceloc)
 2250 Expr *InitListExpr::updateInit(const ASTContext &C, unsigned Init, Expr *expr) {
 2250 Expr *InitListExpr::updateInit(const ASTContext &C, unsigned Init, Expr *expr) {
 2257   Expr *Result = cast_or_null<Expr>(InitExprs[Init]);
 2257   Expr *Result = cast_or_null<Expr>(InitExprs[Init]);
 2262 void InitListExpr::setArrayFiller(Expr *filler) {
 2266   Expr **inits = getInits();
 2279   const Expr *Init = getInit(0);
 2383 bool Expr::isUnusedResultAWarning(const Expr *&WarnE, SourceLocation &Loc,
 2650       if (const Expr *E = dyn_cast<Expr>(CS->body_back()))
 2650       if (const Expr *E = dyn_cast<Expr>(CS->body_back()))
 2653         if (const Expr *E = dyn_cast<Expr>(Label->getSubStmt()))
 2653         if (const Expr *E = dyn_cast<Expr>(Label->getSubStmt()))
 2738   const Expr *E = IgnoreParens();
 2744   case Expr::UnaryOperatorClass:
 2779   return ClassifyLValue(Ctx) == Expr::LV_MemberFunction;
 2782 QualType Expr::findBoundMemberType(const Expr *expr) {
 2806 static Expr *IgnoreImpCastsSingleStep(Expr *E) {
 2806 static Expr *IgnoreImpCastsSingleStep(Expr *E) {
 2816 static Expr *IgnoreImpCastsExtraSingleStep(Expr *E) {
 2816 static Expr *IgnoreImpCastsExtraSingleStep(Expr *E) {
 2820   Expr *SubE = IgnoreImpCastsSingleStep(E);
 2833 static Expr *IgnoreCastsSingleStep(Expr *E) {
 2833 static Expr *IgnoreCastsSingleStep(Expr *E) {
 2849 static Expr *IgnoreLValueCastsSingleStep(Expr *E) {
 2849 static Expr *IgnoreLValueCastsSingleStep(Expr *E) {
 2859 static Expr *IgnoreBaseCastsSingleStep(Expr *E) {
 2859 static Expr *IgnoreBaseCastsSingleStep(Expr *E) {
 2869 static Expr *IgnoreImplicitSingleStep(Expr *E) {
 2869 static Expr *IgnoreImplicitSingleStep(Expr *E) {
 2870   Expr *SubE = IgnoreImpCastsSingleStep(E);
 2883 static Expr *IgnoreParensSingleStep(Expr *E) {
 2883 static Expr *IgnoreParensSingleStep(Expr *E) {
 2908 static Expr *IgnoreNoopCastsSingleStep(const ASTContext &Ctx, Expr *E) {
 2908 static Expr *IgnoreNoopCastsSingleStep(const ASTContext &Ctx, Expr *E) {
 2912     Expr *SubExpr = CE->getSubExpr();
 2931 static Expr *IgnoreExprNodesImpl(Expr *E) { return E; }
 2931 static Expr *IgnoreExprNodesImpl(Expr *E) { return E; }
 2933 static Expr *IgnoreExprNodesImpl(Expr *E, FnTy &&Fn, FnTys &&... Fns) {
 2933 static Expr *IgnoreExprNodesImpl(Expr *E, FnTy &&Fn, FnTys &&... Fns) {
 2941 static Expr *IgnoreExprNodes(Expr *E, FnTys &&... Fns) {
 2941 static Expr *IgnoreExprNodes(Expr *E, FnTys &&... Fns) {
 2942   Expr *LastE = nullptr;
 2950 Expr *Expr::IgnoreImpCasts() {
 2954 Expr *Expr::IgnoreCasts() {
 2958 Expr *Expr::IgnoreImplicit() {
 2962 Expr *Expr::IgnoreParens() {
 2966 Expr *Expr::IgnoreParenImpCasts() {
 2971 Expr *Expr::IgnoreParenCasts() {
 2975 Expr *Expr::IgnoreConversionOperator() {
 2983 Expr *Expr::IgnoreParenLValueCasts() {
 2988 Expr *Expr::ignoreParenBaseCasts() {
 2993 Expr *Expr::IgnoreParenNoopCasts(const ASTContext &Ctx) {
 3000   const Expr *E = this;
 3012 static const Expr *skipTemporaryBindingsNoOpCastsAndParens(const Expr *E) {
 3012 static const Expr *skipTemporaryBindingsNoOpCastsAndParens(const Expr *E) {
 3042   const Expr *E = skipTemporaryBindingsNoOpCastsAndParens(this);
 3081   const Expr *E = this;
 3124 bool Expr::hasAnyTypeDependentArguments(ArrayRef<Expr *> Exprs) {
 3133                                  const Expr **Culprit) const {
 3179     const Expr *Exp = cast<ConstantExpr>(this)->getSubExpr();
 3186     const Expr *Exp = cast<CompoundLiteralExpr>(this)->getInitializer();
 3219           const Expr *Elt = ILE->getInit(ElementNo++);
 3315   const Expr* Arg = getArg(0);
 3335     void VisitExpr(const Expr *E) {
 3498     if (const Expr *E = cast<InitListExpr>(this)->getArrayFiller())
 3517     if (const Expr *E = FD->getInClassInitializer())
 3576     for (Expr *E : LE->capture_inits())
 3589       const Expr *Subexpr = *I;
 3618         cast<Expr>(SubStmt)->HasSideEffects(Ctx, IncludePossibleEffects))
 3683 Expr::NullPointerConstantKind
 3756     if (const Expr *Source = OVE->getSourceExpr())
 3768         const Expr *InitExpr = CLE->getInitializer();
 3804   const Expr *E = this;
 3824   const Expr *E = IgnoreParenImpCasts();
 3842   Expr *E = this->IgnoreParens();
 3869       if (Expr *E = BD->getBinding())
 3890   const Expr *E = this->IgnoreParens();
 3908       if (auto *E = BD->getBinding())
 3915   const Expr *E = this->IgnoreParenImpCasts();
 3926 bool Expr::isSameComparisonOperand(const Expr* E1, const Expr* E2) {
 3926 bool Expr::isSameComparisonOperand(const Expr* E1, const Expr* E2) {
 4098 ShuffleVectorExpr::ShuffleVectorExpr(const ASTContext &C, ArrayRef<Expr*> args,
 4122 void ShuffleVectorExpr::setExprs(const ASTContext &C, ArrayRef<Expr *> Exprs) {
 4127   memcpy(SubExprs, Exprs.data(), sizeof(Expr *) * Exprs.size());
 4131     const ASTContext &, SourceLocation GenericLoc, Expr *ControllingExpr,
 4132     ArrayRef<TypeSourceInfo *> AssocTypes, ArrayRef<Expr *> AssocExprs,
 4158     const ASTContext &Context, SourceLocation GenericLoc, Expr *ControllingExpr,
 4159     ArrayRef<TypeSourceInfo *> AssocTypes, ArrayRef<Expr *> AssocExprs,
 4185     const ASTContext &Context, SourceLocation GenericLoc, Expr *ControllingExpr,
 4186     ArrayRef<TypeSourceInfo *> AssocTypes, ArrayRef<Expr *> AssocExprs,
 4199     const ASTContext &Context, SourceLocation GenericLoc, Expr *ControllingExpr,
 4200     ArrayRef<TypeSourceInfo *> AssocTypes, ArrayRef<Expr *> AssocExprs,
 4237                                        ArrayRef<Expr*> IndexExprs,
 4238                                        Expr *Init)
 4260       Expr *Index = IndexExprs[IndexIdx];
 4273       Expr *Start = IndexExprs[IndexIdx];
 4274       Expr *End = IndexExprs[IndexIdx + 1];
 4301                            ArrayRef<Expr*> IndexExprs,
 4303                            bool UsesColonSyntax, Expr *Init) {
 4354 Expr *DesignatedInitExpr::getArrayIndex(const Designator& D) const {
 4359 Expr *DesignatedInitExpr::getArrayRangeStart(const Designator &D) const {
 4365 Expr *DesignatedInitExpr::getArrayRangeEnd(const Designator &D) const {
 4399     SourceLocation lBraceLoc, Expr *baseExpr, SourceLocation rBraceLoc)
 4417 ParenListExpr::ParenListExpr(SourceLocation LParenLoc, ArrayRef<Expr *> Exprs,
 4445                                      ArrayRef<Expr *> Exprs,
 4459 const OpaqueValueExpr *OpaqueValueExpr::findInCopyConstruct(const Expr *e) {
 4474       Context.Allocate(totalSizeToAlloc<Expr *>(1 + numSemanticExprs),
 4484 PseudoObjectExpr *PseudoObjectExpr::Create(const ASTContext &C, Expr *syntax,
 4485                                            ArrayRef<Expr*> semantics,
 4502   void *buffer = C.Allocate(totalSizeToAlloc<Expr *>(semantics.size() + 1),
 4509                                    Expr *syntax, ArrayRef<Expr*> semantics,
 4509                                    Expr *syntax, ArrayRef<Expr*> semantics,
 4517     Expr *E = (i == 0 ? syntax : semantics[i-1]);
 4560 AtomicExpr::AtomicExpr(SourceLocation BLoc, ArrayRef<Expr*> args,
 4649 QualType OMPArraySectionExpr::getBaseOriginalType(const Expr *Base) {
tools/clang/lib/AST/ExprCXX.cpp
   64   const Expr *E = getSemanticForm()->IgnoreImplicit();
  138   const Expr *E = getExprOperand();
  169                        ArrayRef<Expr *> PlacementArgs, SourceRange TypeIdParens,
  170                        Optional<Expr *> ArraySize,
  172                        Expr *Initializer, QualType Ty,
  196     if (Expr *SizeExpr = *ArraySize) {
  260                    ArrayRef<Expr *> PlacementArgs, SourceRange TypeIdParens,
  261                    Optional<Expr *> ArraySize,
  262                    InitializationStyle InitializationStyle, Expr *Initializer,
  301   const Expr *Arg = getArgument();
  334                 Expr *Base, bool isArrow, SourceLocation OperatorLoc,
  601     const Expr *Arg = getArg(I-1);
  615                                          Expr *Fn, ArrayRef<Expr *> Args,
  615                                          Expr *Fn, ArrayRef<Expr *> Args,
  636     const ASTContext &Ctx, OverloadedOperatorKind OpKind, Expr *Fn,
  637     ArrayRef<Expr *> Args, QualType Ty, ExprValueKind VK,
  684 CXXMemberCallExpr::CXXMemberCallExpr(Expr *Fn, ArrayRef<Expr *> Args,
  684 CXXMemberCallExpr::CXXMemberCallExpr(Expr *Fn, ArrayRef<Expr *> Args,
  693 CXXMemberCallExpr *CXXMemberCallExpr::Create(const ASTContext &Ctx, Expr *Fn,
  694                                              ArrayRef<Expr *> Args, QualType Ty,
  718 Expr *CXXMemberCallExpr::getImplicitObjectArgument() const {
  719   const Expr *Callee = getCallee()->IgnoreParens();
  746   Expr* ThisArg = getImplicitObjectArgument();
  775                                              CastKind K, Expr *Op,
  800                                                CastKind K, Expr *Op,
  858                                ExprValueKind VK, CastKind K, Expr *Op,
  881                                            ExprValueKind VK, Expr *Op,
  895                               TypeSourceInfo *Written, CastKind K, Expr *Op,
  922 UserDefinedLiteral::UserDefinedLiteral(Expr *Fn, ArrayRef<Expr *> Args,
  922 UserDefinedLiteral::UserDefinedLiteral(Expr *Fn, ArrayRef<Expr *> Args,
  933 UserDefinedLiteral *UserDefinedLiteral::Create(const ASTContext &Ctx, Expr *Fn,
  934                                                ArrayRef<Expr *> Args,
  980 Expr *UserDefinedLiteral::getCookedLiteral() {
 1012                                                    Expr* SubExpr) {
 1022     ArrayRef<Expr *> Args, SourceRange ParenOrBraceRange,
 1038     TypeSourceInfo *TSI, ArrayRef<Expr *> Args, SourceRange ParenOrBraceRange,
 1072     CXXConstructorDecl *Ctor, bool Elidable, ArrayRef<Expr *> Args,
 1096     bool Elidable, ArrayRef<Expr *> Args, bool HadMultipleCandidates,
 1175                        bool ExplicitResultType, ArrayRef<Expr *> CaptureInits,
 1218     bool ExplicitParams, bool ExplicitResultType, ArrayRef<Expr *> CaptureInits,
 1321 ExprWithCleanups::ExprWithCleanups(Expr *subexpr,
 1331 ExprWithCleanups *ExprWithCleanups::Create(const ASTContext &C, Expr *subexpr,
 1355                                                        ArrayRef<Expr *> Args,
 1369   auto **StoredArgs = getTrailingObjects<Expr *>();
 1369   auto **StoredArgs = getTrailingObjects<Expr *>();
 1380     ArrayRef<Expr *> Args, SourceLocation RParenLoc) {
 1381   void *Mem = Context.Allocate(totalSizeToAlloc<Expr *>(Args.size()));
 1388   void *Mem = Context.Allocate(totalSizeToAlloc<Expr *>(NumArgs));
 1397     const ASTContext &Ctx, Expr *Base, QualType BaseType, bool IsArrow,
 1446     const ASTContext &Ctx, Expr *Base, QualType BaseType, bool IsArrow,
 1498     const ASTContext &Context, bool HasUnresolvedUsing, Expr *Base,
 1534   return cast<Expr>(Base)->isImplicitCXXThis();
 1538     const ASTContext &Context, bool HasUnresolvedUsing, Expr *Base,
 1719 CUDAKernelCallExpr::CUDAKernelCallExpr(Expr *Fn, CallExpr *Config,
 1720                                        ArrayRef<Expr *> Args, QualType Ty,
 1731 CUDAKernelCallExpr::Create(const ASTContext &Ctx, Expr *Fn, CallExpr *Config,
 1732                            ArrayRef<Expr *> Args, QualType Ty, ExprValueKind VK,
tools/clang/lib/AST/ExprClassification.cpp
   24 using Cl = Expr::Classification;
   26 static Cl::Kinds ClassifyInternal(ASTContext &Ctx, const Expr *E);
   32                                      const Expr *trueExpr,
   33                                      const Expr *falseExpr);
   34 static Cl::ModifiableType IsModifiable(ASTContext &Ctx, const Expr *E,
   89                                        const Expr *E,
  102 static Cl::Kinds ClassifyInternal(ASTContext &Ctx, const Expr *E) {
  115   case Expr::ObjCIsaExprClass:
  117   case Expr::StringLiteralClass:
  119   case Expr::ObjCEncodeExprClass:
  121   case Expr::PredefinedExprClass:
  123   case Expr::ObjCSubscriptRefExprClass:
  124   case Expr::ObjCPropertyRefExprClass:
  126   case Expr::CXXTypeidExprClass:
  129   case Expr::UnresolvedLookupExprClass:
  130   case Expr::UnresolvedMemberExprClass:
  131   case Expr::TypoExprClass:
  132   case Expr::DependentCoawaitExprClass:
  133   case Expr::CXXDependentScopeMemberExprClass:
  134   case Expr::DependentScopeDeclRefExprClass:
  137   case Expr::ObjCIvarRefExprClass:
  138   case Expr::FunctionParmPackExprClass:
  139   case Expr::MSPropertyRefExprClass:
  140   case Expr::MSPropertySubscriptExprClass:
  141   case Expr::OMPArraySectionExprClass:
  146   case Expr::CompoundLiteralExprClass:
  150   case Expr::CXXBoolLiteralExprClass:
  151   case Expr::CXXPseudoDestructorExprClass:
  152   case Expr::UnaryExprOrTypeTraitExprClass:
  153   case Expr::CXXNewExprClass:
  154   case Expr::CXXThisExprClass:
  155   case Expr::CXXNullPtrLiteralExprClass:
  156   case Expr::ImaginaryLiteralClass:
  157   case Expr::GNUNullExprClass:
  158   case Expr::OffsetOfExprClass:
  159   case Expr::CXXThrowExprClass:
  160   case Expr::ShuffleVectorExprClass:
  161   case Expr::ConvertVectorExprClass:
  162   case Expr::IntegerLiteralClass:
  163   case Expr::FixedPointLiteralClass:
  164   case Expr::CharacterLiteralClass:
  165   case Expr::AddrLabelExprClass:
  166   case Expr::CXXDeleteExprClass:
  167   case Expr::ImplicitValueInitExprClass:
  168   case Expr::BlockExprClass:
  169   case Expr::FloatingLiteralClass:
  170   case Expr::CXXNoexceptExprClass:
  171   case Expr::CXXScalarValueInitExprClass:
  172   case Expr::TypeTraitExprClass:
  173   case Expr::ArrayTypeTraitExprClass:
  174   case Expr::ExpressionTraitExprClass:
  175   case Expr::ObjCSelectorExprClass:
  176   case Expr::ObjCProtocolExprClass:
  177   case Expr::ObjCStringLiteralClass:
  178   case Expr::ObjCBoxedExprClass:
  179   case Expr::ObjCArrayLiteralClass:
  180   case Expr::ObjCDictionaryLiteralClass:
  181   case Expr::ObjCBoolLiteralExprClass:
  182   case Expr::ObjCAvailabilityCheckExprClass:
  183   case Expr::ParenListExprClass:
  184   case Expr::SizeOfPackExprClass:
  185   case Expr::SubstNonTypeTemplateParmPackExprClass:
  186   case Expr::AsTypeExprClass:
  187   case Expr::ObjCIndirectCopyRestoreExprClass:
  188   case Expr::AtomicExprClass:
  189   case Expr::CXXFoldExprClass:
  190   case Expr::ArrayInitLoopExprClass:
  191   case Expr::ArrayInitIndexExprClass:
  192   case Expr::NoInitExprClass:
  193   case Expr::DesignatedInitUpdateExprClass:
  194   case Expr::SourceLocExprClass:
  195   case Expr::ConceptSpecializationExprClass:
  198   case Expr::ConstantExprClass:
  202   case Expr::SubstNonTypeTemplateParmExprClass:
  210   case Expr::ArraySubscriptExprClass:
  224   case Expr::DeclRefExprClass:
  231   case Expr::MemberExprClass:
  234   case Expr::UnaryOperatorClass:
  250       const Expr *Op = cast<UnaryOperator>(E)->getSubExpr()->IgnoreParens();
  270   case Expr::OpaqueValueExprClass:
  274   case Expr::PseudoObjectExprClass:
  280   case Expr::ImplicitCastExprClass:
  285   case Expr::ParenExprClass:
  291   case Expr::GenericSelectionExprClass:
  296   case Expr::BinaryOperatorClass:
  297   case Expr::CompoundAssignOperatorClass:
  303   case Expr::CallExprClass:
  304   case Expr::CXXOperatorCallExprClass:
  305   case Expr::CXXMemberCallExprClass:
  306   case Expr::UserDefinedLiteralClass:
  307   case Expr::CUDAKernelCallExprClass:
  310   case Expr::CXXRewrittenBinaryOperatorClass:
  315   case Expr::ChooseExprClass:
  320   case Expr::ExtVectorElementExprClass:
  328   case Expr::CXXDefaultArgExprClass:
  332   case Expr::CXXDefaultInitExprClass:
  336   case Expr::CXXBindTemporaryExprClass:
  340   case Expr::ExprWithCleanupsClass:
  344   case Expr::CStyleCastExprClass:
  345   case Expr::CXXFunctionalCastExprClass:
  346   case Expr::CXXStaticCastExprClass:
  347   case Expr::CXXDynamicCastExprClass:
  348   case Expr::CXXReinterpretCastExprClass:
  349   case Expr::CXXConstCastExprClass:
  350   case Expr::ObjCBridgedCastExprClass:
  351   case Expr::BuiltinBitCastExprClass:
  356   case Expr::CXXUnresolvedConstructExprClass:
  360   case Expr::BinaryConditionalOperatorClass: {
  366   case Expr::ConditionalOperatorClass: {
  375   case Expr::ObjCMessageExprClass:
  384   case Expr::CXXConstructExprClass:
  385   case Expr::CXXInheritedCtorInitExprClass:
  386   case Expr::CXXTemporaryObjectExprClass:
  387   case Expr::LambdaExprClass:
  388   case Expr::CXXStdInitializerListExprClass:
  391   case Expr::VAArgExprClass:
  394   case Expr::DesignatedInitExprClass:
  397   case Expr::StmtExprClass: {
  399     if (const auto *LastExpr = dyn_cast_or_null<Expr>(S->body_back()))
  399     if (const auto *LastExpr = dyn_cast_or_null<Expr>(S->body_back()))
  404   case Expr::CXXUuidofExprClass:
  407   case Expr::PackExpansionExprClass:
  410   case Expr::MaterializeTemporaryExprClass:
  415   case Expr::InitListExprClass:
  426   case Expr::CoawaitExprClass:
  427   case Expr::CoyieldExprClass:
  494     Expr *Base = E->getBase()->IgnoreParens();
  520     Expr *Base = E->getBase()->IgnoreParenImpCasts();
  573 static Cl::Kinds ClassifyConditional(ASTContext &Ctx, const Expr *True,
  574                                      const Expr *False) {
  587     if (const Expr *NonThrow = TrueIsThrow ? (FalseIsThrow ? nullptr : False)
  605 static Cl::ModifiableType IsModifiable(ASTContext &Ctx, const Expr *E,
  658 Expr::LValueClassification Expr::ClassifyLValue(ASTContext &Ctx) const {
  677 Expr::isModifiableLvalueResult
tools/clang/lib/AST/ExprConstant.cpp
  102     const Expr *Base = B.get<const Expr*>();
  102     const Expr *Base = B.get<const Expr*>();
  108       SmallVector<const Expr *, 2> CommaLHSs;
  110       const Expr *Temp = MTE->GetTemporaryExpr();
  111       const Expr *Inner = Temp->skipRValueSubobjectAdjustments(CommaLHSs,
  140   static QualType getStorageType(const ASTContext &Ctx, const Expr *E) {
  156   static const CallExpr *tryUnwrapAllocSizeCall(const Expr *E) {
  178     const auto *E = Base.dyn_cast<const Expr *>();
  178     const auto *E = Base.dyn_cast<const Expr *>();
  383     bool checkSubobject(EvalInfo &Info, const Expr *E, CheckSubobjectKind CSK);
  440     void diagnoseUnsizedArrayPointerArithmetic(EvalInfo &Info, const Expr *E);
  441     void diagnosePointerArithmetic(EvalInfo &Info, const Expr *E,
  444     void adjustIndex(EvalInfo &Info, const Expr *E, APSInt N) {
  623 static bool HandleDestruction(EvalInfo &Info, const Expr *E,
  647         else if (const Expr *E = Base.dyn_cast<const Expr*>())
  647         else if (const Expr *E = Base.dyn_cast<const Expr*>())
  707     const Expr *AllocExpr = nullptr;
  750     Expr::EvalStatus &EvalStatus;
  921     EvalInfo(const ASTContext &C, Expr::EvalStatus &S, EvaluationMode Mode)
  987     APValue *createHeapAlloc(const Expr *E, QualType T, LValue &LV);
 1060     Expr::EvalStatus &getEvalStatus() const override { return EvalStatus; }
 1236     Expr::EvalStatus OldStatus;
 1337 bool SubobjectDesignator::checkSubobject(EvalInfo &Info, const Expr *E,
 1354                                                                 const Expr *E) {
 1361                                                     const Expr *E,
 1501         const auto *E = B.get<const Expr *>();
 1501         const auto *E = B.get<const Expr *>();
 1549     bool checkNullPointer(EvalInfo &Info, const Expr *E,
 1556     bool checkNullPointerForFoldAccess(EvalInfo &Info, const Expr *E,
 1565     bool checkSubobject(EvalInfo &Info, const Expr *E, CheckSubobjectKind CSK) {
 1570     void addDecl(EvalInfo &Info, const Expr *E,
 1575     void addUnsizedArray(EvalInfo &Info, const Expr *E, QualType ElemTy) {
 1587     void addArray(EvalInfo &Info, const Expr *E, const ConstantArrayType *CAT) {
 1591     void addComplex(EvalInfo &Info, const Expr *E, QualType EltTy, bool Imag) {
 1598     void adjustOffsetAndIndex(EvalInfo &Info, const Expr *E,
 1723 static bool Evaluate(APValue &Result, EvalInfo &Info, const Expr *E);
 1725                             const LValue &This, const Expr *E,
 1727 static bool EvaluateLValue(const Expr *E, LValue &Result, EvalInfo &Info,
 1729 static bool EvaluatePointer(const Expr *E, LValue &Result, EvalInfo &Info,
 1731 static bool EvaluateMemberPointer(const Expr *E, MemberPtr &Result,
 1733 static bool EvaluateTemporary(const Expr *E, LValue &Result, EvalInfo &Info);
 1734 static bool EvaluateInteger(const Expr *E, APSInt &Result, EvalInfo &Info);
 1735 static bool EvaluateIntegerOrLValue(const Expr *E, APValue &Result,
 1737 static bool EvaluateFloat(const Expr *E, APFloat &Result, EvalInfo &Info);
 1738 static bool EvaluateComplex(const Expr *E, ComplexValue &Res, EvalInfo &Info);
 1739 static bool EvaluateAtomic(const Expr *E, const LValue *This, APValue &Result,
 1741 static bool EvaluateAsRValue(EvalInfo &Info, const Expr *E, APValue &Result);
 1744 static bool EvaluateFixedPointOrInteger(const Expr *E, APFixedPoint &Result,
 1748 static bool EvaluateFixedPoint(const Expr *E, APFixedPoint &Result,
 1766 APValue &CallStackFrame::createTemporary(const KeyT *Key, QualType T,
 1787 APValue *EvalInfo::createHeapAlloc(const Expr *E, QualType T, LValue &LV) {
 1841 static bool EvaluateIgnoredValue(EvalInfo &Info, const Expr *E) {
 1875   const Expr *E = B.get<const Expr*>();
 1875   const Expr *E = B.get<const Expr*>();
 1879   case Expr::CompoundLiteralExprClass: {
 1883   case Expr::MaterializeTemporaryExprClass:
 1888   case Expr::StringLiteralClass:
 1889   case Expr::PredefinedExprClass:
 1890   case Expr::ObjCStringLiteralClass:
 1891   case Expr::ObjCEncodeExprClass:
 1892   case Expr::CXXUuidofExprClass:
 1894   case Expr::ObjCBoxedExprClass:
 1896   case Expr::CallExprClass:
 1899   case Expr::AddrLabelExprClass:
 1903   case Expr::BlockExprClass:
 1905   case Expr::ImplicitValueInitExprClass:
 1923   const Expr *E = Value.Base.dyn_cast<const Expr*>();
 1923   const Expr *E = Value.Base.dyn_cast<const Expr*>();
 1969   else if (const Expr *E = Base.dyn_cast<const Expr*>())
 1969   else if (const Expr *E = Base.dyn_cast<const Expr*>())
 1993                                   Expr::ConstExprUsage Usage,
 2002                                           Expr::ConstExprUsage Usage,
 2044       if (Usage == Expr::EvaluateForCodeGen && Var->hasAttr<DLLImportAttr>())
 2059       if (Info.getLangOpts().CPlusPlus && Usage == Expr::EvaluateForCodeGen &&
 2065                  Base.dyn_cast<const Expr *>())) {
 2113                                                  Expr::ConstExprUsage Usage) {
 2118   return Usage == Expr::EvaluateForMangling || FD->isVirtual() ||
 2124 static bool CheckLiteralType(EvalInfo &Info, const Expr *E,
 2157                                   Expr::ConstExprUsage Usage,
 2241                         Expr::ConstExprUsage Usage = Expr::EvaluateForCodeGen) {
 2241                         Expr::ConstExprUsage Usage = Expr::EvaluateForCodeGen) {
 2255       Expr::EvaluateForCodeGen, SourceLocation(), CheckedTemps);
 2325 static bool EvaluateAsBooleanCondition(const Expr *E, bool &Result,
 2335 static bool HandleOverflow(EvalInfo &Info, const Expr *E,
 2342 static bool HandleFloatToIntCast(EvalInfo &Info, const Expr *E,
 2357 static bool HandleFloatToFloatCast(EvalInfo &Info, const Expr *E,
 2367 static APSInt HandleIntToIntCast(EvalInfo &Info, const Expr *E,
 2380 static bool HandleIntToFloatCast(EvalInfo &Info, const Expr *E,
 2389 static bool truncateBitfieldValue(EvalInfo &Info, const Expr *E,
 2410 static bool EvalAndBitcastToAPInt(EvalInfo &Info, const Expr *E,
 2461 static bool CheckedIntArithmetic(EvalInfo &Info, const Expr *E,
 2484 static bool handleIntIntBinOp(EvalInfo &Info, const Expr *E, const APSInt &LHS,
 2586 static bool handleFloatFloatBinOp(EvalInfo &Info, const Expr *E,
 2624 static bool CastToDerivedClass(EvalInfo &Info, const Expr *E, LValue &Result,
 2653 static bool HandleLValueDirectBase(EvalInfo &Info, const Expr *E, LValue &Obj,
 2667 static bool HandleLValueBase(EvalInfo &Info, const Expr *E, LValue &Obj,
 2706 static bool CastToBaseClass(EvalInfo &Info, const Expr *E, LValue &Result,
 2722 static bool HandleLValueMember(EvalInfo &Info, const Expr *E, LValue &LVal,
 2737 static bool HandleLValueIndirectMember(EvalInfo &Info, const Expr *E,
 2778 static bool HandleLValueArrayAdjustment(EvalInfo &Info, const Expr *E,
 2789 static bool HandleLValueArrayAdjustment(EvalInfo &Info, const Expr *E,
 2801 static bool HandleLValueComplexElement(EvalInfo &Info, const Expr *E,
 2822 static bool evaluateVarDeclInit(EvalInfo &Info, const Expr *E,
 2865   const Expr *Init = VD->getAnyInitializer(VD);
 2929 static APSInt extractStringLiteralCharacter(EvalInfo &Info, const Expr *Lit,
 3030 static bool diagnoseMutableFields(EvalInfo &Info, const Expr *E, AccessKinds AK,
 3087     if (auto *BaseE = Base.dyn_cast<const Expr *>())
 3157 findSubobject(EvalInfo &Info, const Expr *E, const CompleteObject &Obj,
 3223             if (auto *E = Obj.Base.dyn_cast<const Expr *>())
 3358   const Expr *E;
 3382 static bool extractSubobject(EvalInfo &Info, const Expr *E,
 3395   const Expr *E;
 3440 static bool modifySubobject(EvalInfo &Info, const Expr *E,
 3507 static CompleteObject findCompleteObject(EvalInfo &Info, const Expr *E,
 3642     const Expr *Base = LVal.Base.dyn_cast<const Expr*>();
 3642     const Expr *Base = LVal.Base.dyn_cast<const Expr*>();
 3727 handleLValueToRValueConversion(EvalInfo &Info, const Expr *Conv, QualType Type,
 3734   const Expr *Base = LVal.Base.dyn_cast<const Expr*>();
 3734   const Expr *Base = LVal.Base.dyn_cast<const Expr*>();
 3783 static bool handleAssignment(EvalInfo &Info, const Expr *E, const LValue &LVal,
 3800   const Expr *E;
 3907     EvalInfo &Info, const Expr *E,
 4052 static bool handleIncDec(EvalInfo &Info, const Expr *E, const LValue &LVal,
 4069 static bool EvaluateObjectArgument(EvalInfo &Info, const Expr *Object,
 4098                                                   const Expr *RHS,
 4293   const Expr *InitE = VD->getInit();
 4329                          const Expr *Cond, bool &Result) {
 4586     if (const Expr *E = dyn_cast<Expr>(S)) {
 4586     if (const Expr *E = dyn_cast<Expr>(S)) {
 4617     const Expr *RetExpr = cast<ReturnStmt>(S)->getRetValue();
 4959 static bool checkDynamicType(EvalInfo &Info, const Expr *E, const LValue &This,
 5001 checkNonVirtualMemberCallThisPointer(EvalInfo &Info, const Expr *E,
 5026 static Optional<DynamicType> ComputeDynamicType(EvalInfo &Info, const Expr *E,
 5081     EvalInfo &Info, const Expr *E, LValue &This, const CXXMethodDecl *Found,
 5145 static bool HandleCovariantReturnAdjustment(EvalInfo &Info, const Expr *E,
 5318 static bool HandleUnionActiveMemberChange(EvalInfo &Info, const Expr *LHSExpr,
 5327   for (const Expr *E = LHSExpr; E != nullptr;) {
 5432 static bool EvaluateArgs(ArrayRef<const Expr *> Args, ArgVector &ArgValues,
 5474                                ArrayRef<const Expr*> Args, const Stmt *Body,
 5535 static bool HandleConstructorCall(const Expr *E, const LValue &This,
 5699     const Expr *Init = I->getInit();
 5733 static bool HandleConstructorCall(const Expr *E, const LValue &This,
 5734                                   ArrayRef<const Expr*> Args,
 5914   const Expr *E;
 5937 static bool HandleDestruction(EvalInfo &Info, const Expr *E,
 6041 static Optional<DynAlloc *> CheckDeleteKind(EvalInfo &Info, const Expr *E,
 6614   bool DerivedSuccess(const APValue &V, const Expr *E) {
 6617   bool DerivedZeroInitialization(const Expr *E) {
 6664     Expr *EvalExpr = BoolResult ? E->getTrueExpr() : E->getFalseExpr();
 6673   OptionalDiagnostic CCEDiag(const Expr *E, diag::kind D) {
 6677   bool ZeroInitialization(const Expr *E) { return Error(E); }
 6686   bool Error(const Expr *E, diag::kind D) {
 6690   bool Error(const Expr *E) {
 6697   bool VisitExpr(const Expr *E) {
 6824     const Expr *Source = E->getSourceExpr();
 6843     const Expr *Callee = E->getCallee()->IgnoreParens();
 7132         const Expr *FinalExpr = dyn_cast<Expr>(*BI);
 7132         const Expr *FinalExpr = dyn_cast<Expr>(*BI);
 7159   void VisitIgnoredValue(const Expr *E) {
 7164   void VisitIgnoredBaseExpression(const Expr *E) {
 7193   bool evaluatePointer(const Expr *E, LValue &Result) {
 7202   bool Success(const APValue &V, const Expr *E) {
 7320   bool VisitVarDecl(const Expr *E, const VarDecl *VD);
 7376 static bool EvaluateLValue(const Expr *E, LValue &Result, EvalInfo &Info,
 7394 bool LValueExprEvaluator::VisitVarDecl(const Expr *E, const VarDecl *VD) {
 7468   SmallVector<const Expr *, 2> CommaLHSs;
 7470   const Expr *Inner = E->GetTemporaryExpr()->
 7712     Expr::EvalResult ExprResult;
 7713     if (!E->EvaluateAsInt(ExprResult, Ctx, Expr::SE_AllowSideEffects))
 7752   const auto *Base = LVal.getLValueBase().get<const Expr *>();
 7752   const auto *Base = LVal.getLValueBase().get<const Expr *>();
 7776   const Expr *Init = VD->getAnyInitializer();
 7780   const Expr *E = Init->IgnoreParens();
 7799   bool Success(const Expr *E) {
 7804   bool evaluateLValue(const Expr *E, LValue &Result) {
 7808   bool evaluatePointer(const Expr *E, LValue &Result) {
 7819   bool Success(const APValue &V, const Expr *E) {
 7823   bool ZeroInitialization(const Expr *E) {
 7899 static bool EvaluatePointer(const Expr* E, LValue& Result, EvalInfo &Info,
 7910   const Expr *PExp = E->getLHS();
 7911   const Expr *IExp = E->getRHS();
 7935   const Expr *SubExpr = E->getSubExpr();
 8091 static CharUnits GetAlignOfExpr(EvalInfo &Info, const Expr *E,
 8169       } else if (const Expr *E = OffsetResult.Base.dyn_cast<const Expr *>()) {
 8169       } else if (const Expr *E = OffsetResult.Base.dyn_cast<const Expr *>()) {
 8512   const Expr *Init = E->getInitializer();
 8516   if (Optional<const Expr*> ArraySize = E->getArraySize()) {
 8517     const Expr *Stripped = *ArraySize;
 8594       const Expr *E;
 8676   bool Success(const APValue &V, const Expr *E) {
 8680   bool ZeroInitialization(const Expr *E) {
 8689 static bool EvaluateMemberPointer(const Expr *E, MemberPtr &Result,
 8760     bool Success(const APValue &V, const Expr *E) {
 8764     bool ZeroInitialization(const Expr *E) {
 8767     bool ZeroInitialization(const Expr *E, QualType T);
 8792 static bool HandleClassZeroInitialization(EvalInfo &Info, const Expr *E,
 8835 bool RecordExprEvaluator::ZeroInitialization(const Expr *E, QualType T) {
 8921     const Expr *InitExpr = E->getNumInits() ? E->getInit(0) : &VIE;
 8944       const Expr *Init = E->getInit(ElementNo);
 8982     const Expr *Init = HaveInit ? E->getInit(ElementNo++) : &VIE;
 9138     Expr *const CurFieldInit = *CaptureInitIt++;
 9156 static bool EvaluateRecord(const Expr *E, const LValue &This,
 9178   bool VisitConstructExpr(const Expr *E) {
 9212 static bool EvaluateTemporary(const Expr *E, LValue &Result, EvalInfo &Info) {
 9230     bool Success(ArrayRef<APValue> V, const Expr *E) {
 9236     bool Success(const APValue &V, const Expr *E) {
 9241     bool ZeroInitialization(const Expr *E);
 9254 static bool EvaluateVector(const Expr* E, APValue& Result, EvalInfo &Info) {
 9263   const Expr *SE = E->getSubExpr();
 9379 VectorExprEvaluator::ZeroInitialization(const Expr *E) {
 9412     bool Success(const APValue &V, const Expr *E) {
 9418     bool ZeroInitialization(const Expr *E) {
 9453 static bool EvaluateArray(const Expr *E, const LValue &This,
 9469 static bool MaybeElementDependentArrayFiller(const Expr *FillerExpr) {
 9512   const Expr *FillerExpr = E->hasArrayFiller() ? E->getArrayFiller() : nullptr;
 9536     const Expr *Init =
 9651   bool Success(const llvm::APSInt &SI, const Expr *E, APValue &Result) {
 9661   bool Success(const llvm::APSInt &SI, const Expr *E) {
 9665   bool Success(const llvm::APInt &I, const Expr *E, APValue &Result) {
 9675   bool Success(const llvm::APInt &I, const Expr *E) {
 9679   bool Success(uint64_t Value, const Expr *E, APValue &Result) {
 9685   bool Success(uint64_t Value, const Expr *E) {
 9689   bool Success(CharUnits Size, const Expr *E) {
 9693   bool Success(const APValue &V, const Expr *E) {
 9701   bool ZeroInitialization(const Expr *E) { return Success(0, E); }
 9716   bool CheckReferencedDecl(const Expr *E, const Decl *D);
 9794   bool Success(const llvm::APInt &I, const Expr *E) {
 9799   bool Success(uint64_t Value, const Expr *E) {
 9804   bool Success(const APValue &V, const Expr *E) {
 9808   bool Success(const APFixedPoint &V, const Expr *E) {
 9838 static bool EvaluateIntegerOrLValue(const Expr *E, APValue &Result,
 9844 static bool EvaluateInteger(const Expr *E, APSInt &Result, EvalInfo &Info) {
 9864 static bool EvaluateFixedPoint(const Expr *E, APFixedPoint &Result,
 9879 static bool EvaluateFixedPointOrInteger(const Expr *E, APFixedPoint &Result,
 9897 bool IntExprEvaluator::CheckReferencedDecl(const Expr* E, const Decl* D) {
10111   } else if (const Expr *E = Base.dyn_cast<const Expr *>()) {
10111   } else if (const Expr *E = Base.dyn_cast<const Expr *>()) {
10127 static bool EvaluateBuiltinConstantP(EvalInfo &Info, const Expr *Arg) {
10180   } else if (const Expr *E = B.get<const Expr*>()) {
10180   } else if (const Expr *E = B.get<const Expr*>()) {
10198 static const Expr *ignorePointerCastsAndParens(const Expr *E) {
10198 static const Expr *ignorePointerCastsAndParens(const Expr *E) {
10247   if (auto *ME = dyn_cast_or_null<MemberExpr>(Base.dyn_cast<const Expr *>())) {
10320   const auto *E = LVal.Base.dyn_cast<const Expr *>();
10320   const auto *E = LVal.Base.dyn_cast<const Expr *>();
10444 static bool tryEvaluateBuiltinObjectSize(const Expr *E, unsigned Type,
10580     const Expr *Arg = E->getArg(0);
10715             String.getLValueBase().dyn_cast<const Expr *>())) {
10929                                                 Expr::NPC_NeverValueDependent))
11119     const Expr *E;
11168   bool Success(uint64_t Value, const Expr *E, APValue &Result) {
11171   bool Success(const APSInt &Value, const Expr *E, APValue &Result) {
11174   bool Error(const Expr *E) {
11177   bool Error(const Expr *E, diag::kind D) {
11181   OptionalDiagnostic CCEDiag(const Expr *E, diag::kind D) {
11192   void EvaluateExpr(const Expr *E, EvalResult &Result) {
11200   void enqueue(const Expr *E) {
11331     const Expr *LHSExpr = LHSVal.getLValueBase().dyn_cast<const Expr*>();
11331     const Expr *LHSExpr = LHSVal.getLValueBase().dyn_cast<const Expr*>();
11332     const Expr *RHSExpr = RHSVal.getLValueBase().dyn_cast<const Expr*>();
11332     const Expr *RHSExpr = RHSVal.getLValueBase().dyn_cast<const Expr*>();
11827       const Expr *LHSExpr = LHSValue.Base.dyn_cast<const Expr *>();
11827       const Expr *LHSExpr = LHSValue.Base.dyn_cast<const Expr *>();
11828       const Expr *RHSExpr = RHSValue.Base.dyn_cast<const Expr *>();
11828       const Expr *RHSExpr = RHSValue.Base.dyn_cast<const Expr *>();
11961       const Expr *Idx = OOE->getIndexExpr(ON.getArrayExprIndex());
12062   const Expr *SubExpr = E->getSubExpr();
12299   const Expr *SubExpr = E->getSubExpr();
12339   const Expr *LHS = E->getLHS();
12340   const Expr *RHS = E->getRHS();
12379   bool Success(const APValue &V, const Expr *e) {
12384   bool ZeroInitialization(const Expr *E) {
12403 static bool EvaluateFloat(const Expr* E, APFloat& Result, EvalInfo &Info) {
12410                                   const Expr *Arg,
12572   const Expr* SubExpr = E->getSubExpr();
12615   bool Success(const APValue &V, const Expr *e) {
12620   bool ZeroInitialization(const Expr *E);
12634 static bool EvaluateComplex(const Expr *E, ComplexValue &Result,
12640 bool ComplexExprEvaluator::ZeroInitialization(const Expr *E) {
12657   const Expr* SubExpr = E->getSubExpr();
13113   bool Success(const APValue &V, const Expr *E) {
13118   bool ZeroInitialization(const Expr *E) {
13139 static bool EvaluateAtomic(const Expr *E, const LValue *This, APValue &Result,
13156   bool Success(const APValue &V, const Expr *e) { return true; }
13158   bool ZeroInitialization(const Expr *E) { return true; }
13203   const Expr *Arg = E->getArgument();
13264 static bool EvaluateVoid(const Expr *E, EvalInfo &Info) {
13273 static bool Evaluate(APValue &Result, EvalInfo &Info, const Expr *E) {
13356                             const Expr *E, bool AllowNonLiteralTypes) {
13383 static bool EvaluateAsRValue(EvalInfo &Info, const Expr *E, APValue &Result) {
13417 static bool FastEvaluateAsRValue(const Expr *Exp, Expr::EvalResult &Result,
13417 static bool FastEvaluateAsRValue(const Expr *Exp, Expr::EvalResult &Result,
13446 static bool hasUnacceptableSideEffect(Expr::EvalStatus &Result,
13447                                       Expr::SideEffectsKind SEK) {
13448   return (SEK < Expr::SE_AllowSideEffects && Result.HasSideEffects) ||
13449          (SEK < Expr::SE_AllowUndefinedBehavior && Result.HasUndefinedBehavior);
13452 static bool EvaluateAsRValue(const Expr *E, Expr::EvalResult &Result,
13452 static bool EvaluateAsRValue(const Expr *E, Expr::EvalResult &Result,
13461 static bool EvaluateAsInt(const Expr *E, Expr::EvalResult &ExprResult,
13461 static bool EvaluateAsInt(const Expr *E, Expr::EvalResult &ExprResult,
13463                           Expr::SideEffectsKind AllowSideEffects,
13476 static bool EvaluateAsFixedPoint(const Expr *E, Expr::EvalResult &ExprResult,
13476 static bool EvaluateAsFixedPoint(const Expr *E, Expr::EvalResult &ExprResult,
13478                                  Expr::SideEffectsKind AllowSideEffects,
13568                                      Expr::EvaluateForCodeGen, CheckedTemps))
13607   Expr::EvalStatus EStatus;
13670   Expr::EvalStatus EStatus;
13808 static ICEDiag CheckEvalInICE(const Expr* E, const ASTContext &Ctx) {
13809   Expr::EvalResult EVResult;
13810   Expr::EvalStatus Status;
13821 static ICEDiag CheckICE(const Expr* E, const ASTContext &Ctx) {
13831   case Expr::PredefinedExprClass:
13832   case Expr::FloatingLiteralClass:
13833   case Expr::ImaginaryLiteralClass:
13834   case Expr::StringLiteralClass:
13835   case Expr::ArraySubscriptExprClass:
13836   case Expr::OMPArraySectionExprClass:
13837   case Expr::MemberExprClass:
13838   case Expr::CompoundAssignOperatorClass:
13839   case Expr::CompoundLiteralExprClass:
13840   case Expr::ExtVectorElementExprClass:
13841   case Expr::DesignatedInitExprClass:
13842   case Expr::ArrayInitLoopExprClass:
13843   case Expr::ArrayInitIndexExprClass:
13844   case Expr::NoInitExprClass:
13845   case Expr::DesignatedInitUpdateExprClass:
13846   case Expr::ImplicitValueInitExprClass:
13847   case Expr::ParenListExprClass:
13848   case Expr::VAArgExprClass:
13849   case Expr::AddrLabelExprClass:
13850   case Expr::StmtExprClass:
13851   case Expr::CXXMemberCallExprClass:
13852   case Expr::CUDAKernelCallExprClass:
13853   case Expr::CXXDynamicCastExprClass:
13854   case Expr::CXXTypeidExprClass:
13855   case Expr::CXXUuidofExprClass:
13856   case Expr::MSPropertyRefExprClass:
13857   case Expr::MSPropertySubscriptExprClass:
13858   case Expr::CXXNullPtrLiteralExprClass:
13859   case Expr::UserDefinedLiteralClass:
13860   case Expr::CXXThisExprClass:
13861   case Expr::CXXThrowExprClass:
13862   case Expr::CXXNewExprClass:
13863   case Expr::CXXDeleteExprClass:
13864   case Expr::CXXPseudoDestructorExprClass:
13865   case Expr::UnresolvedLookupExprClass:
13866   case Expr::TypoExprClass:
13867   case Expr::DependentScopeDeclRefExprClass:
13868   case Expr::CXXConstructExprClass:
13869   case Expr::CXXInheritedCtorInitExprClass:
13870   case Expr::CXXStdInitializerListExprClass:
13871   case Expr::CXXBindTemporaryExprClass:
13872   case Expr::ExprWithCleanupsClass:
13873   case Expr::CXXTemporaryObjectExprClass:
13874   case Expr::CXXUnresolvedConstructExprClass:
13875   case Expr::CXXDependentScopeMemberExprClass:
13876   case Expr::UnresolvedMemberExprClass:
13877   case Expr::ObjCStringLiteralClass:
13878   case Expr::ObjCBoxedExprClass:
13879   case Expr::ObjCArrayLiteralClass:
13880   case Expr::ObjCDictionaryLiteralClass:
13881   case Expr::ObjCEncodeExprClass:
13882   case Expr::ObjCMessageExprClass:
13883   case Expr::ObjCSelectorExprClass:
13884   case Expr::ObjCProtocolExprClass:
13885   case Expr::ObjCIvarRefExprClass:
13886   case Expr::ObjCPropertyRefExprClass:
13887   case Expr::ObjCSubscriptRefExprClass:
13888   case Expr::ObjCIsaExprClass:
13889   case Expr::ObjCAvailabilityCheckExprClass:
13890   case Expr::ShuffleVectorExprClass:
13891   case Expr::ConvertVectorExprClass:
13892   case Expr::BlockExprClass:
13893   case Expr::NoStmtClass:
13894   case Expr::OpaqueValueExprClass:
13895   case Expr::PackExpansionExprClass:
13896   case Expr::SubstNonTypeTemplateParmPackExprClass:
13897   case Expr::FunctionParmPackExprClass:
13898   case Expr::AsTypeExprClass:
13899   case Expr::ObjCIndirectCopyRestoreExprClass:
13900   case Expr::MaterializeTemporaryExprClass:
13901   case Expr::PseudoObjectExprClass:
13902   case Expr::AtomicExprClass:
13903   case Expr::LambdaExprClass:
13904   case Expr::CXXFoldExprClass:
13905   case Expr::CoawaitExprClass:
13906   case Expr::DependentCoawaitExprClass:
13907   case Expr::CoyieldExprClass:
13910   case Expr::InitListExprClass: {
13921   case Expr::SizeOfPackExprClass:
13922   case Expr::GNUNullExprClass:
13923   case Expr::SourceLocExprClass:
13926   case Expr::SubstNonTypeTemplateParmExprClass:
13930   case Expr::ConstantExprClass:
13933   case Expr::ParenExprClass:
13935   case Expr::GenericSelectionExprClass:
13937   case Expr::IntegerLiteralClass:
13938   case Expr::FixedPointLiteralClass:
13939   case Expr::CharacterLiteralClass:
13940   case Expr::ObjCBoolLiteralExprClass:
13941   case Expr::CXXBoolLiteralExprClass:
13942   case Expr::CXXScalarValueInitExprClass:
13943   case Expr::TypeTraitExprClass:
13944   case Expr::ConceptSpecializationExprClass:
13945   case Expr::ArrayTypeTraitExprClass:
13946   case Expr::ExpressionTraitExprClass:
13947   case Expr::CXXNoexceptExprClass:
13949   case Expr::CallExprClass:
13950   case Expr::CXXOperatorCallExprClass: {
13959   case Expr::CXXRewrittenBinaryOperatorClass:
13962   case Expr::DeclRefExprClass: {
13992   case Expr::UnaryOperatorClass: {
14017   case Expr::OffsetOfExprClass: {
14026   case Expr::UnaryExprOrTypeTraitExprClass: {
14033   case Expr::BinaryOperatorClass: {
14121   case Expr::ImplicitCastExprClass:
14122   case Expr::CStyleCastExprClass:
14123   case Expr::CXXFunctionalCastExprClass:
14124   case Expr::CXXStaticCastExprClass:
14125   case Expr::CXXReinterpretCastExprClass:
14126   case Expr::CXXConstCastExprClass:
14127   case Expr::ObjCBridgedCastExprClass: {
14128     const Expr *SubExpr = cast<CastExpr>(E)->getSubExpr();
14158   case Expr::BinaryConditionalOperatorClass: {
14169   case Expr::ConditionalOperatorClass: {
14201   case Expr::CXXDefaultArgExprClass:
14203   case Expr::CXXDefaultInitExprClass:
14205   case Expr::ChooseExprClass: {
14208   case Expr::BuiltinBitCastExprClass: {
14220                                                     const Expr *E,
14273   Expr::EvalStatus Status;
14301   Expr::EvalStatus Status;
14326                                     ArrayRef<const Expr*> Args,
14327                                     const Expr *This) const {
14331   Expr::EvalStatus Status;
14350   for (ArrayRef<const Expr*>::iterator I = Args.begin(), E = Args.end();
14376   Expr::EvalStatus Status;
14404   ArrayRef<const Expr*> Args;
14421 bool Expr::isPotentialConstantExprUnevaluated(Expr *E,
14428   Expr::EvalStatus Status;
14437   ArrayRef<const Expr*> Args;
14455   Expr::EvalStatus Status;
tools/clang/lib/AST/ExprObjC.cpp
   26 ObjCArrayLiteral::ObjCArrayLiteral(ArrayRef<Expr *> Elements, QualType T,
   31   Expr **SaveElements = getElements();
   45                                            ArrayRef<Expr *> Elements,
   48   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(Elements.size()));
   54   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(NumElements));
  128                                  ObjCMethodDecl *Method, ArrayRef<Expr *> Args,
  149                                  ObjCMethodDecl *Method, ArrayRef<Expr *> Args,
  163                                  SourceLocation LBracLoc, Expr *Receiver,
  166                                  ObjCMethodDecl *Method, ArrayRef<Expr *> Args,
  180 void ObjCMessageExpr::initArgsAndSelLocs(ArrayRef<Expr *> Args,
  184   Expr **MyArgs = getArgs();
  210                         ObjCMethodDecl *Method, ArrayRef<Expr *> Args,
  229                         ObjCMethodDecl *Method, ArrayRef<Expr *> Args,
  246                         SourceLocation LBracLoc, Expr *Receiver, Selector Sel,
  248                         ObjCMethodDecl *Method, ArrayRef<Expr *> Args,
  271                                         ArrayRef<Expr *> Args,
tools/clang/lib/AST/Interp/ByteCodeEmitter.h
   54   virtual bool visitExpr(const Expr *E) = 0;
tools/clang/lib/AST/Interp/ByteCodeExprGen.cpp
  147   const Expr *LHS = BO->getLHS();
  148   const Expr *RHS = BO->getRHS();
  209 bool ByteCodeExprGen<Emitter>::discard(const Expr *E) {
  215 bool ByteCodeExprGen<Emitter>::visit(const Expr *E) {
  221 bool ByteCodeExprGen<Emitter>::visitBool(const Expr *E) {
  230 bool ByteCodeExprGen<Emitter>::visitZeroInitializer(PrimType T, const Expr *E) {
  258     const Expr *LV, DerefKind AK, llvm::function_ref<bool(PrimType)> Direct,
  283     const Expr *LV, PrimType T, const ParmVarDecl *PD, DerefKind AK,
  325     const Expr *LV, PrimType T, const VarDecl *VD, DerefKind AK,
  395                                          const APInt &Value, const Expr *E) {
  427   Descriptor *D = P.createDescriptor(Src, Ty, IsConst, Src.is<const Expr *>());
  446   if (auto *E = Src.dyn_cast<const Expr *>()) {
  465     const Expr *Init, InitFnRef InitFn) {
  471 bool ByteCodeExprGen<Emitter>::getPtrVarDecl(const VarDecl *VD, const Expr *E) {
  519 bool ByteCodeExprGen<Emitter>::visitExpr(const Expr *Exp) {
  532   const Expr *Init = VD->getInit();
tools/clang/lib/AST/Interp/ByteCodeExprGen.h
   75   bool visitExpr(const Expr *E) override;
  102   llvm::Optional<PrimType> classify(const Expr *E) const {
  123   bool discard(const Expr *E);
  125   bool visit(const Expr *E);
  127   bool visitInitializer(const Expr *E, InitFnRef GenPtr);
  130   bool visitBool(const Expr *E);
  133   bool visitLocalInitializer(const Expr *Init, unsigned I) {
  140   bool visitGlobalInitializer(const Expr *Init, unsigned I) {
  147   bool visitThisInitializer(const Expr *I) {
  167   bool visitZeroInitializer(PrimType T, const Expr *E);
  181   bool dereference(const Expr *LV, DerefKind AK,
  184   bool dereferenceParam(const Expr *LV, PrimType T, const ParmVarDecl *PD,
  188   bool dereferenceVar(const Expr *LV, PrimType T, const VarDecl *PD,
  194                  const Expr *E);
  197   template <typename T> bool emitConst(const Expr *E, T Value) {
  205   bool getPtrVarDecl(const VarDecl *VD, const Expr *E);
tools/clang/lib/AST/Interp/ByteCodeStmtGen.cpp
  128     if (auto *Exp = dyn_cast<Expr>(S))
  166   if (const Expr *RE = RS->getRetValue()) {
tools/clang/lib/AST/Interp/Context.cpp
   54 InterpResult Context::evaluateAsRValue(State &Parent, const Expr *E,
tools/clang/lib/AST/Interp/Context.h
   61   InterpResult evaluateAsRValue(State &Parent, const Expr *E, APValue &Result);
tools/clang/lib/AST/Interp/Descriptor.cpp
  256   if (auto *E = Source.dyn_cast<const Expr *>())
tools/clang/lib/AST/Interp/Descriptor.h
   26 using DeclTy = llvm::PointerUnion<const Decl *, const Expr *>;
  113   const Expr *asExpr() const { return Source.dyn_cast<const Expr *>(); }
  113   const Expr *asExpr() const { return Source.dyn_cast<const Expr *>(); }
tools/clang/lib/AST/Interp/EvalEmitter.cpp
   29 llvm::Expected<bool> EvalEmitter::interpretExpr(const Expr *E) {
tools/clang/lib/AST/Interp/EvalEmitter.h
   42   llvm::Expected<bool> interpretExpr(const Expr *E);
   57   virtual bool visitExpr(const Expr *E) = 0;
tools/clang/lib/AST/Interp/Interp.h
  118   const Expr *E = S.Current->getExpr(OpPC);
  853     const Expr *E = S.Current->getExpr(OpPC);
  881       const Expr *E = S.Current->getExpr(OpPC);
tools/clang/lib/AST/Interp/InterpFrame.cpp
  186 const Expr *InterpFrame::getExpr(CodePtr PC) const {
tools/clang/lib/AST/Interp/InterpFrame.h
  110   const Expr *getExpr(CodePtr PC) const;
tools/clang/lib/AST/Interp/InterpState.cpp
   51 bool InterpState::reportOverflow(const Expr *E, const llvm::APSInt &Value) {
tools/clang/lib/AST/Interp/InterpState.h
   50   Expr::EvalStatus &getEvalStatus() const override {
   78   bool reportOverflow(const Expr *E, const llvm::APSInt &Value);
tools/clang/lib/AST/Interp/Program.cpp
  158 llvm::Optional<unsigned> Program::createGlobal(const Expr *E) {
  167   const bool IsTemporary = D.dyn_cast<const Expr *>();
tools/clang/lib/AST/Interp/Program.h
   72   llvm::Optional<unsigned> createGlobal(const Expr *E);
tools/clang/lib/AST/Interp/Source.cpp
   16   if (const Expr *E = asExpr())
   25 const Expr *SourceInfo::asExpr() const {
   27     return dyn_cast<Expr>(S);
   31 const Expr *SourceMapper::getExpr(Function *F, CodePtr PC) const {
   32   if (const Expr *E = getSource(F, PC).asExpr())
tools/clang/lib/AST/Interp/Source.h
   91   const Expr *asExpr() const;
  110   const Expr *getExpr(Function *F, CodePtr PC) const;
tools/clang/lib/AST/Interp/State.cpp
   25 OptionalDiagnostic State::FFDiag(const Expr *E, diag::kind DiagId,
   52 OptionalDiagnostic State::CCEDiag(const Expr *E, diag::kind DiagId,
   88   Expr::EvalStatus &EvalStatus = getEvalStatus();
tools/clang/lib/AST/Interp/State.h
   68   virtual Expr::EvalStatus &getEvalStatus() const = 0;
   81   FFDiag(const Expr *E,
  101   CCEDiag(const Expr *E,
tools/clang/lib/AST/ItaniumMangle.cpp
  534   void mangleMemberExprBase(const Expr *base, bool isArrow);
  535   void mangleMemberExpr(const Expr *base, bool isArrow,
  542   void mangleCastExpression(const Expr *E, StringRef CastEncoding);
  545   void mangleExpression(const Expr *E, unsigned Arity = UnknownArity);
 3379   Expr *E = T->getUnderlyingExpr();
 3468 void CXXNameMangler::mangleMemberExprBase(const Expr *Base, bool IsArrow) {
 3492 void CXXNameMangler::mangleMemberExpr(const Expr *base,
 3511   const Expr *callee = call->getCallee();
 3512   const Expr *fn = callee->IgnoreParens();
 3538 void CXXNameMangler::mangleCastExpression(const Expr *E, StringRef CastEncoding) {
 3578 void CXXNameMangler::mangleExpression(const Expr *E, unsigned Arity) {
 3606   case Expr::NoStmtClass:
 3616   case Expr::AddrLabelExprClass:
 3617   case Expr::DesignatedInitUpdateExprClass:
 3618   case Expr::ImplicitValueInitExprClass:
 3619   case Expr::ArrayInitLoopExprClass:
 3620   case Expr::ArrayInitIndexExprClass:
 3621   case Expr::NoInitExprClass:
 3622   case Expr::ParenListExprClass:
 3623   case Expr::LambdaExprClass:
 3624   case Expr::MSPropertyRefExprClass:
 3625   case Expr::MSPropertySubscriptExprClass:
 3626   case Expr::TypoExprClass:  // This should no longer exist in the AST by now.
 3627   case Expr::OMPArraySectionExprClass:
 3628   case Expr::CXXInheritedCtorInitExprClass:
 3631   case Expr::ConstantExprClass:
 3636   case Expr::BlockExprClass:
 3637   case Expr::ChooseExprClass:
 3638   case Expr::CompoundLiteralExprClass:
 3639   case Expr::ExtVectorElementExprClass:
 3640   case Expr::GenericSelectionExprClass:
 3641   case Expr::ObjCEncodeExprClass:
 3642   case Expr::ObjCIsaExprClass:
 3643   case Expr::ObjCIvarRefExprClass:
 3644   case Expr::ObjCMessageExprClass:
 3645   case Expr::ObjCPropertyRefExprClass:
 3646   case Expr::ObjCProtocolExprClass:
 3647   case Expr::ObjCSelectorExprClass:
 3648   case Expr::ObjCStringLiteralClass:
 3649   case Expr::ObjCBoxedExprClass:
 3650   case Expr::ObjCArrayLiteralClass:
 3651   case Expr::ObjCDictionaryLiteralClass:
 3652   case Expr::ObjCSubscriptRefExprClass:
 3653   case Expr::ObjCIndirectCopyRestoreExprClass:
 3654   case Expr::ObjCAvailabilityCheckExprClass:
 3655   case Expr::OffsetOfExprClass:
 3656   case Expr::PredefinedExprClass:
 3657   case Expr::ShuffleVectorExprClass:
 3658   case Expr::ConvertVectorExprClass:
 3659   case Expr::StmtExprClass:
 3660   case Expr::TypeTraitExprClass:
 3661   case Expr::ArrayTypeTraitExprClass:
 3662   case Expr::ExpressionTraitExprClass:
 3663   case Expr::VAArgExprClass:
 3664   case Expr::CUDAKernelCallExprClass:
 3665   case Expr::AsTypeExprClass:
 3666   case Expr::PseudoObjectExprClass:
 3667   case Expr::AtomicExprClass:
 3668   case Expr::SourceLocExprClass:
 3669   case Expr::FixedPointLiteralClass:
 3670   case Expr::BuiltinBitCastExprClass:
 3683   case Expr::CXXUuidofExprClass: {
 3690       Expr *UuidExp = UE->getExprOperand();
 3698   case Expr::BinaryConditionalOperatorClass: {
 3709   case Expr::OpaqueValueExprClass:
 3712   case Expr::InitListExprClass: {
 3719   case Expr::DesignatedInitExprClass: {
 3740   case Expr::CXXDefaultArgExprClass:
 3744   case Expr::CXXDefaultInitExprClass:
 3748   case Expr::CXXStdInitializerListExprClass:
 3752   case Expr::SubstNonTypeTemplateParmExprClass:
 3757   case Expr::UserDefinedLiteralClass:
 3760   case Expr::CXXMemberCallExprClass: // fallthrough
 3761   case Expr::CallExprClass: {
 3780     for (const Expr *Arg : CE->arguments())
 3785     for (const Expr *Arg : CE->arguments())
 3791   case Expr::CXXNewExprClass: {
 3805       const Expr *Init = New->getInitializer();
 3826   case Expr::CXXPseudoDestructorExprClass: {
 3828     if (const Expr *Base = PDE->getBase())
 3852   case Expr::MemberExprClass: {
 3862   case Expr::UnresolvedMemberExprClass: {
 3872   case Expr::CXXDependentScopeMemberExprClass: {
 3884   case Expr::UnresolvedLookupExprClass: {
 3892   case Expr::CXXUnresolvedConstructExprClass: {
 3914   case Expr::CXXConstructExprClass: {
 3930   case Expr::CXXTemporaryObjectExprClass: {
 3959   case Expr::CXXScalarValueInitExprClass:
 3965   case Expr::CXXNoexceptExprClass:
 3970   case Expr::UnaryExprOrTypeTraitExprClass: {
 4024   case Expr::CXXThrowExprClass: {
 4037   case Expr::CXXTypeidExprClass: {
 4051   case Expr::CXXDeleteExprClass: {
 4061   case Expr::UnaryOperatorClass: {
 4069   case Expr::ArraySubscriptExprClass: {
 4080   case Expr::CompoundAssignOperatorClass: // fallthrough
 4081   case Expr::BinaryOperatorClass: {
 4093   case Expr::CXXRewrittenBinaryOperatorClass: {
 4104   case Expr::ConditionalOperatorClass: {
 4113   case Expr::ImplicitCastExprClass: {
 4119   case Expr::ObjCBridgedCastExprClass: {
 4128   case Expr::CStyleCastExprClass:
 4132   case Expr::CXXFunctionalCastExprClass: {
 4151   case Expr::CXXStaticCastExprClass:
 4154   case Expr::CXXDynamicCastExprClass:
 4157   case Expr::CXXReinterpretCastExprClass:
 4160   case Expr::CXXConstCastExprClass:
 4164   case Expr::CXXOperatorCallExprClass: {
 4177   case Expr::ParenExprClass:
 4182   case Expr::ConceptSpecializationExprClass: {
 4193   case Expr::DeclRefExprClass:
 4197   case Expr::SubstNonTypeTemplateParmPackExprClass:
 4205   case Expr::FunctionParmPackExprClass: {
 4213   case Expr::DependentScopeDeclRefExprClass: {
 4221   case Expr::CXXBindTemporaryExprClass:
 4225   case Expr::ExprWithCleanupsClass:
 4229   case Expr::FloatingLiteralClass: {
 4238   case Expr::CharacterLiteralClass:
 4246   case Expr::ObjCBoolLiteralExprClass:
 4252   case Expr::CXXBoolLiteralExprClass:
 4258   case Expr::IntegerLiteralClass: {
 4266   case Expr::ImaginaryLiteralClass: {
 4289   case Expr::StringLiteralClass: {
 4298   case Expr::GNUNullExprClass:
 4305   case Expr::CXXNullPtrLiteralExprClass: {
 4310   case Expr::PackExpansionExprClass:
 4315   case Expr::SizeOfPackExprClass: {
 4340   case Expr::MaterializeTemporaryExprClass: {
 4345   case Expr::CXXFoldExprClass: {
 4366   case Expr::CXXThisExprClass:
 4370   case Expr::CoawaitExprClass:
 4376   case Expr::DependentCoawaitExprClass:
 4382   case Expr::CoyieldExprClass:
 4562     const Expr *E = A.getAsExpr()->IgnoreParenImpCasts();
tools/clang/lib/AST/JSONNodeDumper.cpp
   54   if (const auto *E = dyn_cast<Expr>(S)) {
   54   if (const auto *E = dyn_cast<Expr>(S)) {
tools/clang/lib/AST/MicrosoftMangle.cpp
  379   void mangleExpression(const Expr *E);
 1361 void MicrosoftCXXNameMangler::mangleExpression(const Expr *E) {
tools/clang/lib/AST/NSAPI.cpp
  575 bool NSAPI::isObjCEnumerator(const Expr *E,
tools/clang/lib/AST/OSLog.cpp
   22     const Expr *E = nullptr;
   25     Optional<const Expr *> Count;
   26     Optional<const Expr *> Precision;
   27     Optional<const Expr *> FieldWidth;
   32   ArrayRef<const Expr *> Args;
   54   OSLogFormatStringHandler(ArrayRef<const Expr *> Args) : Args(Args) {
  182   ArrayRef<const Expr *> Args(E->getArgs(), E->getArgs() + E->getNumArgs());
  184   const Expr *StringArg;
  185   ArrayRef<const Expr *> VarArgs;
tools/clang/lib/AST/OpenMPClause.cpp
  265 OMPOrderedClause *OMPOrderedClause::Create(const ASTContext &C, Expr *Num,
  270   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(2 * NumLoops));
  282   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(2 * NumLoops));
  292                                             Expr *NumIterations) {
  294   getTrailingObjects<Expr *>()[NumLoop] = NumIterations;
  297 ArrayRef<Expr *> OMPOrderedClause::getLoopNumIterations() const {
  298   return llvm::makeArrayRef(getTrailingObjects<Expr *>(), NumberOfLoops);
  301 void OMPOrderedClause::setLoopCounter(unsigned NumLoop, Expr *Counter) {
  303   getTrailingObjects<Expr *>()[NumberOfLoops + NumLoop] = Counter;
  306 Expr *OMPOrderedClause::getLoopCounter(unsigned NumLoop) {
  308   return getTrailingObjects<Expr *>()[NumberOfLoops + NumLoop];
  311 const Expr *OMPOrderedClause::getLoopCounter(unsigned NumLoop) const {
  313   return getTrailingObjects<Expr *>()[NumberOfLoops + NumLoop];
  316 void OMPPrivateClause::setPrivateCopies(ArrayRef<Expr *> VL) {
  325                          ArrayRef<Expr *> VL, ArrayRef<Expr *> PrivateVL) {
  325                          ArrayRef<Expr *> VL, ArrayRef<Expr *> PrivateVL) {
  327   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(2 * VL.size()));
  337   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(2 * N));
  341 void OMPFirstprivateClause::setPrivateCopies(ArrayRef<Expr *> VL) {
  347 void OMPFirstprivateClause::setInits(ArrayRef<Expr *> VL) {
  356                               ArrayRef<Expr *> VL, ArrayRef<Expr *> PrivateVL,
  356                               ArrayRef<Expr *> VL, ArrayRef<Expr *> PrivateVL,
  357                               ArrayRef<Expr *> InitVL, Stmt *PreInit) {
  358   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(3 * VL.size()));
  370   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(3 * N));
  374 void OMPLastprivateClause::setPrivateCopies(ArrayRef<Expr *> PrivateCopies) {
  380 void OMPLastprivateClause::setSourceExprs(ArrayRef<Expr *> SrcExprs) {
  387 void OMPLastprivateClause::setDestinationExprs(ArrayRef<Expr *> DstExprs) {
  394 void OMPLastprivateClause::setAssignmentOps(ArrayRef<Expr *> AssignmentOps) {
  404     SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> SrcExprs,
  404     SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> SrcExprs,
  405     ArrayRef<Expr *> DstExprs, ArrayRef<Expr *> AssignmentOps, Stmt *PreInit,
  405     ArrayRef<Expr *> DstExprs, ArrayRef<Expr *> AssignmentOps, Stmt *PreInit,
  406     Expr *PostUpdate) {
  407   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(5 * VL.size()));
  421   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(5 * N));
  429                                          ArrayRef<Expr *> VL) {
  430   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(VL.size()));
  438   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(N));
  442 void OMPLinearClause::setPrivates(ArrayRef<Expr *> PL) {
  448 void OMPLinearClause::setInits(ArrayRef<Expr *> IL) {
  454 void OMPLinearClause::setUpdates(ArrayRef<Expr *> UL) {
  460 void OMPLinearClause::setFinals(ArrayRef<Expr *> FL) {
  466 void OMPLinearClause::setUsedExprs(ArrayRef<Expr *> UE) {
  476     SourceLocation ColonLoc, SourceLocation EndLoc, ArrayRef<Expr *> VL,
  477     ArrayRef<Expr *> PL, ArrayRef<Expr *> IL, Expr *Step, Expr *CalcStep,
  477     ArrayRef<Expr *> PL, ArrayRef<Expr *> IL, Expr *Step, Expr *CalcStep,
  477     ArrayRef<Expr *> PL, ArrayRef<Expr *> IL, Expr *Step, Expr *CalcStep,
  477     ArrayRef<Expr *> PL, ArrayRef<Expr *> IL, Expr *Step, Expr *CalcStep,
  478     Stmt *PreInit, Expr *PostUpdate) {
  482       C.Allocate(totalSizeToAlloc<Expr *>(5 * VL.size() + 2 + VL.size() + 1));
  507   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(5 * NumVars + 2 + NumVars  +1));
  521                          SourceLocation EndLoc, ArrayRef<Expr *> VL, Expr *A) {
  521                          SourceLocation EndLoc, ArrayRef<Expr *> VL, Expr *A) {
  522   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(VL.size() + 1));
  532   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(NumVars + 1));
  536 void OMPCopyinClause::setSourceExprs(ArrayRef<Expr *> SrcExprs) {
  543 void OMPCopyinClause::setDestinationExprs(ArrayRef<Expr *> DstExprs) {
  550 void OMPCopyinClause::setAssignmentOps(ArrayRef<Expr *> AssignmentOps) {
  560     SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> SrcExprs,
  560     SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> SrcExprs,
  561     ArrayRef<Expr *> DstExprs, ArrayRef<Expr *> AssignmentOps) {
  561     ArrayRef<Expr *> DstExprs, ArrayRef<Expr *> AssignmentOps) {
  562   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(4 * VL.size()));
  573   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(4 * N));
  577 void OMPCopyprivateClause::setSourceExprs(ArrayRef<Expr *> SrcExprs) {
  584 void OMPCopyprivateClause::setDestinationExprs(ArrayRef<Expr *> DstExprs) {
  591 void OMPCopyprivateClause::setAssignmentOps(ArrayRef<Expr *> AssignmentOps) {
  601     SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> SrcExprs,
  601     SourceLocation EndLoc, ArrayRef<Expr *> VL, ArrayRef<Expr *> SrcExprs,
  602     ArrayRef<Expr *> DstExprs, ArrayRef<Expr *> AssignmentOps) {
  602     ArrayRef<Expr *> DstExprs, ArrayRef<Expr *> AssignmentOps) {
  603   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(4 * VL.size()));
  615   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(4 * N));
  619 void OMPReductionClause::setPrivates(ArrayRef<Expr *> Privates) {
  625 void OMPReductionClause::setLHSExprs(ArrayRef<Expr *> LHSExprs) {
  632 void OMPReductionClause::setRHSExprs(ArrayRef<Expr *> RHSExprs) {
  639 void OMPReductionClause::setReductionOps(ArrayRef<Expr *> ReductionOps) {
  648     SourceLocation EndLoc, SourceLocation ColonLoc, ArrayRef<Expr *> VL,
  650     ArrayRef<Expr *> Privates, ArrayRef<Expr *> LHSExprs,
  650     ArrayRef<Expr *> Privates, ArrayRef<Expr *> LHSExprs,
  651     ArrayRef<Expr *> RHSExprs, ArrayRef<Expr *> ReductionOps, Stmt *PreInit,
  651     ArrayRef<Expr *> RHSExprs, ArrayRef<Expr *> ReductionOps, Stmt *PreInit,
  652     Expr *PostUpdate) {
  653   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(5 * VL.size()));
  668   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(5 * N));
  672 void OMPTaskReductionClause::setPrivates(ArrayRef<Expr *> Privates) {
  678 void OMPTaskReductionClause::setLHSExprs(ArrayRef<Expr *> LHSExprs) {
  685 void OMPTaskReductionClause::setRHSExprs(ArrayRef<Expr *> RHSExprs) {
  692 void OMPTaskReductionClause::setReductionOps(ArrayRef<Expr *> ReductionOps) {
  701     SourceLocation EndLoc, SourceLocation ColonLoc, ArrayRef<Expr *> VL,
  703     ArrayRef<Expr *> Privates, ArrayRef<Expr *> LHSExprs,
  703     ArrayRef<Expr *> Privates, ArrayRef<Expr *> LHSExprs,
  704     ArrayRef<Expr *> RHSExprs, ArrayRef<Expr *> ReductionOps, Stmt *PreInit,
  704     ArrayRef<Expr *> RHSExprs, ArrayRef<Expr *> ReductionOps, Stmt *PreInit,
  705     Expr *PostUpdate) {
  706   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(5 * VL.size()));
  721   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(5 * N));
  725 void OMPInReductionClause::setPrivates(ArrayRef<Expr *> Privates) {
  731 void OMPInReductionClause::setLHSExprs(ArrayRef<Expr *> LHSExprs) {
  738 void OMPInReductionClause::setRHSExprs(ArrayRef<Expr *> RHSExprs) {
  745 void OMPInReductionClause::setReductionOps(ArrayRef<Expr *> ReductionOps) {
  753     ArrayRef<Expr *> TaskgroupDescriptors) {
  763     SourceLocation EndLoc, SourceLocation ColonLoc, ArrayRef<Expr *> VL,
  765     ArrayRef<Expr *> Privates, ArrayRef<Expr *> LHSExprs,
  765     ArrayRef<Expr *> Privates, ArrayRef<Expr *> LHSExprs,
  766     ArrayRef<Expr *> RHSExprs, ArrayRef<Expr *> ReductionOps,
  766     ArrayRef<Expr *> RHSExprs, ArrayRef<Expr *> ReductionOps,
  767     ArrayRef<Expr *> TaskgroupDescriptors, Stmt *PreInit, Expr *PostUpdate) {
  767     ArrayRef<Expr *> TaskgroupDescriptors, Stmt *PreInit, Expr *PostUpdate) {
  768   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(6 * VL.size()));
  784   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(6 * N));
  790                           SourceLocation LParenLoc, Expr *Allocator,
  792                           ArrayRef<Expr *> VL) {
  794   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(VL.size()));
  803   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(N));
  811                                        ArrayRef<Expr *> VL) {
  812   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(VL.size() + 1));
  820   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(N));
  828                         SourceLocation ColonLoc, ArrayRef<Expr *> VL,
  830   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(VL.size() + NumLoops));
  844   void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(N + NumLoops));
  848 void OMPDependClause::setLoopData(unsigned NumLoop, Expr *Cnt) {
  858 Expr *OMPDependClause::getLoopData(unsigned NumLoop) {
  868 const Expr *OMPDependClause::getLoopData(unsigned NumLoop) const {
  901     const ASTContext &C, const OMPVarListLocTy &Locs, ArrayRef<Expr *> Vars,
  903     MappableExprComponentListsRef ComponentLists, ArrayRef<Expr *> UDMapperRefs,
  925       totalSizeToAlloc<Expr *, ValueDecl *, unsigned,
  946       totalSizeToAlloc<Expr *, ValueDecl *, unsigned,
  955     const ASTContext &C, const OMPVarListLocTy &Locs, ArrayRef<Expr *> Vars,
  957     MappableExprComponentListsRef ComponentLists, ArrayRef<Expr *> UDMapperRefs,
  976       totalSizeToAlloc<Expr *, ValueDecl *, unsigned,
  993       totalSizeToAlloc<Expr *, ValueDecl *, unsigned,
 1002     const ASTContext &C, const OMPVarListLocTy &Locs, ArrayRef<Expr *> Vars,
 1004     MappableExprComponentListsRef ComponentLists, ArrayRef<Expr *> UDMapperRefs,
 1023       totalSizeToAlloc<Expr *, ValueDecl *, unsigned,
 1042       totalSizeToAlloc<Expr *, ValueDecl *, unsigned,
 1050 void OMPUseDevicePtrClause::setPrivateCopies(ArrayRef<Expr *> VL) {
 1056 void OMPUseDevicePtrClause::setInits(ArrayRef<Expr *> VL) {
 1063     const ASTContext &C, const OMPVarListLocTy &Locs, ArrayRef<Expr *> Vars,
 1064     ArrayRef<Expr *> PrivateVars, ArrayRef<Expr *> Inits,
 1064     ArrayRef<Expr *> PrivateVars, ArrayRef<Expr *> Inits,
 1084       totalSizeToAlloc<Expr *, ValueDecl *, unsigned,
 1103       totalSizeToAlloc<Expr *, ValueDecl *, unsigned,
 1113                              ArrayRef<Expr *> Vars,
 1133       totalSizeToAlloc<Expr *, ValueDecl *, unsigned,
 1150       totalSizeToAlloc<Expr *, ValueDecl *, unsigned,
 1257   if (auto *E = Node->getChunkSize()) {
 1266   if (auto *Num = Node->getNumForLoops()) {
 1374   if (Expr *Allocator = Node->getAllocator()) {
 1618   if (auto *E = Node->getChunkSize()) {
tools/clang/lib/AST/ParentMap.cpp
  157   } while (S && isa<Expr>(S) && cast<Expr>(S)->IgnoreParenImpCasts() != S);
  157   } while (S && isa<Expr>(S) && cast<Expr>(S)->IgnoreParenImpCasts() != S);
  171 bool ParentMap::isConsumedExpr(Expr* E) const {
  187       return isa<Expr>(P);
tools/clang/lib/AST/SelectorLocationsKind.cpp
   50 SourceLocation getArgLoc<Expr>(Expr *Arg) {
   50 SourceLocation getArgLoc<Expr>(Expr *Arg) {
   64 SourceLocation getArgLoc(unsigned Index, ArrayRef<T*> Args) {
   71                                          ArrayRef<T *> Args,
   98                                ArrayRef<Expr *> Args,
  106                                              ArrayRef<Expr *> Args,
tools/clang/lib/AST/Stmt.cpp
  334 const Expr *ValueStmt::getExprStmt() const {
  337     if (const auto *E = dyn_cast<Expr>(S))
  337     if (const auto *E = dyn_cast<Expr>(S))
  388 const Expr *AsmStmt::getOutputExpr(unsigned i) const {
  404 const Expr *AsmStmt::getInputExpr(unsigned i) const {
  439 Expr *GCCAsmStmt::getOutputExpr(unsigned i) {
  440   return cast<Expr>(Exprs[i]);
  450 Expr *GCCAsmStmt::getInputExpr(unsigned i) {
  451   return cast<Expr>(Exprs[i + NumOutputs]);
  454 void GCCAsmStmt::setInputExpr(unsigned i, Expr *E) {
  737 Expr *MSAsmStmt::getOutputExpr(unsigned i) {
  738   return cast<Expr>(Exprs[i]);
  741 Expr *MSAsmStmt::getInputExpr(unsigned i) {
  742   return cast<Expr>(Exprs[i + NumOutputs]);
  745 void MSAsmStmt::setInputExpr(unsigned i, Expr *E) {
  756                        StringLiteral **constraints, Expr **exprs,
  783                      ArrayRef<StringRef> constraints, ArrayRef<Expr*> exprs,
  799                            ArrayRef<Expr*> exprs,
  830                Stmt *Init, VarDecl *Var, Expr *Cond, Stmt *Then,
  864                        bool IsConstexpr, Stmt *Init, VarDecl *Var, Expr *Cond,
  911 ForStmt::ForStmt(const ASTContext &C, Stmt *Init, Expr *Cond, VarDecl *condVar,
  912                  Expr *Inc, Stmt *Body, SourceLocation FL, SourceLocation LP,
  944                        Expr *Cond)
  970                                Expr *Cond) {
 1008 WhileStmt::WhileStmt(const ASTContext &Ctx, VarDecl *Var, Expr *Cond,
 1027 WhileStmt *WhileStmt::Create(const ASTContext &Ctx, VarDecl *Var, Expr *Cond,
 1072 ReturnStmt::ReturnStmt(SourceLocation RL, Expr *E, const VarDecl *NRVOCandidate)
 1087                                Expr *E, const VarDecl *NRVOCandidate) {
 1102 CaseStmt *CaseStmt::Create(const ASTContext &Ctx, Expr *lhs, Expr *rhs,
 1102 CaseStmt *CaseStmt::Create(const ASTContext &Ctx, Expr *lhs, Expr *rhs,
 1143 SEHExceptStmt::SEHExceptStmt(SourceLocation Loc, Expr *FilterExpr, Stmt *Block)
 1150                                      Expr *FilterExpr, Stmt *Block) {
 1213                            ArrayRef<Expr *> CaptureInits,
 1244                                    ArrayRef<Expr *> CaptureInits,
tools/clang/lib/AST/StmtCXX.cpp
   49                                  Expr *Cond, Expr *Inc, DeclStmt *LoopVar,
   49                                  Expr *Cond, Expr *Inc, DeclStmt *LoopVar,
   65 Expr *CXXForRangeStmt::getRangeInit() {
   72 const Expr *CXXForRangeStmt::getRangeInit() const {
tools/clang/lib/AST/StmtObjC.cpp
   20 ObjCForCollectionStmt::ObjCForCollectionStmt(Stmt *Elem, Expr *Collect,
tools/clang/lib/AST/StmtOpenMP.cpp
   44 void OMPLoopDirective::setCounters(ArrayRef<Expr *> A) {
   50 void OMPLoopDirective::setPrivateCounters(ArrayRef<Expr *> A) {
   57 void OMPLoopDirective::setInits(ArrayRef<Expr *> A) {
   63 void OMPLoopDirective::setUpdates(ArrayRef<Expr *> A) {
   69 void OMPLoopDirective::setFinals(ArrayRef<Expr *> A) {
   75 void OMPLoopDirective::setDependentCounters(ArrayRef<Expr *> A) {
   82 void OMPLoopDirective::setDependentInits(ArrayRef<Expr *> A) {
   88 void OMPLoopDirective::setFinalsConditions(ArrayRef<Expr *> A) {
  579     ArrayRef<OMPClause *> Clauses, Stmt *AssociatedStmt, Expr *ReductionRef) {
  583   void *Mem = C.Allocate(Size + sizeof(Stmt *) + sizeof(Expr *));
  598   void *Mem = C.Allocate(Size + sizeof(Stmt *) + sizeof(Expr *));
  697     ArrayRef<OMPClause *> Clauses, Stmt *AssociatedStmt, Expr *X, Expr *V,
  697     ArrayRef<OMPClause *> Clauses, Stmt *AssociatedStmt, Expr *X, Expr *V,
  698     Expr *E, Expr *UE, bool IsXLHSInRHSPart, bool IsPostfixUpdate) {
  698     Expr *E, Expr *UE, bool IsXLHSInRHSPart, bool IsPostfixUpdate) {
tools/clang/lib/AST/StmtPrinter.cpp
   89       if (S && isa<Expr>(S)) {
  108         PrintExpr(cast<Expr>(S));
  135     void PrintExpr(Expr *E) {
  158     void VisitExpr(Expr *Node) LLVM_ATTRIBUTE_UNUSED {
  343     PrintExpr(cast<Expr>(Node->getElement()));
  984 static bool isImplicitSelf(const Expr *E) {
 1101 static bool printExprAsWritten(raw_ostream &OS, Expr *E,
 1353 static bool isImplicitThis(const Expr *E) {
 2029   if (Optional<Expr *> Size = E->getArraySize()) {
tools/clang/lib/AST/StmtProfile.cpp
  500   if (auto *Num = C->getNumForLoops())
  724   if (Expr *Allocator = C->getAllocator())
  859   if (const Expr *E = S->getReductionRef())
 1029 void StmtProfiler::VisitExpr(const Expr *S) {
tools/clang/lib/AST/TextNodeDumper.cpp
  127   if (const auto *E = dyn_cast<Expr>(Node)) {
  127   if (const auto *E = dyn_cast<Expr>(Node)) {
 1454   if (const auto *Initializer = D->getInitializer()) {
tools/clang/lib/AST/Type.cpp
  118                      ArraySizeModifier sm, unsigned tq, const Expr *sz)
  189                                 const Expr *SizeExpr, ArraySizeModifier SizeMod,
  202                                                  Expr *e, ArraySizeModifier sm,
  213                                       Expr *E) {
  222     Expr *SizeExpr, SourceLocation Loc, VectorType::VectorKind VecKind)
  234                                   QualType ElementType, const Expr *SizeExpr,
  245                                                          Expr *SizeExpr,
  258                                      QualType ElementType, Expr *SizeExpr) {
  265     Expr *AddrSpaceExpr, SourceLocation loc)
  278                                         Expr *AddrSpaceExpr) {
 3017     *getTrailingObjects<Expr *>() = epi.ExceptionSpec.NoexceptExpr;
 3071   if (Expr *NE = getNoexceptExpr())
 3083   if (Expr *NE = getNoexceptExpr())
 3208 TypeOfExprType::TypeOfExprType(Expr *E, QualType can)
 3227                                       const ASTContext &Context, Expr *E) {
 3231 DecltypeType::DecltypeType(Expr *E, QualType underlyingType, QualType can)
 3250 DependentDecltypeType::DependentDecltypeType(const ASTContext &Context, Expr *E)
 3254                                     const ASTContext &Context, Expr *E) {
tools/clang/lib/ASTMatchers/ASTMatchFinder.cpp
  148       if (Expr *ExprNode = dyn_cast_or_null<Expr>(StmtNode))
  148       if (Expr *ExprNode = dyn_cast_or_null<Expr>(StmtNode))
tools/clang/lib/ASTMatchers/ASTMatchersInternal.cpp
  689 const internal::VariadicDynCastAllOfMatcher<Stmt, Expr> expr;
tools/clang/lib/ASTMatchers/Dynamic/Marshallers.h
   75     return Value.isMatcher() && Value.getMatcher().hasTypedMatcher<T>();
   78   static ast_matchers::internal::Matcher<T> get(const VariantValue &Value) {
   79     return Value.getMatcher().getTypedMatcher<T>();
   83     return ArgKind(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
  361     RetTypes.push_back(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
  466       ast_matchers::internal::VariadicDynCastAllOfMatcher<BaseT, DerivedT> Func,
  469         DerivedKind(ast_type_traits::ASTNodeKind::getFromNodeKind<DerivedT>()) {
  778     ast_matchers::internal::VariadicDynCastAllOfMatcher<BaseT, DerivedT>
tools/clang/lib/Analysis/AnalysisDeclContext.cpp
  184   if (const auto *e = dyn_cast<Expr>(stmt))
  184   if (const auto *e = dyn_cast<Expr>(stmt))
  192   if (const auto *e = dyn_cast<Expr>(stmt))
  192   if (const auto *e = dyn_cast<Expr>(stmt))
  617       Expr *Semantic = *it;
tools/clang/lib/Analysis/BodyFarm.cpp
   54   BinaryOperator *makeAssignment(const Expr *LHS, const Expr *RHS, QualType Ty);
   54   BinaryOperator *makeAssignment(const Expr *LHS, const Expr *RHS, QualType Ty);
   57   BinaryOperator *makeComparison(const Expr *LHS, const Expr *RHS,
   57   BinaryOperator *makeComparison(const Expr *LHS, const Expr *RHS,
   68   UnaryOperator *makeDereference(const Expr *Arg, QualType Ty);
   71   Expr *makeIntegralCast(const Expr *Arg, QualType Ty);
   71   Expr *makeIntegralCast(const Expr *Arg, QualType Ty);
   74   ImplicitCastExpr *makeIntegralCastToBoolean(const Expr *Arg);
   77   ImplicitCastExpr *makeLvalueToRvalue(const Expr *Arg, QualType Ty);
   86   ImplicitCastExpr *makeImplicitCast(const Expr *Arg, QualType Ty,
   93   ObjCIvarRefExpr *makeObjCIvarRef(const Expr *Base, const ObjCIvarDecl *IVar);
   96   ReturnStmt *makeReturn(const Expr *RetVal);
  102   MemberExpr *makeMemberExpression(Expr *base, ValueDecl *MemberDecl,
  115 BinaryOperator *ASTMaker::makeAssignment(const Expr *LHS, const Expr *RHS,
  115 BinaryOperator *ASTMaker::makeAssignment(const Expr *LHS, const Expr *RHS,
  122 BinaryOperator *ASTMaker::makeComparison(const Expr *LHS, const Expr *RHS,
  122 BinaryOperator *ASTMaker::makeComparison(const Expr *LHS, const Expr *RHS,
  149 UnaryOperator *ASTMaker::makeDereference(const Expr *Arg, QualType Ty) {
  155 ImplicitCastExpr *ASTMaker::makeLvalueToRvalue(const Expr *Arg, QualType Ty) {
  168 ImplicitCastExpr *ASTMaker::makeImplicitCast(const Expr *Arg, QualType Ty,
  177 Expr *ASTMaker::makeIntegralCast(const Expr *Arg, QualType Ty) {
  177 Expr *ASTMaker::makeIntegralCast(const Expr *Arg, QualType Ty) {
  185 ImplicitCastExpr *ASTMaker::makeIntegralCastToBoolean(const Expr *Arg) {
  195 ObjCIvarRefExpr *ASTMaker::makeObjCIvarRef(const Expr *Base,
  203 ReturnStmt *ASTMaker::makeReturn(const Expr *RetVal) {
  213 MemberExpr *ASTMaker::makeMemberExpression(Expr *base, ValueDecl *MemberDecl,
  251                                                ArrayRef<Expr *> CallArgs) {
  255   Expr *SubExpr;
  278                                               ArrayRef<Expr *> CallArgs) {
  377   SmallVector<Expr *, 5> CallArgs;
  421     Expr *ParamExpr = M.makeDeclRefExpr(PDecl);
  520   Expr *DoneValue =
  548   Expr *GuardCondition = M.makeComparison(LValToRval, DoneValue, BO_NE);
  625   Expr *Comparison =
  645   Expr *BoolVal = M.makeObjCBool(true);
  646   Expr *RetVal = isBoolean ? M.makeIntegralCastToBoolean(BoolVal)
  787   Expr *loadedIVar =
tools/clang/lib/Analysis/CFG.cpp
   68     if (Expr *Ex = VD->getInit())
   75 static bool IsIntegerLiteralConstantExpr(const Expr *E) {
   99 static const Expr *tryTransformToIntOrEnumConstant(const Expr *E) {
   99 static const Expr *tryTransformToIntOrEnumConstant(const Expr *E) {
  113 static std::tuple<const Expr *, BinaryOperatorKind, const Expr *>
  113 static std::tuple<const Expr *, BinaryOperatorKind, const Expr *>
  117   const Expr *MaybeDecl = B->getLHS();
  118   const Expr *Constant = tryTransformToIntOrEnumConstant(B->getRHS());
  144 static bool areExprTypesCompatible(const Expr *E1, const Expr *E2) {
  144 static bool areExprTypesCompatible(const Expr *E1, const Expr *E2) {
  510   llvm::DenseMap<Expr *, const ConstructionContextLayer *>
  521   Expr::EvalResult *switchCond = nullptr;
  528   using CachedBoolEvalsTy = llvm::DenseMap<Expr *, TryResult>;
  616   CFGBlock *VisitNoRecurse(Expr *E, AddStmtChoice asc);
  708                                   Expr *E);
  728       Expr *Arg = E->getArg(i);
  740   void cleanupConstructionContext(Expr *E);
  775   const ConstructionContext *retrieveAndCleanupConstructionContext(Expr *E) {
  922     const Expr *LHSExpr = B->getLHS()->IgnoreParens();
  923     const Expr *RHSExpr = B->getRHS()->IgnoreParens();
  926     const Expr *BoolExpr = RHSExpr;
  961     const Expr *LHSExpr = B->getLHS()->IgnoreParens();
  962     const Expr *RHSExpr = B->getRHS()->IgnoreParens();
  965     const Expr *BoolExpr = RHSExpr;
  978       const Expr *LHSExpr2 = BitOp->getLHS()->IgnoreParens();
  979       const Expr *RHSExpr2 = BitOp->getRHS()->IgnoreParens();
 1047     const Expr *DeclExpr1;
 1048     const Expr *NumExpr1;
 1055     const Expr *DeclExpr2;
 1056     const Expr *NumExpr2;
 1064     if (!Expr::isSameComparisonOperand(DeclExpr1, DeclExpr2))
 1072     Expr::EvalResult L1Result, L2Result;
 1144     const Expr *LHSConstant =
 1146     const Expr *RHSConstant =
 1152     const Expr *Constant = LHSConstant ? LHSConstant : RHSConstant;
 1154     Expr::EvalResult Result;
 1168   bool tryEvaluate(Expr *S, Expr::EvalResult &outResult) {
 1168   bool tryEvaluate(Expr *S, Expr::EvalResult &outResult) {
 1178   TryResult tryEvaluateBool(Expr *S) {
 1204             Expr::EvalResult LHSResult;
 1211             Expr::EvalResult RHSResult;
 1228   TryResult evaluateAsBooleanConditionNoCache(Expr *E) {
 1342     const ConstructionContextLayer *Layer, Expr *E) {
 1390     auto *E = cast<Expr>(Child);
 1390     auto *E = cast<Expr>(Child);
 1465 void CFGBuilder::cleanupConstructionContext(Expr *E) {
 1636   Expr *Init = I->getInit();
 1682 static QualType getReferenceInitTemporaryType(const Expr *Init,
 1704     SmallVector<const Expr *, 2> CommaLHSs;
 1706     const Expr *SkippedInit =
 1986     const Expr *Init = VD->getInit();
 2127   if (Expr *E = dyn_cast<Expr>(S))
 2127   if (Expr *E = dyn_cast<Expr>(S))
 2397   Expr *RHS = B->getRHS()->IgnoreParens();
 2440   Expr *LHS = B->getLHS()->IgnoreParens();
 2520 CFGBlock *CFGBuilder::VisitNoRecurse(Expr *E, AddStmtChoice asc) {
 2549 static bool CanThrow(Expr *E, ASTContext &Ctx) {
 2568     QualType boundType = Expr::findBoundMemberType(C->getCallee());
 2730   const Expr *trueExpr = C->getTrueExpr();
 2760   Expr *condExpr = C->getCond();
 2838   Expr *Init = VD->getInit();
 3065     if (Expr *O = RS->getRetValue())
 3216     if (Expr *CopyExpr = CI.getCopyExpr()) {
 3229     if (Expr *Init = *it) {
 3380     Expr *C = F->getCond();
 3410         if (Expr *Init = VD->getInit()) {
 3632     Expr *Semantic = E->getSemanticExpr(--i);
 3716     Expr *C = W->getCond();
 3740       if (Expr *Init = VD->getInit()) {
 4046   Expr::EvalResult result;
 4048   SaveAndRestore<Expr::EvalResult*> save_switchCond(switchCond,
 4083     if (Expr *Init = VD->getInit()) {
 4101                           const Expr::EvalResult *switchCond,
 4120         if (const Expr *RHS = CS->getRHS()) {
 4374   if (Expr *C = S->getCond()) {
 4647       SmallVector<const Expr *, 2> CommaLHSs;
 4655       for (const Expr *CommaLHS : CommaLHSs) {
 4672       for (Expr *Init : LE->capture_inits()) {
 4971         if (const Expr *Init = var->getInit()) {
 5275   void VisitExpr(Expr *E) {
 5307   if (Expr *IE = I->getInit())
 5463     if (isa<Expr>(S))
 5871 const Expr *CFGBlock::getLastCondition() const {
 5892   return cast<Expr>(Cond)->IgnoreParens();
 5900   Expr *E = nullptr;
tools/clang/lib/Analysis/CallGraph.cpp
   60     Expr *CEE = CE->getCallee()->IgnoreParenImpCasts();
tools/clang/lib/Analysis/ConstructionContext.cpp
  145     const auto *E = cast<Expr>(ParentItem.getStmt());
  145     const auto *E = cast<Expr>(ParentItem.getStmt());
  210     const auto *E = cast<Expr>(TopItem.getStmt());
  210     const auto *E = cast<Expr>(TopItem.getStmt());
tools/clang/lib/Analysis/Consumed.cpp
  476   ConstInfoEntry findInfo(const Expr *E) const {
  483   void insertInfo(const Expr *E, const PropagationInfo &PI) {
  487   void forwardInfo(const Expr *From, const Expr *To);
  487   void forwardInfo(const Expr *From, const Expr *To);
  488   void copyInfo(const Expr *From, const Expr *To, ConsumedState CS);
  488   void copyInfo(const Expr *From, const Expr *To, ConsumedState CS);
  489   ConsumedState getInfo(const Expr *From);
  490   void setInfo(const Expr *To, ConsumedState NS);
  491   void propagateReturnType(const Expr *Call, const FunctionDecl *Fun);
  497   bool handleCall(const CallExpr *Call, const Expr *ObjArg,
  519   PropagationInfo getInfo(const Expr *StmtNode) const {
  536 void ConsumedStmtVisitor::forwardInfo(const Expr *From, const Expr *To) {
  536 void ConsumedStmtVisitor::forwardInfo(const Expr *From, const Expr *To) {
  544 void ConsumedStmtVisitor::copyInfo(const Expr *From, const Expr *To,
  544 void ConsumedStmtVisitor::copyInfo(const Expr *From, const Expr *To,
  558 ConsumedState ConsumedStmtVisitor::getInfo(const Expr *From) {
  568 void ConsumedStmtVisitor::setInfo(const Expr *To, ConsumedState NS) {
  611 bool ConsumedStmtVisitor::handleCall(const CallExpr *Call, const Expr *ObjArg,
  684 void ConsumedStmtVisitor::propagateReturnType(const Expr *Call,
 1236     const Expr *Cond = IfNode->getCond();
tools/clang/lib/Analysis/ExprMutationAnalyzer.cpp
   29   const Expr* Result = &Node;
   87   const StringRef ID = NodeID<T>::value;
   89     if (const Stmt *S = (Analyzer->*Finder)(Nodes.getNodeAs<T>(ID)))
   97 const Stmt *ExprMutationAnalyzer::findMutation(const Expr *Exp) {
  113 const Stmt *ExprMutationAnalyzer::findPointeeMutation(const Expr *Exp) {
  122     const Expr *Exp, llvm::ArrayRef<MutationFinder> Finders,
  142       match(findAll(declRefExpr(to(equalsNode(Dec))).bind(NodeID<Expr>::value)),
  145     const auto *E = RefNodes.getNodeAs<Expr>(NodeID<Expr>::value);
  145     const auto *E = RefNodes.getNodeAs<Expr>(NodeID<Expr>::value);
  145     const auto *E = RefNodes.getNodeAs<Expr>(NodeID<Expr>::value);
  152 bool ExprMutationAnalyzer::isUnevaluated(const Expr *Exp) {
  153   return selectFirst<Expr>(
  154              NodeID<Expr>::value,
  179                          .bind(NodeID<Expr>::value)),
  185   return tryEachMatch<Expr>(Matches, this, &ExprMutationAnalyzer::findMutation);
  195   return tryEachMatch<Expr>(Matches, this,
  205 const Stmt *ExprMutationAnalyzer::findDirectMutation(const Expr *Exp) {
  296 const Stmt *ExprMutationAnalyzer::findMemberMutation(const Expr *Exp) {
  302                         .bind(NodeID<Expr>::value)),
  307 const Stmt *ExprMutationAnalyzer::findArrayElementMutation(const Expr *Exp) {
  311                   .bind(NodeID<Expr>::value)),
  316 const Stmt *ExprMutationAnalyzer::findCastMutation(const Expr *Exp) {
  324                         .bind(NodeID<Expr>::value)),
  338 const Stmt *ExprMutationAnalyzer::findRangeLoopMutation(const Expr *Exp) {
  350 const Stmt *ExprMutationAnalyzer::findReferenceMutation(const Expr *Exp) {
  360                         .bind(NodeID<Expr>::value)),
  384 const Stmt *ExprMutationAnalyzer::findFunctionArgMutation(const Expr *Exp) {
  396                   .bind(NodeID<Expr>::value)),
  399     const auto *Exp = Nodes.getNodeAs<Expr>(NodeID<Expr>::value);
  399     const auto *Exp = Nodes.getNodeAs<Expr>(NodeID<Expr>::value);
  399     const auto *Exp = Nodes.getNodeAs<Expr>(NodeID<Expr>::value);
tools/clang/lib/Analysis/LiveVariables.cpp
  238     if (const Expr *Ex = dyn_cast<Expr>(S))
  238     if (const Expr *Ex = dyn_cast<Expr>(S))
  265   if (isa<Expr>(S)) {
  282       if (Expr *ImplicitObj = CE->getImplicitObjectArgument()) {
  308       Expr *child = cast<PseudoObjectExpr>(S)->getResultExpr();
  378     Expr *LHS = B->getLHS()->IgnoreParens();
  443   else if ((DR = dyn_cast<DeclRefExpr>(cast<Expr>(element)->IgnoreParens()))) {
  463   const Expr *subEx = UE->getArgumentExpr();
tools/clang/lib/Analysis/ReachableCode.cpp
   33 static bool isEnumConstant(const Expr *Ex) {
   40 static bool isTrivialExpression(const Expr *Ex) {
   53       const Expr *Cond = DS->getCond()->IgnoreParenCasts();
   96           if (const Expr *RE = RS->getRetValue()) {
  195   if (const auto *Ex = dyn_cast<Expr>(S))
  195   if (const auto *Ex = dyn_cast<Expr>(S))
  198   if (const auto *Ex = dyn_cast<Expr>(S))
  198   if (const auto *Ex = dyn_cast<Expr>(S))
  207   if (const Expr *Ex = dyn_cast<Expr>(S))
  207   if (const Expr *Ex = dyn_cast<Expr>(S))
  225       const Expr *E = cast<Expr>(S);
  225       const Expr *E = cast<Expr>(S);
  550   if (const Expr *Ex = dyn_cast<Expr>(S))
  550   if (const Expr *Ex = dyn_cast<Expr>(S))
  554     case Expr::BinaryOperatorClass: {
  558     case Expr::UnaryOperatorClass: {
  563     case Expr::CompoundAssignOperatorClass: {
  569     case Expr::BinaryConditionalOperatorClass:
  570     case Expr::ConditionalOperatorClass: {
  575     case Expr::MemberExprClass: {
  580     case Expr::ArraySubscriptExprClass: {
  586     case Expr::CStyleCastExprClass: {
  591     case Expr::CXXFunctionalCastExprClass: {
  599     case Expr::ObjCBridgedCastExprClass: {
  637         const Expr *Inc = FS->getInc();
tools/clang/lib/Analysis/ThreadSafety.cpp
   70                             const Expr *MutexExp, const NamedDecl *D,
   71                             const Expr *DeclExp, StringRef Kind) {
  395     const Expr *Exp = nullptr;
  407     VarDefinition(const NamedDecl *D, const Expr *E, Context C)
  439   const Expr* lookupExpr(const NamedDecl *D, Context &Ctx) {
  486       const Expr *Exp = VarDefinitions[i].Exp;
  528   Context addDefinition(const NamedDecl *D, const Expr *Exp, Context Ctx) {
  546   Context updateDefinition(const NamedDecl *D, Expr *Exp, Context Ctx) {
  612       const Expr *E = VD->getInit();
  631   Expr *LHSExp = BO->getLHS()->IgnoreParenCasts();
 1037   void getMutexIDs(CapExprSet &Mtxs, AttrType *Attr, const Expr *Exp,
 1041   void getMutexIDs(CapExprSet &Mtxs, AttrType *Attr, const Expr *Exp,
 1044                    Expr *BrE, bool Neg);
 1089         for (const auto *Arg : A->args()) {
 1105         for (const auto *Arg : A->args()) {
 1190 static const ValueDecl *getValueDecl(const Expr *Exp) {
 1264   for (const auto *Arg : A->args()) {
 1350                                        const Expr *Exp, const NamedDecl *D,
 1365   for (const auto *Arg : Attr->args()) {
 1382                                        const Expr *Exp, const NamedDecl *D,
 1385                                        Expr *BrE, bool Neg) {
 1406 static bool getStaticBooleanValue(Expr *E, bool &TCond) {
 1442     const Expr *E = LocalVarMap.lookupExpr(DRE->getDecl(), C);
 1579   void warnIfMutexNotHeld(const NamedDecl *D, const Expr *Exp, AccessKind AK,
 1580                           Expr *MutexExp, ProtectedOperationKind POK,
 1582   void warnIfMutexHeld(const NamedDecl *D, const Expr *Exp, Expr *MutexExp,
 1582   void warnIfMutexHeld(const NamedDecl *D, const Expr *Exp, Expr *MutexExp,
 1585   void checkAccess(const Expr *Exp, AccessKind AK,
 1587   void checkPtAccess(const Expr *Exp, AccessKind AK,
 1590   void handleCall(const Expr *Exp, const NamedDecl *D, VarDecl *VD = nullptr);
 1613 void BuildLockset::warnIfMutexNotHeld(const NamedDecl *D, const Expr *Exp,
 1614                                       AccessKind AK, Expr *MutexExp,
 1676 void BuildLockset::warnIfMutexHeld(const NamedDecl *D, const Expr *Exp,
 1677                                    Expr *MutexExp, StringRef DiagKind) {
 1698 void BuildLockset::checkAccess(const Expr *Exp, AccessKind AK,
 1709       if (const auto *E = VD->getInit()) {
 1754 void BuildLockset::checkPtAccess(const Expr *Exp, AccessKind AK,
 1801 void BuildLockset::handleCall(const Expr *Exp, const NamedDecl *D,
 1892         for (auto *Arg : A->args()) {
 1908         for (auto *Arg : A->args())
 2057         const Expr *Target = OE->getArg(0);
 2058         const Expr *Source = OE->getArg(1);
 2073         const Expr *Obj = OE->getArg(0);
 2097     const Expr* Source = Exp->getArg(0);
 2122 static Expr *buildFakeCtorCall(CXXConstructorDecl *CD, ArrayRef<Expr *> Args,
 2122 static Expr *buildFakeCtorCall(CXXConstructorDecl *CD, ArrayRef<Expr *> Args,
 2137       Expr *E = VD->getInit();
tools/clang/lib/Analysis/ThreadSafetyCommon.cpp
   40 std::string threadSafety::getSourceLiteralString(const Expr *CE) {
   83 static bool isCalleeArrow(const Expr *E) {
   95 CapabilityExpr SExprBuilder::translateAttrExpr(const Expr *AttrExp,
   97                                                const Expr *DeclExp,
  151 CapabilityExpr SExprBuilder::translateAttrExpr(const Expr *AttrExp,
  260     return new (Arena) til::Literal(cast<Expr>(S));
  376                                             const Expr *SelfE) {
  394   for (const auto *Arg : CE->arguments()) {
  494   const Expr *LHS = BO->getLHS();
  495   const Expr *RHS = BO->getRHS();
  617       Expr *E = VD->getInit();
tools/clang/lib/Analysis/UninitializedValues.cpp
  296 static const Expr *stripCasts(ASTContext &C, const Expr *Ex) {
  296 static const Expr *stripCasts(ASTContext &C, const Expr *Ex) {
  312 static FindVarResult findVar(const Expr *E, const DeclContext *DC) {
  343   void classify(const Expr *E, Class C);
  376   if (Expr *Init = VD->getInit()) {
  385 void ClassifyRefs::classify(const Expr *E, Class C) {
  461     classify(cast<Expr>(S), Use);
  486       const Expr *Ex = stripCasts(DC->getParentASTContext(), *I);
  532   void reportUse(const Expr *ex, const VarDecl *vd);
  547   FindVarResult findVar(const Expr *ex) {
  551   UninitUse getUninitUse(const Expr *ex, const VarDecl *vd, Value v) {
  702 void TransferFunctions::reportUse(const Expr *ex, const VarDecl *vd) {
tools/clang/lib/Analysis/plugins/SampleAnalyzer/MainCallChecker.cpp
   20   const Expr *Callee = CE->getCallee();
tools/clang/lib/CodeGen/Address.h
  108 template <class U> inline U cast(CodeGen::Address addr) {
tools/clang/lib/CodeGen/CGAtomic.cpp
  656 EmitValToTemp(CodeGenFunction &CGF, Expr *E) {
 2005 void CodeGenFunction::EmitAtomicInit(Expr *init, LValue dest) {
tools/clang/lib/CodeGen/CGBlocks.cpp
  435   const Expr *init = var->getInit();
 1098     } else if (const Expr *copyExpr = CI.getCopyExpr()) {
 2387   const Expr *CopyExpr;
 2391                   const Expr *copyExpr)
 2623     const Expr *copyExpr =
tools/clang/lib/CodeGen/CGBuiltin.cpp
  555 CodeGenFunction::evaluateOrEmitBuiltinObjectSize(const Expr *E, unsigned Type,
  575 CodeGenFunction::emitBuiltinObjectSize(const Expr *E, unsigned Type,
 1092 Value *CodeGenFunction::EmitCheckedArgForBuiltin(const Expr *E,
 1249     } else if (const Expr *TheExpr = Item.getExpr()) {
 1309 EmitCheckedMixedSignMultiply(CodeGenFunction &CGF, const clang::Expr *Op1,
 1310                              WidthAndSignedness Op1Info, const clang::Expr *Op2,
 1312                              const clang::Expr *ResultArg, QualType ResultQTy,
 1319   const clang::Expr *SignedOp = Op1Info.Signed ? Op1 : Op2;
 1320   const clang::Expr *UnsignedOp = Op1Info.Signed ? Op2 : Op1;
 1536   Expr::EvalResult Result;
 1855     const Expr *Arg0 = E->getArg(0)->IgnoreImpCasts();
 2043     const Expr *Ptr = E->getArg(0);
 2104     const Expr *Arg = E->getArg(0);
 2412     Expr::EvalResult SizeResult, DstSizeResult;
 2438     Expr::EvalResult SizeResult, DstSizeResult;
 2478     Expr::EvalResult SizeResult, DstSizeResult;
 2691     const Expr *Arg = E->getArg(0);
 3113     for (const Expr *Arg : E->arguments()) {
 3140     const Expr *AnnotationStrExpr = E->getArg(1)->IgnoreParenCasts();
 3214     const clang::Expr *LeftArg = E->getArg(0);
 3215     const clang::Expr *RightArg = E->getArg(1);
 3216     const clang::Expr *ResultArg = E->getArg(2);
 3383     const Expr *Chain = E->getArg(1);
 3859               getContext(), Expr::NPC_ValueDependentIsNotNull)) {
 3870               getContext(), Expr::NPC_ValueDependentIsNotNull)) {
 5204   const Expr *Arg = E->getArg(0);
 5242   const Expr *Arg = E->getArg(E->getNumArgs() - 1);
 5925     const Expr *SysRegStrExpr = E->getArg(0)->IgnoreParenCasts();
 6019     Expr::EvalResult Result;
 6625   const Expr *Arg = E->getArg(E->getNumArgs()-1);
 6932   const Expr *Arg = E->getArg(E->getNumArgs() - 1);
 7247     Expr::EvalResult Result;
 7492   const Expr *Arg = E->getArg(E->getNumArgs()-1);
 9437   const Expr *Arg = E->getArg(0);
10005   const Expr *CPUExpr = E->getArg(0)->IgnoreParenCasts();
10068   const Expr *FeatureExpr = E->getArg(0)->IgnoreParenCasts();
tools/clang/lib/CodeGen/CGCXXABI.cpp
   41     CodeGenFunction &CGF, const Expr *E, Address This,
   58 CGCXXABI::EmitMemberDataPointerAddress(CodeGenFunction &CGF, const Expr *E,
tools/clang/lib/CodeGen/CGCXXABI.h
  155       CodeGenFunction &CGF, const Expr *E, Address This,
  161   EmitMemberDataPointerAddress(CodeGenFunction &CGF, const Expr *E,
tools/clang/lib/CodeGen/CGCall.cpp
 3195 static const Expr *maybeGetUnaryAddrOfOperand(const Expr *E) {
 3195 static const Expr *maybeGetUnaryAddrOfOperand(const Expr *E) {
 3212   if (const Expr *lvExpr = maybeGetUnaryAddrOfOperand(CRE->getSubExpr())) {
 3518   DisableDebugLocationUpdates(CodeGenFunction &CGF, const Expr *E) : CGF(CGF) {
 3557 void CodeGenFunction::EmitCallArg(CallArgList &args, const Expr *E,
 3626 QualType CodeGenFunction::getVarArgType(const Expr *Arg) {
 3637                                  Expr::NPC_ValueDependentIsNotNull)) {
 4566       if (const auto *Offset = AA->getOffset())
tools/clang/lib/CodeGen/CGClass.cpp
  129 CodeGenFunction::EmitCXXMemberDataPointerAddress(const Expr *E, Address base,
  527 static bool BaseInitializerUsesThis(ASTContext &C, const Expr *Init) {
  669                                               Expr *Init) {
 1180         Expr *DstPtr = CE->getArg(0);
 1192         Expr *SrcPtr = CE->getArg(1);
 1552     if (Expr *ThisArg = DD->getOperatorDeleteThisArg())
 2058     const Expr *Arg = E->getArg(0);
tools/clang/lib/CodeGen/CGCoroutine.cpp
  132 static bool memberCallExpressionCanThrow(const Expr *E) {
  179   auto *E = S.getCommonExpr();
  277   const Expr *RV = S.getOperand();
  292   const auto *RE = E->getResumeExpr();
  356       Expr const *InitExpr = VD->getInit();
  734   for (const Expr *Arg : E->arguments())
tools/clang/lib/CodeGen/CGDebugInfo.cpp
  121 ApplyDebugLocation::ApplyDebugLocation(CodeGenFunction &CGF, const Expr *E)
 1834       const Expr *E = TA.getAsExpr();
 2669       if (Expr *Size = VAT->getSizeExpr()) {
 2670         Expr::EvalResult Result;
tools/clang/lib/CodeGen/CGDebugInfo.h
  723   ApplyDebugLocation(CodeGenFunction &CGF, const Expr *E);
tools/clang/lib/CodeGen/CGDecl.cpp
  632   if (const Expr *e = dyn_cast<Expr>(s)) {
  632   if (const Expr *e = dyn_cast<Expr>(s)) {
  656 static bool isAccessedBy(const ValueDecl *decl, const Expr *e) {
  664                                    const LValue &destLV, const Expr *init) {
  679       const Expr *srcExpr = castExpr->getSubExpr();
  740 void CodeGenFunction::EmitScalarInit(const Expr *init, const ValueDecl *D,
 1583 static bool isCapturedBy(const VarDecl &, const Expr *);
 1588   if (const Expr *E = dyn_cast<Expr>(S))
 1588   if (const Expr *E = dyn_cast<Expr>(S))
 1598 static bool isCapturedBy(const VarDecl &Var, const Expr *E) {
 1617       if (const auto *BIE = dyn_cast<Expr>(BI)) {
 1617       if (const auto *BIE = dyn_cast<Expr>(BI)) {
 1625                 const Expr *Init = VD->getInit();
 1647 bool CodeGenFunction::isTrivialInitializer(const Expr *Init) {
 1753   const Expr *Init = D.getInit();
 1867 void CodeGenFunction::EmitExprAsInit(const Expr *init, const ValueDecl *D,
tools/clang/lib/CodeGen/CGDeclCXX.cpp
   39   const Expr *Init = D.getInit();
  176   const Expr *Init = D.getInit();
tools/clang/lib/CodeGen/CGException.cpp
  377 void CodeGenFunction::EmitAnyExprToExn(const Expr *e, Address addr) {
  425   if (const Expr *SubExpr = E->getSubExpr()) {
 1897   const Expr *FilterExpr = Except.getFilterExpr();
tools/clang/lib/CodeGen/CGExpr.cpp
  164 llvm::Value *CodeGenFunction::EvaluateExprAsBool(const Expr *E) {
  182 void CodeGenFunction::EmitIgnoredExpr(const Expr *E) {
  194 RValue CodeGenFunction::EmitAnyExpr(const Expr *E,
  213 RValue CodeGenFunction::EmitAnyExprToTemp(const Expr *E) {
  223 void CodeGenFunction::EmitAnyExprToMem(const Expr *E,
  255                      const Expr *E, Address ReferenceTemporary) {
  372                                         const Expr *Inner,
  420   const Expr *E = M->GetTemporaryExpr();
  472   SmallVector<const Expr *, 2> CommaLHSs;
  593 CodeGenFunction::EmitReferenceBindingToExpr(const Expr *E) {
  858 static bool isFlexibleArrayMemberExpr(const Expr *E) {
  886 llvm::Value *CodeGenFunction::LoadPassedObjectSize(const Expr *E,
  928     CodeGenFunction &CGF, const Expr *Base, QualType &IndexedType) {
  959 void CodeGenFunction::EmitBoundsCheck(const Expr *E, const Expr *Base,
  959 void CodeGenFunction::EmitBoundsCheck(const Expr *E, const Expr *Base,
 1036 Address CodeGenFunction::EmitPointerWithAlignment(const Expr *E,
 1170 RValue CodeGenFunction::EmitUnsupportedRValue(const Expr *E,
 1176 LValue CodeGenFunction::EmitUnsupportedLValue(const Expr *E,
 1184 bool CodeGenFunction::IsWrappedCXXThis(const Expr *Obj) {
 1185   const Expr *Base = Obj;
 1207 LValue CodeGenFunction::EmitCheckedLValue(const Expr *E, TypeCheckKind TCK) {
 1243 LValue CodeGenFunction::EmitLValue(const Expr *E) {
 1248   case Expr::ObjCPropertyRefExprClass:
 1251   case Expr::ObjCSelectorExprClass:
 1253   case Expr::ObjCIsaExprClass:
 1255   case Expr::BinaryOperatorClass:
 1257   case Expr::CompoundAssignOperatorClass: {
 1265   case Expr::CallExprClass:
 1266   case Expr::CXXMemberCallExprClass:
 1267   case Expr::CXXOperatorCallExprClass:
 1268   case Expr::UserDefinedLiteralClass:
 1270   case Expr::CXXRewrittenBinaryOperatorClass:
 1272   case Expr::VAArgExprClass:
 1274   case Expr::DeclRefExprClass:
 1276   case Expr::ConstantExprClass:
 1278   case Expr::ParenExprClass:
 1280   case Expr::GenericSelectionExprClass:
 1282   case Expr::PredefinedExprClass:
 1284   case Expr::StringLiteralClass:
 1286   case Expr::ObjCEncodeExprClass:
 1288   case Expr::PseudoObjectExprClass:
 1290   case Expr::InitListExprClass:
 1292   case Expr::CXXTemporaryObjectExprClass:
 1293   case Expr::CXXConstructExprClass:
 1295   case Expr::CXXBindTemporaryExprClass:
 1297   case Expr::CXXUuidofExprClass:
 1299   case Expr::LambdaExprClass:
 1302   case Expr::ExprWithCleanupsClass: {
 1320   case Expr::CXXDefaultArgExprClass: {
 1325   case Expr::CXXDefaultInitExprClass: {
 1330   case Expr::CXXTypeidExprClass:
 1333   case Expr::ObjCMessageExprClass:
 1335   case Expr::ObjCIvarRefExprClass:
 1337   case Expr::StmtExprClass:
 1339   case Expr::UnaryOperatorClass:
 1341   case Expr::ArraySubscriptExprClass:
 1343   case Expr::OMPArraySectionExprClass:
 1345   case Expr::ExtVectorElementExprClass:
 1347   case Expr::MemberExprClass:
 1349   case Expr::CompoundLiteralExprClass:
 1351   case Expr::ConditionalOperatorClass:
 1353   case Expr::BinaryConditionalOperatorClass:
 1355   case Expr::ChooseExprClass:
 1357   case Expr::OpaqueValueExprClass:
 1359   case Expr::SubstNonTypeTemplateParmExprClass:
 1361   case Expr::ImplicitCastExprClass:
 1362   case Expr::CStyleCastExprClass:
 1363   case Expr::CXXFunctionalCastExprClass:
 1364   case Expr::CXXStaticCastExprClass:
 1365   case Expr::CXXDynamicCastExprClass:
 1366   case Expr::CXXReinterpretCastExprClass:
 1367   case Expr::CXXConstCastExprClass:
 1368   case Expr::ObjCBridgedCastExprClass:
 1371   case Expr::MaterializeTemporaryExprClass:
 1374   case Expr::CoawaitExprClass:
 1376   case Expr::CoyieldExprClass:
 1449   Expr::EvalResult result;
 1515     const CodeGenFunction::ConstantEmission &Constant, Expr *E) {
 2187 static void setObjCGCLValueClass(const ASTContext &Ctx, const Expr *E,
 2361                                       const Expr *E, const VarDecl *VD) {
 2421                                      const Expr *E, const FunctionDecl *FD) {
 3314 Address CodeGenFunction::EmitArrayToPointerDecay(const Expr *E,
 3351 static const Expr *isSimpleArrayDecayOperand(const Expr *E) {
 3351 static const Expr *isSimpleArrayDecayOperand(const Expr *E) {
 3358   const Expr *SubExpr = CE->getSubExpr();
 3563   } else if (const Expr *Array = isSimpleArrayDecayOperand(E->getBase())) {
 3607 static Address emitOMPArraySectionBase(CodeGenFunction &CGF, const Expr *Base,
 3765   } else if (const Expr *Array = isSimpleArrayDecayOperand(E->getBase())) {
 3863   Expr *BaseExpr = E->getBase();
 4172   const Expr *InitExpr = E->getInitializer();
 4195                                                     const Expr *Operand) {
 4215   const Expr *condExpr = expr->getCond();
 4218     const Expr *live = expr->getTrueExpr(), *dead = expr->getFalseExpr();
 4555 CGCallee CodeGenFunction::EmitCallee(const Expr *E) {
 4744   const Expr *BaseExpr = E->getBase();
 5022   const Expr *resultExpr = E->getResultExpr();
 5027     const Expr *semantic = *i;
tools/clang/lib/CodeGen/CGExprAgg.cpp
   56   void withReturnValueSlot(const Expr *E,
   71   void EmitAggLoadOfLValue(const Expr *E);
   86   void EmitMoveFromReturnSlot(const Expr *E, RValue Src);
  103   void Visit(Expr *E) {
  200   void EmitInitializationToLValue(Expr *E, LValue Address);
  218 void AggExprEmitter::EmitAggLoadOfLValue(const Expr *E) {
  248     const Expr *E, llvm::function_ref<RValue(ReturnValueSlot)> EmitCall) {
  447 static bool isTrivialFiller(Expr *E) {
  565   Expr *filler = E->getArrayFiller();
  667 static Expr *findPeephole(Expr *op, CastKind kind) {
  667 static Expr *findPeephole(Expr *op, CastKind kind) {
  766     if (Expr *op = findPeephole(E->getSubExpr(), peepholeTarget)) {
 1074 static bool isBlockVarRef(const Expr *E) {
 1109     if (const Expr *src = op->getSourceExpr())
 1361 static bool isSimpleZero(const Expr *E, CodeGenFunction &CGF) {
 1389 AggExprEmitter::EmitInitializationToLValue(Expr *E, LValue LV) {
 1746 static CharUnits GetNumNonZeroBytesInInit(const Expr *E, CodeGenFunction &CGF) {
 1782         const Expr *E = ILE->getInit(ILEElement++);
 1806 static void CheckAggExprForMemSetUse(AggValueSlot &Slot, const Expr *E,
 1851 void CodeGenFunction::EmitAggExpr(const Expr *E, AggValueSlot Slot) {
 1863 LValue CodeGenFunction::EmitAggExprToLValue(const Expr *E) {
tools/clang/lib/CodeGen/CGExprCXX.cpp
  125     Expr *BaseExpr = E->getBase();
  169 static CXXRecordDecl *getCXXRecord(const Expr *E) {
  181   const Expr *callee = CE->getCallee()->IgnoreParens();
  200   const Expr *Base = ME->getBase();
  209     const Expr *Base) {
  222     const Expr *Inner = Base->ignoreParenBaseCasts();
  324     auto *IOA = CMCE->getImplicitObjectArgument();
  418   const Expr *BaseExpr = BO->getLHS();
  419   const Expr *MemFnExpr = BO->getRHS();
  639                                                  const Expr *Exp) {
  935 static void StoreAnyExprIntoOneUnit(CodeGenFunction &CGF, const Expr *Init,
  976   const Expr *Init = E->getInitializer();
 1278   else if (const Expr *Init = E->getInitializer())
 1566     const Expr *arg = *E->placement_arguments().begin();
 1883         const Expr *Base = DE->getArgument();
 2015   const Expr *Arg = E->getArgument();
 2071 static bool isGLValueFromPointerDeref(const Expr *E) {
 2103 static llvm::Value *EmitTypeidFromVTable(CodeGenFunction &CGF, const Expr *E,
tools/clang/lib/CodeGen/CGExprComplex.cpp
   72   ComplexPairTy EmitLoadOfLValue(const Expr *E) {
   93   ComplexPairTy Visit(Expr *E) {
  102   ComplexPairTy VisitExpr(Expr *S);
  126                              Expr *E) {
  149   ComplexPairTy VisitArraySubscriptExpr(Expr *E) { return EmitLoadOfLValue(E); }
  171   ComplexPairTy EmitCast(CastKind CK, Expr *Op, QualType DestTy);
  203   ComplexPairTy VisitUnaryDeref(const Expr *E) { return EmitLoadOfLValue(E); }
  391 ComplexPairTy ComplexExprEmitter::VisitExpr(Expr *E) {
  450 ComplexPairTy ComplexExprEmitter::EmitCast(CastKind CK, Expr *Op,
 1106 ComplexPairTy CodeGenFunction::EmitComplexExpr(const Expr *E, bool IgnoreReal,
 1115 void CodeGenFunction::EmitComplexExprIntoLValue(const Expr *E, LValue dest,
tools/clang/lib/CodeGen/CGExprConstant.cpp
  625   if (Expr *Filler = Updater->getArrayFiller()) {
  636     Expr *Init = nullptr;
  689     Expr *Init = nullptr;
 1031     Expr *subExpr = E->getSubExpr();
 1193     if (Expr *filler = ILE->getArrayFiller()) {
 1208       Expr *Init = ILE->getInit(i);
 1289       Expr *Arg = E->getArg(0);
 1350 ConstantEmitter::tryEmitAbstract(const Expr *E, QualType destType) {
 1364 ConstantEmitter::emitAbstract(const Expr *E, QualType destType) {
 1395 llvm::Constant *ConstantEmitter::tryEmitForInitializer(const Expr *E,
 1629   const Expr *E = D.getInit();
 1639 ConstantEmitter::tryEmitAbstractForMemory(const Expr *E, QualType destType) {
 1653 llvm::Constant *ConstantEmitter::tryEmitPrivateForMemory(const Expr *E,
 1698 llvm::Constant *ConstantEmitter::tryEmitPrivate(const Expr *E,
 1700   Expr::EvalResult Result;
 1901   return Visit(base.get<const Expr*>());
 2004   SmallVector<const Expr *, 2> CommaLHSs;
 2006   const Expr *Inner = E->GetTemporaryExpr()
tools/clang/lib/CodeGen/CGExprScalar.cpp
   92   const Expr *E;      // Entire expr, for error unsupported.  May not be binop.
  145 static bool MustVisitNullValue(const Expr *E) {
  154                                                         const Expr *E) {
  155   const Expr *Base = E->IgnoreImpCasts();
  168 static bool IsWidenedIntegerOp(const ASTContext &Ctx, const Expr *E) {
  253   LValue EmitLValue(const Expr *E) { return CGF.EmitLValue(E); }
  254   LValue EmitCheckedLValue(const Expr *E, CodeGenFunction::TypeCheckKind TCK) {
  265   void EmitLValueAlignmentAssumption(const Expr *E, Value *V) {
  303   Value *EmitLoadOfLValue(const Expr *E) {
  421   Value *Visit(Expr *E) {
  430   Value *VisitExpr(Expr *S);
  554   Value *VisitExtVectorElementExpr(Expr *E) { return EmitLoadOfLValue(E); }
  817   Value *VisitBinPtrMemD(const Expr *E) { return EmitLoadOfLValue(E); }
  818   Value *VisitBinPtrMemI(const Expr *E) { return EmitLoadOfLValue(E); }
 1583 Value *ScalarExprEmitter::VisitExpr(Expr *E) {
 1724     Expr::EvalResult Result;
 1725     if (E->EvaluateAsInt(Result, CGF.getContext(), Expr::SE_AllowSideEffects)) {
 1807     Expr *IE = E->getInit(i);
 1934   const Expr *E = CE->getSubExpr();
 1957   Expr *E = CE->getSubExpr();
 2038     Expr::EvalResult Result;
 2637   Expr::EvalResult EVResult;
 2654       Expr *IdxExpr = E->getIndexExpr(ON.getArrayExprIndex());
 2769   Expr *Op = E->getSubExpr();
 2786   Expr *Op = E->getSubExpr();
 3165   Expr *pointerOperand = expr->getLHS();
 3167   Expr *indexOperand = expr->getRHS();
 4138 static bool isCheapEnoughToEvaluateUnconditionally(const Expr *E,
 4159   Expr *condExpr = E->getCond();
 4160   Expr *lhsExpr = E->getTrueExpr();
 4161   Expr *rhsExpr = E->getFalseExpr();
 4167     Expr *live = lhsExpr, *dead = rhsExpr;
 4440 Value *CodeGenFunction::EmitScalarExpr(const Expr *E, bool IgnoreResultAssign) {
 4481   Expr *BaseExpr = E->getBase();
tools/clang/lib/CodeGen/CGLoopInfo.cpp
  607       auto *ValueExpr = LH->getValue();
tools/clang/lib/CodeGen/CGObjC.cpp
   63   const Expr *SubExpr = E->getSubExpr();
  117 llvm::Value *CodeGenFunction::EmitObjCCollectionLiteral(const Expr *E,
  166       const Expr *Rhs = ALE->getElement(i);
  177       const Expr *Key = DLE->getKeyValueElement(i).Key;
  184       const Expr *Value = DLE->getKeyValueElement(i).Value;
  290     const Expr *receiver = message->getInstanceReceiver();
  343 static const Expr *findWeakLValue(const Expr *E) {
  343 static const Expr *findWeakLValue(const Expr *E) {
  459   const Expr *SelfInClassMethod = nullptr;
  968   const Expr *getter = propImpl->getGetterCXXConstructor();
 1281   Expr *setter = PID->getSetterCXXAssignment();
 1473   Expr *finalArg = &argLoad;
 1806     elementType = cast<Expr>(S.getElement())->getType();
 1832     elementLValue = EmitLValue(cast<Expr>(S.getElement()));
 1900     elementLValue = EmitLValue(cast<Expr>(S.getElement()));
 2812                                             const Expr *e) {
 2826                                                  const Expr *e) {
 2837 llvm::Value *CodeGenFunction::EmitARCReclaimReturnedObject(const Expr *E,
 2851 static bool shouldEmitSeparateBlockRetain(const Expr *e) {
 2895   Result visit(const Expr *e);
 2928   const Expr *resultExpr = E->getResultExpr();
 2934     const Expr *semantic = *i;
 3091 Result ARCExprEmitter<Impl,Result>::visit(const Expr *e) {
 3240 llvm::Value *CodeGenFunction::EmitARCRetainScalarExpr(const Expr *e) {
 3256 CodeGenFunction::EmitARCRetainAutoreleaseScalarExpr(const Expr *e) {
 3273 llvm::Value *CodeGenFunction::EmitARCExtendBlockObject(const Expr *e) {
 3291 llvm::Value *CodeGenFunction::EmitObjCThrowOperand(const Expr *expr) {
 3323   llvm::Value *visitLValueToRValue(const Expr *e) {
 3329   llvm::Value *visitConsumeObject(const Expr *e) {
 3336   llvm::Value *visitExtendBlockObject(const Expr *e) {
 3341   llvm::Value *visitReclaimReturnedObject(const Expr *e) {
 3347   llvm::Value *visitCall(const Expr *e) {
 3352   llvm::Value *visitExpr(const Expr *e) {
 3359                                                       const Expr *e) {
 3367 llvm::Value *CodeGenFunction::EmitARCUnsafeUnretainedScalarExpr(const Expr *e) {
 3553   Expr *Args[2] = { &DST, &SRC };
 3635   SmallVector<Expr*, 4> ConstructorArgs;
tools/clang/lib/CodeGen/CGObjCGNU.cpp
 3937   if (const Expr *ThrowExpr = S.getThrowExpr()) {
tools/clang/lib/CodeGen/CGObjCMac.cpp
 4765   if (const Expr *ThrowExpr = S.getThrowExpr()) {
 7666   if (const Expr *ThrowExpr = S.getThrowExpr()) {
tools/clang/lib/CodeGen/CGObjCRuntime.cpp
  332   const Expr *lockExpr = S.getSynchExpr();
tools/clang/lib/CodeGen/CGOpenCLRuntime.cpp
   98 llvm::Value *CGOpenCLRuntime::getPipeElemSize(const Expr *PipeArg) {
  108 llvm::Value *CGOpenCLRuntime::getPipeElemAlign(const Expr *PipeArg) {
  130 static const BlockExpr *getBlockExpr(const Expr *E) {
  131   const Expr *Prev = nullptr; // to make sure we do not stuck in infinite loop.
  156 llvm::Function *CGOpenCLRuntime::getInvokeFunction(const Expr *E) {
  161 CGOpenCLRuntime::emitOpenCLEnqueuedBlock(CodeGenFunction &CGF, const Expr *E) {
tools/clang/lib/CodeGen/CGOpenCLRuntime.h
   49   llvm::DenseMap<const Expr *, EnqueuedBlockInfo> EnqueuedBlockMap;
   73   virtual llvm::Value *getPipeElemSize(const Expr *PipeArg);
   77   virtual llvm::Value *getPipeElemAlign(const Expr *PipeArg);
   84                                             const Expr *E);
   97   llvm::Function *getInvokeFunction(const Expr *E);
tools/clang/lib/CodeGen/CGOpenMPRuntime.cpp
  792 getReductionInit(const Expr *ReductionOp) {
  804                                              const Expr *InitOp,
  812     const Expr *LHS = CE->getArg(/*Arg=*/0)->IgnoreParenImpCasts();
  813     const Expr *RHS = CE->getArg(/*Arg=*/1)->IgnoreParenImpCasts();
  861                                  const Expr *Init,
  943 LValue ReductionCodeGen::emitSharedLValue(CodeGenFunction &CGF, const Expr *E) {
  948                                             const Expr *E) {
  971 ReductionCodeGen::ReductionCodeGen(ArrayRef<const Expr *> Shareds,
  972                                    ArrayRef<const Expr *> Privates,
  973                                    ArrayRef<const Expr *> ReductionOps) {
  980   for (const Expr *Ref : Shareds) {
 1152 static const VarDecl *getBaseDecl(const Expr *Ref, const DeclRefExpr *&DE) {
 1155     const Expr *Base = OASE->getBase()->IgnoreParenImpCasts();
 1163     const Expr *Base = ASE->getBase()->IgnoreParenImpCasts();
 1349                           const Expr *CombinerInitializer, const VarDecl *In,
 1414   if (const Expr *Init = D->getInitializer()) {
 2766     const Expr *Init = VD->getAnyInitializer();
 2907   const Expr *Init = VD->getAnyInitializer();
 3011 void CGOpenMPRuntime::emitOMPIfClause(CodeGenFunction &CGF, const Expr *Cond,
 3053                                        const Expr *IfCond) {
 3201                                          SourceLocation Loc, const Expr *Hint) {
 3289     ArrayRef<const Expr *> CopyprivateVars, ArrayRef<const Expr *> DestExprs,
 3289     ArrayRef<const Expr *> CopyprivateVars, ArrayRef<const Expr *> DestExprs,
 3290     ArrayRef<const Expr *> SrcExprs, ArrayRef<const Expr *> AssignmentOps,
 3290     ArrayRef<const Expr *> SrcExprs, ArrayRef<const Expr *> AssignmentOps,
 3344                                        ArrayRef<const Expr *> CopyprivateVars,
 3345                                        ArrayRef<const Expr *> SrcExprs,
 3346                                        ArrayRef<const Expr *> DstExprs,
 3347                                        ArrayRef<const Expr *> AssignmentOps) {
 3460     OpenMPScheduleClauseKind &ScheduleKind, const Expr *&ChunkExpr) const {
 3844 void CGOpenMPRuntime::emitFlush(CodeGenFunction &CGF, ArrayRef<const Expr *>,
 4659                                ArrayRef<const Expr *> PrivateVars,
 4660                                ArrayRef<const Expr *> FirstprivateVars,
 4661                                ArrayRef<const Expr *> LastprivateVars,
 4673   for (const Expr *E : PrivateVars) {
 4684   for (const Expr *E : FirstprivateVars) {
 4695   for (const Expr *E : LastprivateVars) {
 4779     const Expr *Init = VD->getAnyInitializer();
 4857     const Expr *Init = VD->getAnyInitializer();
 4970   for (const Expr *E : Data.PrivateVars) {
 4980   for (const Expr *E : Data.FirstprivateVars) {
 4991   for (const Expr *E : Data.LastprivateVars) {
 5095     const Expr *Device = nullptr;
 5185                                    const Expr *IfCond,
 5228       const Expr *E = Data.Dependences[I].second;
 5380                                        const Expr *IfCond,
 5469     const llvm::function_ref<void(CodeGenFunction &CGF, const Expr *,
 5470                                   const Expr *, const Expr *)> &RedOpGen,
 5470                                   const Expr *, const Expr *)> &RedOpGen,
 5471     const Expr *XExpr = nullptr, const Expr *EExpr = nullptr,
 5471     const Expr *XExpr = nullptr, const Expr *EExpr = nullptr,
 5472     const Expr *UpExpr = nullptr) {
 5541                                   const Expr *ReductionOp) {
 5559     SourceLocation Loc, llvm::Type *ArgsType, ArrayRef<const Expr *> Privates,
 5560     ArrayRef<const Expr *> LHSExprs, ArrayRef<const Expr *> RHSExprs,
 5560     ArrayRef<const Expr *> LHSExprs, ArrayRef<const Expr *> RHSExprs,
 5561     ArrayRef<const Expr *> ReductionOps) {
 5627   for (const Expr *E : ReductionOps) {
 5651                                                   const Expr *ReductionOp,
 5652                                                   const Expr *PrivateRef,
 5671                                     ArrayRef<const Expr *> Privates,
 5672                                     ArrayRef<const Expr *> LHSExprs,
 5673                                     ArrayRef<const Expr *> RHSExprs,
 5674                                     ArrayRef<const Expr *> ReductionOps,
 5724     for (const Expr *E : ReductionOps) {
 5737   for (const Expr *E : Privates) {
 5827     for (const Expr *E : ReductionOps) {
 5860     for (const Expr *E : ReductionOps) {
 5861       const Expr *XExpr = nullptr;
 5862       const Expr *EExpr = nullptr;
 5863       const Expr *UpExpr = nullptr;
 5872       const Expr *RHSExpr = UpExpr;
 5977                                       const Expr *Ref) {
 6072                                            const Expr *ReductionOp,
 6073                                            const Expr *LHS, const Expr *RHS,
 6073                                            const Expr *LHS, const Expr *RHS,
 6074                                            const Expr *PrivateRef) {
 6187     CodeGenFunction &CGF, SourceLocation Loc, ArrayRef<const Expr *> LHSExprs,
 6188     ArrayRef<const Expr *> RHSExprs, const OMPTaskDataTy &Data) {
 6420                                      const Expr *IfCond,
 6540 static bool isTrivial(ASTContext &Ctx, const Expr * E) {
 6543   return (E->isEvaluatable(Ctx, Expr::SE_AllowUndefinedBehavior) ||
 6554       if (const auto *E = dyn_cast<Expr>(S)) {
 6554       if (const auto *E = dyn_cast<Expr>(S)) {
 6624           const Expr *NumTeams =
 6648       const Expr *NumTeams =
 6740           const Expr *Cond = IfClause->getCondition();
 6931         const Expr *Cond = IfClause->getCondition();
 7142     const Expr *IE = nullptr;
 7145     DeferredDevicePtrEntryTy(const Expr *IE, const ValueDecl *VD)
 7170   llvm::Value *getExprTypeSize(const Expr *E) const {
 7206       if (const Expr *LenExpr = OAE->getLength()) {
 7278   bool isFinalArraySectionExpression(const Expr *E) const {
 7289     const Expr *Length = OASE->getLength();
 7307     Expr::EvalResult Result;
 7501     const Expr *AssocExpr = I->getAssociatedExpression();
 7863       for (const auto *D : C->varlists())
 7971         const Expr *IE = L.second.back().getAssociatedExpression();
 9161     llvm::Function *OutlinedFn, llvm::Value *OutlinedFnID, const Expr *IfCond,
 9162     const Expr *Device,
 9920                                          const Expr *NumTeams,
 9921                                          const Expr *ThreadLimit,
 9948     CodeGenFunction &CGF, const OMPExecutableDirective &D, const Expr *IfCond,
 9949     const Expr *Device, const RegionCodeGenTy &CodeGen, TargetDataInfo &Info) {
10075     CodeGenFunction &CGF, const OMPExecutableDirective &D, const Expr *IfCond,
10076     const Expr *Device) {
10686       for (const Expr *E : Attr->uniforms()) {
10700       for (const Expr *E : Attr->aligneds()) {
10724       for (const Expr *E : Attr->linears()) {
10737           Expr::EvalResult Result;
10738           if (!(*SI)->EvaluateAsInt(Result, C, Expr::SE_AllowSideEffects)) {
10756       const Expr *VLENExpr = Attr->getSimdlen();
10807                                        ArrayRef<Expr *> NumIterations) {
10886     const Expr *CounterVal = C->getLoopData(I);
11041 static bool greaterCtxScore(ASTContext &Ctx, const Expr *LHS, const Expr *RHS) {
11041 static bool greaterCtxScore(ASTContext &Ctx, const Expr *LHS, const Expr *RHS) {
11066     const Expr *LHSExpr = nullptr;
11067     const Expr *RHSExpr = nullptr;
11086     const Expr *LHSExpr = nullptr;
11087     const Expr *RHSExpr = nullptr;
11170                                            const Expr *IfCond) {
11177     const Expr *Hint) {
11200     SourceLocation Loc, ArrayRef<const Expr *> CopyprivateVars,
11201     ArrayRef<const Expr *> DestExprs, ArrayRef<const Expr *> SrcExprs,
11201     ArrayRef<const Expr *> DestExprs, ArrayRef<const Expr *> SrcExprs,
11202     ArrayRef<const Expr *> AssignmentOps) {
11292                                     ArrayRef<const Expr *> Vars,
11301                                        const Expr *IfCond,
11309     const Expr *IfCond, const OMPTaskDataTy &Data) {
11314     CodeGenFunction &CGF, SourceLocation Loc, ArrayRef<const Expr *> Privates,
11315     ArrayRef<const Expr *> LHSExprs, ArrayRef<const Expr *> RHSExprs,
11315     ArrayRef<const Expr *> LHSExprs, ArrayRef<const Expr *> RHSExprs,
11316     ArrayRef<const Expr *> ReductionOps, ReductionOptionsTy Options) {
11323     CodeGenFunction &CGF, SourceLocation Loc, ArrayRef<const Expr *> LHSExprs,
11324     ArrayRef<const Expr *> RHSExprs, const OMPTaskDataTy &Data) {
11354                                          SourceLocation Loc, const Expr *IfCond,
11368     llvm::Function *OutlinedFn, llvm::Value *OutlinedFnID, const Expr *IfCond,
11369     const Expr *Device,
11397                                              const Expr *NumTeams,
11398                                              const Expr *ThreadLimit,
11404     CodeGenFunction &CGF, const OMPExecutableDirective &D, const Expr *IfCond,
11405     const Expr *Device, const RegionCodeGenTy &CodeGen, TargetDataInfo &Info) {
11410     CodeGenFunction &CGF, const OMPExecutableDirective &D, const Expr *IfCond,
11411     const Expr *Device) {
11417                                            ArrayRef<Expr *> NumIterations) {
tools/clang/lib/CodeGen/CGOpenMPRuntime.h
   92   SmallVector<const Expr *, 4> PrivateVars;
   93   SmallVector<const Expr *, 4> PrivateCopies;
   94   SmallVector<const Expr *, 4> FirstprivateVars;
   95   SmallVector<const Expr *, 4> FirstprivateCopies;
   96   SmallVector<const Expr *, 4> FirstprivateInits;
   97   SmallVector<const Expr *, 4> LastprivateVars;
   98   SmallVector<const Expr *, 4> LastprivateCopies;
   99   SmallVector<const Expr *, 4> ReductionVars;
  100   SmallVector<const Expr *, 4> ReductionCopies;
  101   SmallVector<const Expr *, 4> ReductionOps;
  102   SmallVector<std::pair<OpenMPDependClauseKind, const Expr *>, 4> Dependences;
  118     const Expr *Ref = nullptr;
  120     const Expr *Private = nullptr;
  122     const Expr *ReductionOp = nullptr;
  123     ReductionData(const Expr *Ref, const Expr *Private, const Expr *ReductionOp)
  123     ReductionData(const Expr *Ref, const Expr *Private, const Expr *ReductionOp)
  123     ReductionData(const Expr *Ref, const Expr *Private, const Expr *ReductionOp)
  137   LValue emitSharedLValue(CodeGenFunction &CGF, const Expr *E);
  139   LValue emitSharedLValueUB(CodeGenFunction &CGF, const Expr *E);
  150   ReductionCodeGen(ArrayRef<const Expr *> Shareds,
  151                    ArrayRef<const Expr *> Privates,
  152                    ArrayRef<const Expr *> ReductionOps);
  195   const Expr *getRefExpr(unsigned N) const { return ClausesData[N].Ref; }
  251   void emitOMPIfClause(CodeGenFunction &CGF, const Expr *Cond,
  903                                 const Expr *IfCond);
  913                                   const Expr *Hint = nullptr);
  938                                 ArrayRef<const Expr *> CopyprivateVars,
  939                                 ArrayRef<const Expr *> DestExprs,
  940                                 ArrayRef<const Expr *> SrcExprs,
  941                                 ArrayRef<const Expr *> AssignmentOps);
 1198   virtual void emitFlush(CodeGenFunction &CGF, ArrayRef<const Expr *> Vars,
 1231                             Address Shareds, const Expr *IfCond,
 1267                                 const Expr *IfCond, const OMPTaskDataTy &Data);
 1290                                         ArrayRef<const Expr *> Privates,
 1291                                         ArrayRef<const Expr *> LHSExprs,
 1292                                         ArrayRef<const Expr *> RHSExprs,
 1293                                         ArrayRef<const Expr *> ReductionOps);
 1297                                    const Expr *ReductionOp,
 1298                                    const Expr *PrivateRef,
 1350                              ArrayRef<const Expr *> Privates,
 1351                              ArrayRef<const Expr *> LHSExprs,
 1352                              ArrayRef<const Expr *> RHSExprs,
 1353                              ArrayRef<const Expr *> ReductionOps,
 1378                                              ArrayRef<const Expr *> LHSExprs,
 1379                                              ArrayRef<const Expr *> RHSExprs,
 1418                               const Expr *IfCond,
 1452                  const Expr *IfCond, const Expr *Device,
 1452                  const Expr *IfCond, const Expr *Device,
 1509   virtual void emitNumTeamsClause(CodeGenFunction &CGF, const Expr *NumTeams,
 1510                                   const Expr *ThreadLimit, SourceLocation Loc);
 1562                                    const Expr *IfCond, const Expr *Device,
 1562                                    const Expr *IfCond, const Expr *Device,
 1575                                             const Expr *IfCond,
 1576                                             const Expr *Device);
 1588                                 ArrayRef<Expr *> NumIterations);
 1622       const Expr *&ChunkExpr) const;
 1736                         const Expr *IfCond) override;
 1746                           const Expr *Hint = nullptr) override;
 1770                         ArrayRef<const Expr *> CopyprivateVars,
 1771                         ArrayRef<const Expr *> DestExprs,
 1772                         ArrayRef<const Expr *> SrcExprs,
 1773                         ArrayRef<const Expr *> AssignmentOps) override;
 1929   void emitFlush(CodeGenFunction &CGF, ArrayRef<const Expr *> Vars,
 1962                     Address Shareds, const Expr *IfCond,
 1996                         QualType SharedsTy, Address Shareds, const Expr *IfCond,
 2042                      ArrayRef<const Expr *> Privates,
 2043                      ArrayRef<const Expr *> LHSExprs,
 2044                      ArrayRef<const Expr *> RHSExprs,
 2045                      ArrayRef<const Expr *> ReductionOps,
 2069                                      ArrayRef<const Expr *> LHSExprs,
 2070                                      ArrayRef<const Expr *> RHSExprs,
 2108                       const Expr *IfCond,
 2140                  const Expr *IfCond, const Expr *Device,
 2140                  const Expr *IfCond, const Expr *Device,
 2178   void emitNumTeamsClause(CodeGenFunction &CGF, const Expr *NumTeams,
 2179                           const Expr *ThreadLimit, SourceLocation Loc) override;
 2190                            const OMPExecutableDirective &D, const Expr *IfCond,
 2191                            const Expr *Device, const RegionCodeGenTy &CodeGen,
 2203                                     const Expr *IfCond,
 2204                                     const Expr *Device) override;
 2209                         ArrayRef<Expr *> NumIterations) override;
tools/clang/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp
  206 static const ValueDecl *getPrivateItem(const Expr *RefExpr) {
  209     const Expr *Base = ASE->getBase()->IgnoreParenImpCasts();
  214     const Expr *Base = OASE->getBase()->IgnoreParenImpCasts();
  399             ArrayRef<const Expr *> Vars;
  406             for (const auto *E : Vars) {
  514     for (const Expr *Arg : E->arguments()) {
  564   void VisitExpr(const Expr *E) {
 1947                                               const Expr *NumTeams,
 1948                                               const Expr *ThreadLimit,
 2016     for (const Expr *E : C->getVarRefs())
 2028     for (const Expr *E : C->privates())
 2475     ArrayRef<llvm::Value *> CapturedVars, const Expr *IfCond) {
 2487     ArrayRef<llvm::Value *> CapturedVars, const Expr *IfCond) {
 2656     ArrayRef<llvm::Value *> CapturedVars, const Expr *IfCond) {
 2746     const Expr *Hint) {
 2963     ArrayRef<const Expr *> Privates, Address SrcBase, Address DestBase,
 2978   for (const Expr *Private : Privates) {
 3168                                               ArrayRef<const Expr *> Privates,
 3238   for (const Expr *Private : Privates) {
 3460     CodeGenModule &CGM, ArrayRef<const Expr *> Privates,
 3622     CodeGenModule &CGM, ArrayRef<const Expr *> Privates,
 3674   for (const Expr *Private : Privates) {
 3727     CodeGenModule &CGM, ArrayRef<const Expr *> Privates,
 3822     CodeGenModule &CGM, ArrayRef<const Expr *> Privates,
 3875   for (const Expr *Private : Privates) {
 3927     CodeGenModule &CGM, ArrayRef<const Expr *> Privates,
 4258     CodeGenFunction &CGF, SourceLocation Loc, ArrayRef<const Expr *> Privates,
 4259     ArrayRef<const Expr *> LHSExprs, ArrayRef<const Expr *> RHSExprs,
 4259     ArrayRef<const Expr *> LHSExprs, ArrayRef<const Expr *> RHSExprs,
 4260     ArrayRef<const Expr *> ReductionOps, ReductionOptionsTy Options) {
 4292   for (const Expr *E : Privates) {
 4354     for (const Expr *DRE : Privates) {
 4420     for (const Expr *E : ReductionOps) {
 4836     const Expr *&ChunkExpr) const {
tools/clang/lib/CodeGen/CGOpenMPRuntimeNVPTX.h
  160                                const Expr *IfCond);
  176                             const Expr *IfCond);
  231   void emitNumTeamsClause(CodeGenFunction &CGF, const Expr *NumTeams,
  232                           const Expr *ThreadLimit, SourceLocation Loc) override;
  288                         const Expr *IfCond) override;
  310                           const Expr *Hint = nullptr) override;
  326                              ArrayRef<const Expr *> Privates,
  327                              ArrayRef<const Expr *> LHSExprs,
  328                              ArrayRef<const Expr *> RHSExprs,
  329                              ArrayRef<const Expr *> ReductionOps,
  389       const Expr *&ChunkExpr) const override;
tools/clang/lib/CodeGen/CGStmt.cpp
  112     EmitIgnoredExpr(cast<Expr>(S));
  408       while (!isa<Expr>(ExprResult)) {
  423       const Expr *E = cast<Expr>(ExprResult);
  423       const Expr *E = cast<Expr>(ExprResult);
 1073   const Expr *RV = S.getRetValue();
 1787 AddVariableConstraints(const std::string &Constraint, const Expr &AsmExpr,
 1850                                            const Expr *InputExpr,
 1856       Expr::EvalResult EVResult;
 1865     Expr::EvalResult Result;
 1873   if (InputExpr->getStmtClass() == Expr::CXXThisExprClass)
 2024     const Expr *OutExpr = S.getOutputExpr(i);
 2100       const Expr *InputExpr = S.getOutputExpr(i);
 2139     const Expr *InputExpr = S.getInputExpr(i);
 2337         const Expr *OutExpr = S.getOutputExpr(i);
tools/clang/lib/CodeGen/CGStmtOpenMP.cpp
  124     for (const auto *E : S.counters()) {
  132       for (const Expr *IRef : C->varlists()) {
  206         for (const Expr *E : UDP->varlists()) {
  216       if (const Expr *E = TG->getReductionRef())
  249 LValue CodeGenFunction::EmitOMPSharedLValue(const Expr *E) {
  387     llvm::DenseMap<const Decl *, std::pair<const Expr *, llvm::Value *>>
  568   llvm::DenseMap<const Decl *, std::pair<const Expr *, llvm::Value *>> VLASizes;
  702                                   const VarDecl *SrcVD, const Expr *Copy) {
  747     for (const auto *D : C->varlists())
  761     for (const Expr *IInit : C->private_copies()) {
  822                 const Expr *Init = VD->getInit();
  882     for (const Expr *IInit : C->private_copies()) {
  913     for (const Expr *AssignOp : C->assignment_ops()) {
  977     for (const Expr *C : LoopDirective->counters()) {
  990     for (const Expr *IInit : C->private_copies()) {
 1048   llvm::DenseMap<const VarDecl *, const Expr *> LoopCountersAndUpdates;
 1051     for (const Expr *F : LoopDirective->finals()) {
 1065     for (const Expr *AssignOp : C->assignment_ops()) {
 1074         if (const Expr *FinalExpr = LoopCountersAndUpdates.lookup(CanonicalVD))
 1094     if (const Expr *PostUpdate = C->getPostUpdateExpr())
 1106   SmallVector<const Expr *, 4> Shareds;
 1107   SmallVector<const Expr *, 4> Privates;
 1108   SmallVector<const Expr *, 4> ReductionOps;
 1109   SmallVector<const Expr *, 4> LHSs;
 1110   SmallVector<const Expr *, 4> RHSs;
 1116     for (const Expr *Ref : C->varlists()) {
 1133   for (const Expr *IRef : Shareds) {
 1209   llvm::SmallVector<const Expr *, 8> Privates;
 1210   llvm::SmallVector<const Expr *, 8> LHSExprs;
 1211   llvm::SmallVector<const Expr *, 8> RHSExprs;
 1212   llvm::SmallVector<const Expr *, 8> ReductionOps;
 1241     if (const Expr *PostUpdate = C->getPostUpdateExpr()) {
 1290   const Expr *IfCond = nullptr;
 1346   for (const Expr *UE : D.updates())
 1353       for (const Expr *UE : C->updates())
 1361   for (const Expr *E : D.finals_conditions()) {
 1394     const Stmt &S, bool RequiresCleanup, const Expr *LoopCond,
 1395     const Expr *IncExpr,
 1448     for (const Expr *Init : C->inits()) {
 1488     for (const Expr *F : C->finals()) {
 1510     if (const Expr *PostUpdate = C->getPostUpdateExpr())
 1523     if (const Expr *AlignmentExpr = Clause->getAlignment()) {
 1528     for (const Expr *E : Clause->varlists()) {
 1557   for (const Expr *E : S.counters()) {
 1603                         const Expr *Cond, llvm::BasicBlock *TrueBlock,
 1612     for (const Expr *I : S.inits()) {
 1619   for (const Expr * E: S.dependent_counters()) {
 1630   for (const Expr *E : S.dependent_inits()) {
 1647     for (const Expr *C : LoopDirective->counters()) {
 1654     for (const Expr *E : C->varlists()) {
 1718   for (const Expr *F : D.finals()) {
 1806   const Expr *IVExpr = S.getIterationVariable();
 1873   const Expr *IVExpr = S.getIterationVariable();
 2036   const Expr *IVExpr = S.getIterationVariable();
 2092   const Expr *IVExpr = S.getIterationVariable();
 2103   Expr *IncExpr;
 2188   const Expr *IVExpr = LS.getIterationVariable();
 2313     const OMPLoopDirective &S, Expr *EUB,
 2362     llvm::DenseSet<const Expr *> EmittedFinals;
 2396       const Expr *ChunkExpr = nullptr;
 2415         Expr::EvalResult Result;
 2553   const Expr *IVExpr = LS.getIterationVariable();
 2772   llvm::SmallVector<const Expr *, 8> CopyprivateVars;
 2773   llvm::SmallVector<const Expr *, 8> DestExprs;
 2774   llvm::SmallVector<const Expr *, 8> SrcExprs;
 2775   llvm::SmallVector<const Expr *, 8> AssignmentOps;
 2826   const Expr *Hint = nullptr;
 2887     const Expr *Cond = Clause->getCondition();
 2899     const Expr *Prio = Clause->getPriority();
 2912     for (const Expr *IInit : C->private_copies()) {
 2926     for (const Expr *IInit : C->private_copies()) {
 2942     for (const Expr *IInit : C->private_copies()) {
 2955   SmallVector<const Expr *, 4> LHSs;
 2956   SmallVector<const Expr *, 4> RHSs;
 2962     for (const Expr *Ref : C->varlists()) {
 2978     for (const Expr *IRef : C->varlists())
 2998       for (const Expr *E : Data.PrivateVars) {
 3005       for (const Expr *E : Data.FirstprivateVars) {
 3013       for (const Expr *E : Data.LastprivateVars) {
 3070     SmallVector<const Expr *, 4> InRedVars;
 3071     SmallVector<const Expr *, 4> InRedPrivs;
 3072     SmallVector<const Expr *, 4> InRedOps;
 3073     SmallVector<const Expr *, 4> TaskgroupDescriptors;
 3078       for (const Expr *Ref : C->varlists()) {
 3218     for (const Expr *IRef : C->varlists())
 3236       for (const Expr *E : Data.FirstprivateVars) {
 3284   const Expr *IfCond = nullptr;
 3326     if (const Expr *E = S.getReductionRef()) {
 3327       SmallVector<const Expr *, 4> LHSs;
 3328       SmallVector<const Expr *, 4> RHSs;
 3335         for (const Expr *Ref : C->varlists()) {
 3375                                             Expr *IncExpr) {
 3458         if (const Expr *Ch = C->getChunkSize()) {
 3505         const Expr *Cond =
 3710                                   const Expr *X, const Expr *V,
 3710                                   const Expr *X, const Expr *V,
 3734                                    const Expr *X, const Expr *E,
 3734                                    const Expr *X, const Expr *E,
 3866                                     const Expr *X, const Expr *E,
 3866                                     const Expr *X, const Expr *E,
 3867                                     const Expr *UE, bool IsXLHSInRHSPart,
 3921                                      bool IsPostfixUpdate, const Expr *V,
 3922                                      const Expr *X, const Expr *E,
 3922                                      const Expr *X, const Expr *E,
 3923                                      const Expr *UE, bool IsXLHSInRHSPart,
 4004                               const Expr *X, const Expr *V, const Expr *E,
 4004                               const Expr *X, const Expr *V, const Expr *E,
 4004                               const Expr *X, const Expr *V, const Expr *E,
 4005                               const Expr *UE, bool IsXLHSInRHSPart,
 4133   const Expr *IfCond = nullptr;
 4144   const Expr *Device = nullptr;
 4239     const Expr *NumTeams = NT ? NT->getNumTeams() : nullptr;
 4240     const Expr *ThreadLimit = TL ? TL->getThreadLimit() : nullptr;
 4607   const Expr *IfCond = nullptr;
 4639   for (const Expr *PvtVarIt : C.private_copies()) {
 4770   const Expr *IfCond = nullptr;
 4775   const Expr *Device = nullptr;
 4795   const Expr *IfCond = nullptr;
 4800   const Expr *Device = nullptr;
 4816   const Expr *IfCond = nullptr;
 4821   const Expr *Device = nullptr;
 4970   const Expr *IfCond = nullptr;
 5042     const Expr *IVExpr = S.getIterationVariable();
 5159   const Expr *IfCond = nullptr;
 5164   const Expr *Device = nullptr;
 5182         for (const Expr *E : LD->counters()) {
tools/clang/lib/CodeGen/CGValue.h
  224   Expr *BaseIvarExp;
  304   Expr *getBaseIvarExp() const { return BaseIvarExp; }
  305   void setBaseIvarExp(Expr *V) { BaseIvarExp = V; }
tools/clang/lib/CodeGen/CodeGenFunction.cpp
 1329 bool CodeGenFunction::ConstantFoldsToSimpleInteger(const Expr *Cond,
 1343 bool CodeGenFunction::ConstantFoldsToSimpleInteger(const Expr *Cond,
 1348   Expr::EvalResult Result;
 1366 void CodeGenFunction::EmitBranchOnBoolExpr(const Expr *Cond,
 1929       if (const Expr *size = vat->getSizeExpr()) {
 2000 Address CodeGenFunction::EmitVAListRef(const Expr* E) {
 2006 Address CodeGenFunction::EmitMSVAListRef(const Expr *E) {
 2060                                               const Expr *E,
tools/clang/lib/CodeGen/CodeGenFunction.h
 1090     static bool shouldBindAsLValue(const Expr *expr) {
 1103                                        const Expr *e) {
 1154     static bool shouldBindAsLValue(const Expr *expr) {
 1390   llvm::DenseMap<const Expr*, llvm::Value*> VLASizeMap;
 1899   void EmitInitializerForField(FieldDecl *Field, LValue LHS, Expr *Init);
 2271   llvm::Value *EvaluateExprAsBool(const Expr *E);
 2274   void EmitIgnoredExpr(const Expr *E);
 2282   RValue EmitAnyExpr(const Expr *E,
 2288   Address EmitVAListRef(const Expr *E);
 2293   Address EmitMSVAListRef(const Expr *E);
 2297   RValue EmitAnyExprToTemp(const Expr *E);
 2301   void EmitAnyExprToMem(const Expr *E, Address Location,
 2304   void EmitAnyExprToExn(const Expr *E, Address Addr);
 2308   void EmitExprAsInit(const Expr *init, const ValueDecl *D, LValue lvalue,
 2387   static bool IsWrappedCXXThis(const Expr *E);
 2645   void EmitBoundsCheck(const Expr *E, const Expr *Base, llvm::Value *Index,
 2645   void EmitBoundsCheck(const Expr *E, const Expr *Base, llvm::Value *Index,
 2674   void EmitScalarInit(const Expr *init, const ValueDecl *D, LValue lvalue,
 2682   bool isTrivialInitializer(const Expr *Init);
 2832   void EmitAlignmentAssumption(llvm::Value *PtrValue, const Expr *E,
 3007                    const Expr *Copy);
 3240       const Stmt &S, bool RequiresCleanup, const Expr *LoopCond,
 3241       const Expr *IncExpr,
 3256   bool EmitOMPWorksharingLoop(const OMPLoopDirective &S, Expr *EUB,
 3262                              const CodeGenLoopTy &CodeGenLoop, Expr *IncExpr);
 3271   LValue EmitOMPSharedLValue(const Expr *E);
 3290     Expr *EUB = nullptr;
 3292     Expr *IncExpr = nullptr;
 3294     Expr *Init = nullptr;
 3296     Expr *Cond = nullptr;
 3298     Expr *NextLB = nullptr;
 3300     Expr *NextUB = nullptr;
 3303                      llvm::Value *Chunk = nullptr, Expr *EUB = nullptr,
 3304                      Expr *IncExpr = nullptr, Expr *Init = nullptr,
 3304                      Expr *IncExpr = nullptr, Expr *Init = nullptr,
 3305                      Expr *Cond = nullptr, Expr *NextLB = nullptr,
 3305                      Expr *Cond = nullptr, Expr *NextLB = nullptr,
 3306                      Expr *NextUB = nullptr)
 3341   RValue EmitUnsupportedRValue(const Expr *E,
 3346   LValue EmitUnsupportedLValue(const Expr *E,
 3365   LValue EmitLValue(const Expr *E);
 3370   LValue EmitCheckedLValue(const Expr *E, TypeCheckKind TCK);
 3375   void EmitAtomicInit(Expr *E, LValue lvalue);
 3523   Address EmitArrayToPointerDecay(const Expr *Array,
 3545     LValue getReferenceLValue(CodeGenFunction &CGF, Expr *refExpr) const {
 3559   llvm::Value *emitScalarConstant(const ConstantEmission &Constant, Expr *E);
 3613   CGCallee EmitCallee(const Expr *E);
 3692                                                bool IsArrow, const Expr *Base);
 3694   Address EmitCXXMemberDataPointerAddress(const Expr *E, Address base,
 3793   llvm::Value *EmitObjCCollectionLiteral(const Expr *E,
 3851   llvm::Value *EmitObjCThrowOperand(const Expr *expr);
 3855   llvm::Value *EmitARCExtendBlockObject(const Expr *expr);
 3856   llvm::Value *EmitARCReclaimReturnedObject(const Expr *e,
 3858   llvm::Value *EmitARCRetainScalarExpr(const Expr *expr);
 3859   llvm::Value *EmitARCRetainAutoreleaseScalarExpr(const Expr *expr);
 3860   llvm::Value *EmitARCUnsafeUnretainedScalarExpr(const Expr *expr);
 3877   RValue EmitReferenceBindingToExpr(const Expr *E);
 3887   llvm::Value *EmitScalarExpr(const Expr *E , bool IgnoreResultAssign = false);
 3903   void EmitAggExpr(const Expr *E, AggValueSlot AS);
 3907   LValue EmitAggExprToLValue(const Expr *E);
 3915   ComplexPairTy EmitComplexExpr(const Expr *E,
 3921   void EmitComplexExprIntoLValue(const Expr *E, LValue dest, bool isInit);
 3996   void EmitSynthesizedCXXCopyCtor(Address Dest, Address Src, const Expr *Exp);
 4048   bool ConstantFoldsToSimpleInteger(const Expr *Cond, bool &Result,
 4054   bool ConstantFoldsToSimpleInteger(const Expr *Cond, llvm::APSInt &Result,
 4062   void EmitBranchOnBoolExpr(const Expr *Cond, llvm::BasicBlock *TrueBlock,
 4094   llvm::Value *EmitCheckedArgForBuiltin(const Expr *E, BuiltinCheckKind Kind);
 4145   void EmitCallArg(CallArgList &args, const Expr *E, QualType ArgType);
 4187                             const Expr *InputExpr, std::string &ConstraintStr);
 4199   llvm::Value *evaluateOrEmitBuiltinObjectSize(const Expr *E, unsigned Type,
 4207   llvm::Value *emitBuiltinObjectSize(const Expr *E, unsigned Type,
 4317   Address EmitPointerWithAlignment(const Expr *Addr,
 4324   llvm::Value *LoadPassedObjectSize(const Expr *E, QualType EltTy);
 4353   QualType getVarArgType(const Expr *Arg);
tools/clang/lib/CodeGen/CodeGenModule.cpp
 3543         const Expr *InitExpr = D->getAnyInitializer(InitDecl);
 3877   const Expr *InitExpr = D->getAnyInitializer(InitDecl);
 5003     const MaterializeTemporaryExpr *E, const Expr *Init) {
 5038   Expr::EvalResult EvalResult;
 5141     Expr *Init = CtorInitExp->getInit();
 5922 CodeGenModule::createOpenCLIntToSamplerConversion(const Expr *E,
tools/clang/lib/CodeGen/CodeGenModule.h
  416   llvm::DenseMap<const Expr*, llvm::Constant *> MaterializedGlobalTemporaryMap;
  958                                            const Expr *Inner);
 1348   createOpenCLIntToSamplerConversion(const Expr *E, CodeGenFunction &CGF);
tools/clang/lib/CodeGen/ConstantEmitter.h
   73   llvm::Constant *tryEmitForInitializer(const Expr *E, LangAS destAddrSpace,
  102   llvm::Constant *emitAbstract(const Expr *E, QualType T);
  107   llvm::Constant *tryEmitAbstract(const Expr *E, QualType T);
  108   llvm::Constant *tryEmitAbstractForMemory(const Expr *E, QualType T);
  130   llvm::Constant *tryEmitPrivate(const Expr *E, QualType T);
  131   llvm::Constant *tryEmitPrivateForMemory(const Expr *E, QualType T);
tools/clang/lib/CodeGen/CoverageMappingGen.cpp
 1030     if (const Expr *Cond = S->getCond()) {
 1163       if (const Expr *RHS = CS->getRHS())
tools/clang/lib/CodeGen/ItaniumCXXABI.cpp
  121                                     const Expr *E,
  128     EmitMemberDataPointerAddress(CodeGenFunction &CGF, const Expr *E,
  576     CodeGenFunction &CGF, const Expr *E, Address ThisAddr,
  787     CodeGenFunction &CGF, const Expr *E, Address Base, llvm::Value *MemPtr,
 4220   const Expr *copyExpr = CatchParam.getInit();
tools/clang/lib/CodeGen/MicrosoftCXXABI.cpp
  596   llvm::Value *AdjustVirtualBase(CodeGenFunction &CGF, const Expr *E,
  650   EmitMemberDataPointerAddress(CodeGenFunction &CGF, const Expr *E,
  673   EmitLoadOfMemberFunctionPointer(CodeGenFunction &CGF, const Expr *E,
 2978     CodeGenFunction &CGF, const Expr *E, const CXXRecordDecl *RD,
 3034     CodeGenFunction &CGF, const Expr *E, Address Base, llvm::Value *MemPtr,
 3324     CodeGenFunction &CGF, const Expr *E, Address This,
 4273   const Expr *SubExpr = E->getSubExpr();
tools/clang/lib/CodeGen/VarBypassDetector.cpp
   43     if (const Expr *Init = VD->getInit())
   60       ((isa<Expr>(S) && !isa<StmtExpr>(S)) ? origParentScope
tools/clang/lib/Edit/RewriteObjCFoundationAPI.cpp
   66   const Expr *Arg = Msg->getArg(0)->IgnoreParenImpCasts();
  109                                          const Expr *Receiver,
  159   const Expr *Rec = Msg->getInstanceReceiver();
  171 static bool subscriptOperatorNeedsParens(const Expr *FullExpr);
  173 static void maybePutParensOnReceiver(const Expr *Receiver, Commit &commit) {
  184   const Expr *Rec = Msg->getInstanceReceiver();
  232   const Expr *Rec = Msg->getInstanceReceiver();
  266   const Expr *Rec = Msg->getInstanceReceiver();
  375 static void objectifyExpr(const Expr *E, Commit &commit);
  411     const Expr *SentinelExpr = Msg->getArg(Msg->getNumArgs() - 1);
  439 static bool getNSArrayObjects(const Expr *E, const NSAPI &NS,
  440                               SmallVectorImpl<const Expr *> &Objs) {
  471       const Expr *SentinelExpr = Msg->getArg(Msg->getNumArgs() - 1);
  528     const Expr *SentinelExpr = Msg->getArg(SentinelIdx);
  565     SmallVector<const Expr *, 8> Vals;
  569     SmallVector<const Expr *, 8> Keys;
  621     SmallVector<const Expr *, 8> Vals;
  625     SmallVector<const Expr *, 8> Keys;
  659                                    const Expr *Arg,
  757   const Expr *Arg = Msg->getArg(0)->IgnoreParenImpCasts();
  765   const Expr *literalE = Arg;
  891 static bool subscriptOperatorNeedsParens(const Expr *FullExpr) {
  892   const Expr* Expr = FullExpr->IgnoreImpCasts();
  913 static bool castOperatorNeedsParens(const Expr *FullExpr) {
  914   const Expr* Expr = FullExpr->IgnoreImpCasts();
  942 static void objectifyExpr(const Expr *E, Commit &commit) {
  967 static bool isEnumConstant(const Expr *E) {
  980   const Expr *Arg = Msg->getArg(0);
  992   const Expr *OrigArg = Arg->IgnoreImpCasts();
 1124   const Expr *Arg = Msg->getArg(0);
 1130   const Expr *OrigArg = Arg->IgnoreImpCasts();
 1176     const Expr *encodingArg = Msg->getArg(1);
tools/clang/lib/Frontend/Rewrite/RewriteModernObjC.cpp
   80     Expr *GlobalConstructionExp;
  342     void RewriteObjCQualifiedInterfaceTypes(Expr *E);
  413                                            ArrayRef<Expr *> Args,
  417     Expr *SynthMsgSendStretCallExpr(FunctionDecl *MsgSendStretFlavor,
  420                                         SmallVectorImpl<Expr*> &MsgExprs,
  476     Stmt *SynthesizeBlockCall(CallExpr *Exp, const Expr* BlockExp);
  586                                              CastKind Kind, Expr *E) {
  871       Expr *Zero = IntegerLiteral::Create(*Context,
 1419   Expr *Base;
 1420   SmallVector<Expr*, 2> Args;
 1429       Base = cast<Expr>(RewriteFunctionBodyOrGlobalInitializer(Base));
 1434       Expr *Arg = OldMsg->getArg(i);
 1437       Arg = cast<Expr>(RewriteFunctionBodyOrGlobalInitializer(Arg));
 1506   Expr *Base = nullptr;
 1507   SmallVector<Expr*, 1> Args;
 1514       Base = cast<Expr>(RewriteFunctionBodyOrGlobalInitializer(Base));
 1518       Expr *Arg = OldMsg->getArg(i);
 1521       Arg = cast<Expr>(RewriteFunctionBodyOrGlobalInitializer(Arg));
 2066   Expr *Replacement = getStringLiteral(StrEncoding);
 2079   SmallVector<Expr*, 8> SelExprs;
 2090                                                 ArrayRef<Expr *> Args,
 2159 void RewriteModernObjC::RewriteObjCQualifiedInterfaceTypes(Expr *E) {
 2289     Expr *E = ND->getInit();
 2585   Expr *Unop = new (Context)
 2600   Expr *FlagExp = IntegerLiteral::Create(*Context,
 2626   SmallVector<Expr*, 4> MsgExprs;
 2627   SmallVector<Expr*, 4> ClsExprs;
 2641   SmallVector<Expr*, 4> SelExprs;
 2649   Expr *subExpr  = Exp->getSubExpr();
 2652     const Expr *SubExpr = ICE->IgnoreParenImpCasts();
 2717   SmallVector<Expr*, 16> InitExprs;
 2721   Expr *count = IntegerLiteral::Create(*Context,
 2727   Expr *NSArrayCallExpr =
 2748   SmallVector<Expr*, 32> MsgExprs;
 2749   SmallVector<Expr*, 4> ClsExprs;
 2764   SmallVector<Expr*, 4> SelExprs;
 2776   Expr *cnt = IntegerLiteral::Create(*Context,
 2838   SmallVector<Expr*, 16> KeyExprs;
 2839   SmallVector<Expr*, 16> ValueExprs;
 2844   Expr *count = IntegerLiteral::Create(*Context,
 2856   Expr *NSValueCallExpr =
 2876   Expr *NSKeyCallExpr = CallExpr::Create(
 2890   SmallVector<Expr*, 32> MsgExprs;
 2891   SmallVector<Expr*, 4> ClsExprs;
 2906   SmallVector<Expr*, 4> SelExprs;
 2920   Expr *cnt = IntegerLiteral::Create(*Context,
 3085 Expr *RewriteModernObjC::SynthMsgSendStretCallExpr(FunctionDecl *MsgSendStretFlavor,
 3088                                                  SmallVectorImpl<Expr*> &MsgExprs,
 3222   SmallVector<Expr*, 8> MsgExprs;
 3232     SmallVector<Expr*, 4> InitExprs;
 3247     SmallVector<Expr*, 8> ClsExprs;
 3265     Expr *SuperRep;
 3309     SmallVector<Expr*, 8> ClsExprs;
 3329     SmallVector<Expr*, 4> InitExprs;
 3342     SmallVector<Expr*, 8> ClsExprs;
 3360     Expr *SuperRep;
 3401     Expr *recExpr = Exp->getInstanceReceiver();
 3417   SmallVector<Expr*, 8> SelExprs;
 3425     Expr *userExpr = Exp->getArg(i);
 3434       const Expr *SubExpr = ICE->IgnoreParenImpCasts();
 3542     Expr *STCE = SynthMsgSendStretCallExpr(MsgSendStretFlavor,
 4550 Stmt *RewriteModernObjC::SynthesizeBlockCall(CallExpr *Exp, const Expr *BlockExp) {
 4566     Expr *LHSExp = CEXPR->getLHS();
 4568     Expr *RHSExp = CEXPR->getRHS();
 4570     Expr *CONDExp = CEXPR->getCond();
 4573                                       SourceLocation(), cast<Expr>(LHSStmt),
 4574                                       SourceLocation(), cast<Expr>(RHSStmt),
 4636   SmallVector<Expr*, 8> BlkExprs;
 4703   Expr *Exp = new (Context) UnaryOperator(DRE, UO_Deref, DRE->getType(),
 5137     Expr *E = ND->getInit();
 5260   Expr *NewRep;
 5275   SmallVector<Expr*, 4> InitExprs;
 5300     Expr *Exp;
 5382     Expr *FlagExp = IntegerLiteral::Create(*Context, llvm::APInt(IntSize, flag),
 7439   Expr *BaseExpr = IV->getBase();
 7444     BaseExpr = cast<Expr>(RewriteFunctionBodyOrGlobalInitializer(BaseExpr));
 7450   Expr *Replacement = IV;
 7513           Expr *Zero = IntegerLiteral::Create(*Context,
 7539       Expr *Exp = new (Context) UnaryOperator(castExpr, UO_Deref, IvarT,
tools/clang/lib/Frontend/Rewrite/RewriteObjC.cpp
  290     void RewriteObjCQualifiedInterfaceTypes(Expr *E);
  350                                            ArrayRef<Expr *> Args,
  357                                         SmallVectorImpl<Expr*> &MsgExprs,
  386     Stmt *SynthesizeBlockCall(CallExpr *Exp, const Expr* BlockExp);
  492                                              CastKind Kind, Expr *E) {
 1238   Expr *Base, *RHS;
 1247       Base = cast<Expr>(RewriteFunctionBodyOrGlobalInitializer(Base));
 1253     RHS = cast<Expr>(RewriteFunctionBodyOrGlobalInitializer(RHS));
 1320   Expr *Base = nullptr;
 1328       Base = cast<Expr>(RewriteFunctionBodyOrGlobalInitializer(Base));
 1334   SmallVector<Expr*, 1> Args;
 1684   Expr *syncExpr = S->getSynchExpr();
 1981   Expr *Replacement = getStringLiteral(StrEncoding);
 1994   SmallVector<Expr*, 8> SelExprs;
 2005                                           ArrayRef<Expr *> Args,
 2075 void RewriteObjC::RewriteObjCQualifiedInterfaceTypes(Expr *E) {
 2201     Expr *E = ND->getInit();
 2510   Expr *Unop = new (Context)
 2587                                                 SmallVectorImpl<Expr*> &MsgExprs,
 2649   SmallVector<Expr*, 8> MsgExprs;
 2659     SmallVector<Expr*, 4> InitExprs;
 2674     SmallVector<Expr*, 8> ClsExprs;
 2694     Expr *SuperRep;
 2738     SmallVector<Expr*, 8> ClsExprs;
 2755     SmallVector<Expr*, 4> InitExprs;
 2768     SmallVector<Expr*, 8> ClsExprs;
 2789     Expr *SuperRep;
 2830     Expr *recExpr = Exp->getInstanceReceiver();
 2846   SmallVector<Expr*, 8> SelExprs;
 2854     Expr *userExpr = Exp->getArg(i);
 2863       const Expr *SubExpr = ICE->IgnoreParenImpCasts();
 3045   Expr *DerefExpr = new (Context) UnaryOperator(DRE, UO_AddrOf,
 3718 Stmt *RewriteObjC::SynthesizeBlockCall(CallExpr *Exp, const Expr *BlockExp) {
 3734     Expr *LHSExp = CEXPR->getLHS();
 3736     Expr *RHSExp = CEXPR->getRHS();
 3738     Expr *CONDExp = CEXPR->getCond();
 3741                                       SourceLocation(), cast<Expr>(LHSStmt),
 3742                                       SourceLocation(), cast<Expr>(RHSStmt),
 3804   SmallVector<Expr*, 8> BlkExprs;
 3872   Expr *Exp = new (Context) UnaryOperator(DRE, UO_Deref, DRE->getType(),
 4269     Expr *E = ND->getInit();
 4406   Expr *NewRep;
 4413   SmallVector<Expr*, 4> InitExprs;
 4438     Expr *Exp;
 4518     Expr *FlagExp = IntegerLiteral::Create(*Context, llvm::APInt(IntSize, flag),
 5792   Expr *BaseExpr = IV->getBase();
 5797     BaseExpr = cast<Expr>(RewriteFunctionBodyOrGlobalInitializer(BaseExpr));
 5803   Expr *Replacement = IV;
tools/clang/lib/Index/IndexBody.cpp
   57   SymbolRoleSet getRolesForRef(const Expr *E,
  154       const Expr *E, const Type *T, const DeclarationNameInfo &NameInfo,
  235         const auto *E = POE->getSyntacticForm();
  326   bool passObjCLiteralMethodCall(const ObjCMethodDecl *MD, const Expr *E) {
  390                              Expr *Init) {
  431         for (Expr *init : SyntaxForm->inits()) {
tools/clang/lib/Index/IndexingContext.cpp
   78                                       const Expr *RefE,
  355                                            const Expr *OrigE,
tools/clang/lib/Index/IndexingContext.h
   83                        const Expr *RefE = nullptr,
  131                             const Expr *RefE,
tools/clang/lib/Parse/ParseExpr.cpp
  191                                                     Expr *ReceiverExpr) {
 1493     if (Expr *PostfixExpr = Res.get()) {
 1632       Expr *ExecConfig = nullptr;
 1749       Expr* OrigLHS = !LHS.isInvalid() ? LHS.get() : nullptr;
 1754         Expr *Base = OrigLHS;
 1791         Expr *Base = LHS.get();
 1792         Expr *CorrectedBase = CorrectedLHS.get();
 2899 bool Parser::ParseExpressionList(SmallVectorImpl<Expr *> &Exprs,
 2951 Parser::ParseSimpleExpressionList(SmallVectorImpl<Expr*> &Exprs,
tools/clang/lib/Parse/ParseExprCXX.cpp
 1120         Expr *InitExpr = Init.get();
 1679 Parser::ParseCXXPseudoDestructor(Expr *Base, SourceLocation OpLoc,
 1837     Expr *InitList = Init.get();
 3121                                    SmallVectorImpl<Expr*> &PlacementArgs,
tools/clang/lib/Parse/ParseObjc.cpp
 3148                                        Expr *ReceiverExpr) {
tools/clang/lib/Parse/ParseOpenMP.cpp
   51   SmallVector<Expr *, 4> Identifiers;
   64   llvm::ArrayRef<Expr *> getIdentifiers() const { return Identifiers; }
  685     SmallVectorImpl<Expr *> &Uniforms, SmallVectorImpl<Expr *> &Aligneds,
  685     SmallVectorImpl<Expr *> &Uniforms, SmallVectorImpl<Expr *> &Aligneds,
  686     SmallVectorImpl<Expr *> &Alignments, SmallVectorImpl<Expr *> &Linears,
  686     SmallVectorImpl<Expr *> &Alignments, SmallVectorImpl<Expr *> &Linears,
  687     SmallVectorImpl<unsigned> &LinModifiers, SmallVectorImpl<Expr *> &Steps) {
  724         SmallVectorImpl<Expr *> *Vars = &Uniforms;
  770   SmallVector<Expr *, 4> Uniforms;
  771   SmallVector<Expr *, 4> Aligneds;
  772   SmallVector<Expr *, 4> Alignments;
  773   SmallVector<Expr *, 4> Linears;
  775   SmallVector<Expr *, 4> Steps;
 1012   Optional<std::pair<FunctionDecl *, Expr *>> DeclVarData =
 2553                                 SmallVectorImpl<Expr *> &Vars,
 2829   SmallVector<Expr *, 4> Vars;
tools/clang/lib/Parse/ParseStmtAsm.cpp
  545   SmallVector<Expr *, 4> Exprs;
  651     Expr *OpExpr = static_cast<Expr *>(OpExprs[i].first);
  880                                  SmallVectorImpl<Expr *> &Constraints,
  881                                  SmallVectorImpl<Expr *> &Exprs) {
tools/clang/lib/Parse/ParseTemplate.cpp
  406   Expr *ConstraintExpr = ConstraintExprResult.get();
tools/clang/lib/Sema/AnalysisBasedWarnings.cpp
  131   static bool HasMacroID(const Expr *E) {
  137       if (const Expr *SubExpr = dyn_cast_or_null<Expr>(SubStmt))
  137       if (const Expr *SubExpr = dyn_cast_or_null<Expr>(SubStmt))
  735   void VisitExpr(const Expr *E) {
  844     const Expr *User = Use.getUser();
  997     if (const Expr *Initializer = VD->getInit()) {
 1330       Expr::EvalResult Result;
tools/clang/lib/Sema/DeclSpec.cpp
  167                                              Expr *NoexceptExpr,
  372       if (Expr *E = DS.getRepAsExpr())
  736                                Expr *Rep,
tools/clang/lib/Sema/JumpDiagnostics.cpp
  172     const Expr *Init = VD->getInit();
  234     if (Expr *Init = VD->getInit())
  289   unsigned &ParentScope = ((isa<Expr>(S) && !isa<StmtExpr>(S))
  546       SmallVector<const Expr *, 4> CommaLHS;
  548       const Expr *ExtendedObject =
tools/clang/lib/Sema/ScopeInfo.cpp
   99         const Expr *DoubleBase = BaseProp->getBase();
  121     const Expr *E = OVE->getSourceExpr();
  130 FunctionScopeInfo::WeakObjectProfileTy::WeakObjectProfileTy(const Expr *BaseE,
  157 void FunctionScopeInfo::markSafeWeakUse(const Expr *E) {
  233     llvm::function_ref<void(VarDecl *, Expr *)> Callback) const {
  234   for (Expr *E : PotentiallyCapturingExprs) {
tools/clang/lib/Sema/Sema.cpp
  475 void Sema::diagnoseZeroToNullptrConversion(CastKind Kind, const Expr* E) {
  503 ExprResult Sema::ImpCastExprToType(Expr *E, QualType Ty,
 1671   Expr *VarRef =
 1678     Expr *Init = Result.getAs<Expr>();
 1678     Expr *Init = Result.getAs<Expr>();
 1930 bool Sema::tryExprAsCall(Expr &E, QualType &ZeroArgCallReturnTy,
 2087 static bool IsCallableWithAppend(Expr *E) {
 2095 static bool IsCPUDispatchCPUSpecificMultiVersion(const Expr *E) {
 2299 bool Sema::checkOpenCLDisabledDecl(const NamedDecl &D, const Expr &E) {
tools/clang/lib/Sema/SemaAccess.cpp
 1748                                                    Expr *ObjectExpr,
 1749                                                    Expr *ArgExpr,
 1799 Sema::AccessResult Sema::CheckAddressOfMemberAccess(Expr *OvlExpr,
tools/clang/lib/Sema/SemaAttr.cpp
  290                            StringRef SlotLabel, Expr *alignment) {
  291   Expr *Alignment = static_cast<Expr *>(alignment);
tools/clang/lib/Sema/SemaCUDA.cpp
  492   const Expr *Init = VD->getInit();
tools/clang/lib/Sema/SemaCast.cpp
   59         ValueKind(Expr::getValueKindForType(destType)),
  144       Expr *src = SrcExpr.get();
  178 static TryCastResult TryLValueToRValueCast(Sema &Self, Expr *SrcExpr,
  183 static TryCastResult TryStaticReferenceDowncast(Sema &Self, Expr *SrcExpr,
  238                         SourceLocation LParenLoc, Expr *E,
  259                         TypeSourceInfo *DestTInfo, Expr *E,
  348                                          TypeSourceInfo *TSI, Expr *Operand,
  370                                       SourceRange range, Expr *src,
  446                             SourceRange opRange, Expr *src, QualType destType,
  883 static void DiagnoseReinterpretUpDownCast(Sema &Self, const Expr *SrcExpr,
 1287 TryCastResult TryLValueToRValueCast(Sema &Self, Expr *SrcExpr,
 1346 TryStaticReferenceDowncast(Sema &Self, Expr *SrcExpr, QualType DestType,
 1670   Expr *SrcExprRaw = SrcExpr.get();
 1894   Expr *Src = SrcExpr.get()->IgnoreParenImpCasts();
 1964                                   const Expr *SrcExpr, QualType DestType,
 1997   Expr *E = Result.get();
 2002           Expr::getValueKindForType(DestType) == VK_RValue // Convert Fun to Ptr
 2660       Expr::EvalResult Result;
 2883                                      Expr *CastExpr) {
 2909                                             Expr *CastExpr,
 2920   auto *SubExpr = Op.SrcExpr.get();
tools/clang/lib/Sema/SemaChecking.cpp
  135   Expr *ValArg = TheCall->getArg(0);
  144   Expr *StrArg = TheCall->getArg(1)->IgnoreParenCasts();
  166   for (Expr *Arg : TheCall->arguments()) {
  254   Expr *Builtin = BuiltinCall->getCallee()->IgnoreImpCasts();
  255   Expr *Call = BuiltinCall->getArg(0);
  256   Expr *Chain = BuiltinCall->getArg(1);
  403     Expr::EvalResult Result;
  404     Expr *SizeArg = TheCall->getArg(ObjectIndex);
  419     Expr *ObjArg = TheCall->getArg(ObjectIndex);
  430   Expr::EvalResult Result;
  431   Expr *UsedSizeArg = TheCall->getArg(SizeIndex);
  477 static inline bool isBlockPointer(Expr *Arg) {
  483 static bool checkOpenCLBlockArgs(Sema &S, Expr *BlockArg) {
  533   Expr *NDRangeArg = TheCall->getArg(0);
  540   Expr *BlockArg = TheCall->getArg(1);
  556   Expr *BlockArg = TheCall->getArg(0);
  566 static bool checkOpenCLEnqueueIntType(Sema &S, Expr *E,
  581                                            Expr *BlockArg,
  638   Expr *Arg0 = TheCall->getArg(0);
  639   Expr *Arg1 = TheCall->getArg(1);
  640   Expr *Arg2 = TheCall->getArg(2);
  641   Expr *Arg3 = TheCall->getArg(3);
  693     Expr *Arg6 = TheCall->getArg(6);
  710     Expr *Arg4 = TheCall->getArg(4);
  711     Expr *Arg5 = TheCall->getArg(5);
  715                                      Expr::NPC_ValueDependentIsNotNull) &&
  726                                      Expr::NPC_ValueDependentIsNotNull) &&
  755   const Expr *Arg0 = Call->getArg(0);
  805   const Expr *Arg0 = Call->getArg(0);
  806   const Expr *ArgIdx = Call->getArg(Idx);
  855     const Expr *Arg2 = Call->getArg(2);
 1377     const Expr *PtrArg = TheCall->getArg(0)->IgnoreParenImpCasts();
 1388     const Expr *FnPtrArg = TheCall->getArg(1)->IgnoreImpCasts();
 1680     Expr *Arg = TheCall->getArg(PtrArgNum);
 1754   Expr *PointerArg = TheCall->getArg(IsLdrex ? 0 : 1);
 1970   Expr *Arg = TheCall->getArg(0);
 3303     Expr *Arg = TheCall->getArg(0);
 3369   Expr *Arg = TheCall->getArg(0);
 3389   Expr *Arg = TheCall->getArg(0);
 3588   Expr *Arg = TheCall->getArg(ArgNum);
 3698   Expr *Arg = TheCall->getArg(ArgNum);
 4110 static bool CheckNonNullExpr(Sema &S, const Expr *Expr) {
 4136                                  const Expr *ArgExpr,
 4159                                         Expr **Args,
 4177   const Expr *FormatExpr = Args[Idx];
 4207                                   ArrayRef<const Expr *> Args,
 4221         for (const auto *Arg : Args)
 4305                      const Expr *ThisArg, ArrayRef<const Expr *> Args,
 4305                      const Expr *ThisArg, ArrayRef<const Expr *> Args,
 4338       if (const Expr *Arg = Args[ArgIdx]) {
 4362                                 ArrayRef<const Expr *> Args,
 4381   Expr** Args = TheCall->getArgs();
 4384   Expr *ImplicitThis = nullptr;
 4428                                ArrayRef<const Expr *> Args) {
 4687   Expr *Ptr = Args[0];
 4807   SmallVector<Expr *, 5> APIOrderedArgs;
 4877           Expr *ValArg = APIOrderedArgs[i];
 4917   SmallVector<Expr*, 5> SubExprs;
 4965     auto *Scope = Args[Args.size() - 1];
 5026   Expr *Callee = TheCall->getCallee();
 5042   Expr *FirstArg = TheCall->getArg(0);
 5411   Expr *PointerArg = TheCall->getArg(numArgs - 1);
 5461 bool Sema::CheckObjCString(Expr *Arg) {
 5491 ExprResult Sema::CheckOSLogFormatStringArg(Expr *Arg) {
 5516 static bool checkVAStartABI(Sema &S, unsigned BuiltinID, Expr *Fn) {
 5550 static bool checkVAStartIsInVariadicFunction(Sema &S, Expr *Fn,
 5592   Expr *Fn = TheCall->getCallee();
 5625   const Expr *Arg = TheCall->getArg(1)->IgnoreParenCasts();
 5674   Expr *Func = Call->getCallee();
 5691   const Expr *Arg1 = Call->getArg(1)->IgnoreParens();
 5694   const Expr *Arg2 = Call->getArg(2)->IgnoreParens();
 5776   Expr *OrigArg = TheCall->getArg(NumArgs-1);
 5792       Expr *CastArg = Cast->getSubExpr();
 5943   SmallVector<Expr*, 32> exprs;
 5956 ExprResult Sema::SemaConvertVectorExpr(Expr *E, TypeSourceInfo *TInfo,
 6009   Expr *Arg = TheCall->getArg(0);
 6025   Expr *Arg = TheCall->getArg(1);
 6065   Expr *Arg = TheCall->getArg(1);
 6159     ArrayRef<const Expr *> Args(TheCall->getArgs(), TheCall->getNumArgs());
 6180   Expr *Arg = TheCall->getArg(ArgNum);
 6202   Expr *Arg = TheCall->getArg(ArgNum);
 6233   Expr *Arg = TheCall->getArg(ArgNum);
 6254   Expr *Arg = TheCall->getArg(ArgNum);
 6300   Expr *Arg = TheCall->getArg(ArgNum);
 6325   Expr *Arg = TheCall->getArg(ArgNum);
 6348     Expr *Arg0 = TheCall->getArg(0);
 6349     Expr *Arg1 = TheCall->getArg(1);
 6377     Expr *Arg0 = TheCall->getArg(0);
 6397     Expr *Arg0 = TheCall->getArg(0);
 6398     Expr *Arg1 = TheCall->getArg(1);
 6420     Expr *Arg0 = TheCall->getArg(0);
 6438     Expr *ArgA = TheCall->getArg(0);
 6439     Expr *ArgB = TheCall->getArg(1);
 6452                         Context, Expr::NPC_ValueDependentIsNotNull); };
 6517   Expr *Arg = TheCall->getArg(ArgNum);
 6605   Expr *Arg = TheCall->getArg(1);
 6634   SmallVector<const Expr *, 4> DiagnosticExprs;
 6655   void Update(signed NewFirstUncoveredArg, const Expr *StrExpr) {
 6673   void Diagnose(Sema &S, bool IsFunctionCall, const Expr *ArgExpr);
 6778                               const Expr *OrigFormatExpr,
 6779                               ArrayRef<const Expr *> Args,
 6794 checkFormatStringExpr(Sema &S, const Expr *E, ArrayRef<const Expr *> Args,
 6794 checkFormatStringExpr(Sema &S, const Expr *E, ArrayRef<const Expr *> Args,
 6812   if (E->isNullPointerConstant(S.Context, Expr::NPC_ValueDependentIsNotNull))
 6872     if (const Expr *src = cast<OpaqueValueExpr>(E)->getSourceExpr()) {
 6905         if (const Expr *Init = VD->getAnyInitializer()) {
 6963         const Expr *Arg = CE->getArg(FA->getFormatIdx().getASTIndex());
 6980           const Expr *Arg = CE->getArg(0);
 7012         const Expr *Arg = ME->getArg(FA->getFormatIdx().getASTIndex());
 7052       Expr::EvalResult LResult, RResult;
 7055           LResult, S.Context, Expr::SE_NoSideEffects, S.isConstantEvaluated());
 7057           RResult, S.Context, Expr::SE_NoSideEffects, S.isConstantEvaluated());
 7082       Expr::EvalResult IndexResult;
 7084                                        Expr::SE_NoSideEffects,
 7119                                 ArrayRef<const Expr *> Args,
 7132 bool Sema::CheckFormatArguments(ArrayRef<const Expr *> Args,
 7144   const Expr *OrigFormatExpr = Args[format_idx]->IgnoreParenCasts();
 7222   const Expr *OrigFormatExpr;
 7228   ArrayRef<const Expr *> Args;
 7240                      const Expr *origFormatExpr,
 7243                      ArrayRef<const Expr *> Args, unsigned formatIdx,
 7287   EmitFormatDiagnostic(Sema &S, bool inFunctionCall, const Expr *ArgumentExpr,
 7307   const Expr *getDataArg(unsigned i) const;
 7478 const Expr *CheckFormatHandler::getDataArg(unsigned i) const {
 7499                                    const Expr *ArgExpr) {
 7651     Sema &S, bool InFunctionCall, const Expr *ArgumentExpr,
 7678                      const Expr *origFormatExpr,
 7681                      bool hasVAListArg, ArrayRef<const Expr *> Args,
 7712                        const Expr *E);
 7728                            const Expr *E);
 7784       const Expr *Arg = getDataArg(argIndex);
 7929 bool Sema::hasCStrMethod(const Expr *E) {
 7945     const analyze_printf::ArgType &AT, const Expr *E) {
 8027     const Expr *Ex = getDataArg(argIndex);
 8167   const Expr *Arg = getDataArg(argIndex);
 8174 static bool requiresParensToAddCast(const Expr *E) {
 8178   const Expr *Inside = E->IgnoreImpCasts();
 8213                        const Expr *E) {
 8294                                     const Expr *E) {
 8592                     const Expr *origFormatExpr, Sema::FormatStringType type,
 8595                     ArrayRef<const Expr *> Args, unsigned formatIdx,
 8711   const Expr *Ex = getDataArg(argIndex);
 8762                               const Expr *OrigFormatExpr,
 8763                               ArrayRef<const Expr *> Args,
 9276   const Expr *FirstArg = Call->getArg(0);
 9277   const Expr *SecondArg = Call->getArg(1);
 9313 static bool CheckMemorySizeofForComparison(Sema &S, const Expr *E,
 9372 static const UnaryExprOrTypeTraitExpr *getAsSizeOfExpr(const Expr *E) {
 9381 static const Expr *getSizeOfExprArg(const Expr *E) {
 9381 static const Expr *getSizeOfExprArg(const Expr *E) {
 9389 static QualType getSizeOfArgType(const Expr *E) {
 9402   SearchNonTrivialToInitializeField(const Expr *E, Sema &S) : E(E), S(S) {}
 9430   static void diag(QualType RT, const Expr *E, Sema &S) {
 9436   const Expr *E;
 9444   SearchNonTrivialToCopyField(const Expr *E, Sema &S) : E(E), S(S) {}
 9475   static void diag(QualType RT, const Expr *E, Sema &S) {
 9481   const Expr *E;
 9488 static bool doesExprLikelyComputeSize(const Expr *SizeofExpr) {
 9528   const Expr *SizeArg =
 9593   const Expr *LenExpr = Call->getArg(LenArg)->IgnoreParenImpCasts();
 9604   const Expr *SizeOfArg = getSizeOfExprArg(LenExpr);
 9615     const Expr *Dest = Call->getArg(ArgIdx)->IgnoreParenImpCasts();
 9768 static const Expr *ignoreLiteralAdditions(const Expr *Ex, ASTContext &Ctx) {
 9768 static const Expr *ignoreLiteralAdditions(const Expr *Ex, ASTContext &Ctx) {
 9776     const Expr *RHS = BO->getRHS()->IgnoreParenCasts();
 9777     const Expr *LHS = BO->getLHS()->IgnoreParenCasts();
 9813   const Expr *SrcArg = ignoreLiteralAdditions(Call->getArg(1), Context);
 9814   const Expr *SizeArg = ignoreLiteralAdditions(Call->getArg(2), Context);
 9815   const Expr *CompareWithSrc = nullptr;
 9822   if (const Expr *Ex = getSizeOfExprArg(SizeArg))
 9849   const Expr *OriginalSizeArg = Call->getArg(2);
 9857   const Expr *DstArg = Call->getArg(0)->IgnoreParenImpCasts();
 9873 static bool referToTheSameDecl(const Expr *E1, const Expr *E2) {
 9873 static bool referToTheSameDecl(const Expr *E1, const Expr *E2) {
 9880 static const Expr *getStrlenExprArg(const Expr *E) {
 9880 static const Expr *getStrlenExprArg(const Expr *E) {
 9898   const Expr *DstArg = CE->getArg(0)->IgnoreParenCasts();
 9899   const Expr *SrcArg = CE->getArg(1)->IgnoreParenCasts();
 9900   const Expr *LenArg = CE->getArg(2)->IgnoreParenCasts();
 9909   if (const Expr *SizeOfArg = getSizeOfExprArg(LenArg)) {
 9918       const Expr *L = BE->getLHS()->IgnoreParenCasts();
 9919       const Expr *R = BE->getRHS()->IgnoreParenCasts();
 9976 Sema::CheckReturnValExpr(Expr *RetValExp, QualType lhsType,
10011 void Sema::CheckFloatComparison(SourceLocation Loc, Expr* LHS, Expr *RHS) {
10011 void Sema::CheckFloatComparison(SourceLocation Loc, Expr* LHS, Expr *RHS) {
10012   Expr* LeftExprSansParen = LHS->IgnoreParenImpCasts();
10013   Expr* RightExprSansParen = RHS->IgnoreParenImpCasts();
10198 static QualType GetExprType(const Expr *E) {
10209 static IntRange GetExprRange(ASTContext &C, const Expr *E, unsigned MaxWidth,
10214   Expr::EvalResult result;
10433 static IntRange GetExprRange(ASTContext &C, const Expr *E,
10476 static void AnalyzeImplicitConversions(Sema &S, Expr *E, SourceLocation CC,
10479 static bool IsEnumConstOrFromMacro(Sema &S, Expr *E) {
10500 static bool isKnownToHaveUnsignedValue(Expr *E) {
10631 static bool HasEnumType(Expr *E) {
10643 static int classifyConstantValue(Expr *Constant) {
10658                                         Expr *Constant, Expr *Other,
10658                                         Expr *Constant, Expr *Other,
10664   Expr *OriginalOther = Other;
10794   Expr *LHS = E->getLHS();
10795   Expr *RHS = E->getRHS();
10812       Expr *Const = RhsConstant ? RHS : LHS;
10813       Expr *Other = RhsConstant ? LHS : RHS;
10845   Expr *signedOperand, *unsignedOperand;
10897 static bool AnalyzeBitFieldAssignment(Sema &S, FieldDecl *Bitfield, Expr *Init,
10932   Expr *OriginalInit = Init->IgnoreParenImpCasts();
10935   Expr::EvalResult Result;
10937                                    Expr::SE_AllowSideEffects)) {
10981         Expr *WidthExpr = Bitfield->getBitWidth();
11053 static void DiagnoseImpCast(Sema &S, Expr *E, QualType SourceType, QualType T,
11068 static void DiagnoseImpCast(Sema &S, Expr *E, QualType T,
11080     Sema &S, Expr *SourceExpr, const Sema::SemaDiagnosticBuilder &Builder) {
11081   Expr *Ignored = SourceExpr->IgnoreImplicit();
11095 static void DiagnoseFloatingImpCast(Sema &S, Expr *E, QualType T,
11100   Expr *InnerE = E->IgnoreParenImpCasts();
11111     E->EvaluateAsFloat(Value, S.Context, Expr::SE_AllowSideEffects);
11258 static bool IsImplicitBoolFloatConversion(Sema &S, Expr *Ex, bool ToBool) {
11262   Expr *InnerE = Ex->IgnoreParenImpCasts();
11281     Expr *CurrA = TheCall->getArg(i);
11298 static void DiagnoseNullConversion(Sema &S, Expr *E, QualType T,
11309   const Expr::NullPointerConstantKind NullKind =
11310       E->isNullPointerConstant(S.Context, Expr::NPC_ValueDependentIsNotNull);
11311   if (NullKind != Expr::NPCK_GNUNull && NullKind != Expr::NPCK_CXX11_nullptr)
11311   if (NullKind != Expr::NPCK_GNUNull && NullKind != Expr::NPCK_CXX11_nullptr)
11328   if (NullKind == Expr::NPCK_GNUNull && Loc.isMacroID()) {
11340       << (NullKind == Expr::NPCK_CXX11_nullptr) << T << SourceRange(CC)
11356                                               Expr *Element,
11443 static bool isSameWidthConstantConversion(Sema &S, Expr *E, QualType T,
11467 static const IntegerLiteral *getIntegerLiteral(Expr *E) {
11480                                           Expr *LHS, Expr *RHS) {
11480                                           Expr *LHS, Expr *RHS) {
11505 static void DiagnoseIntInBoolContext(Sema &S, Expr *E) {
11511     Expr::EvalResult Result;
11520                E->EvaluateAsInt(Result, S.Context, Expr::SE_AllowSideEffects))
11542 static void CheckImplicitConversion(Sema &S, Expr *E, QualType T,
11581       S.DiagnoseAlwaysNonNullPointer(E, Expr::NPCK_NotNull, /*IsEqual*/ false,
11590     Expr::EvalResult Result;
11592                          Expr::SE_AllowSideEffects)) {
11659         Expr::EvalResult result;
11705         Expr *LastA = CEx->getArg(NumArgs - 1);
11706         Expr *InnerE = LastA->IgnoreParenImpCasts();
11721       Expr::EvalResult Result;
11722       if (E->EvaluateAsFixedPoint(Result, S.Context, Expr::SE_AllowSideEffects,
11737       Expr::EvalResult Result;
11740                                   Expr::SE_AllowSideEffects)) {
11760       Expr::EvalResult Result;
11762           E->EvaluateAsInt(Result, S.Context, Expr::SE_AllowSideEffects)) {
11858     Expr::EvalResult Result;
11859     if (E->EvaluateAsInt(Result, S.Context, Expr::SE_AllowSideEffects,
11907     Expr::EvalResult Result;
11908     if (E->EvaluateAsInt(Result, S.Context, Expr::SE_AllowSideEffects) &&
11977 static void CheckConditionalOperand(Sema &S, Expr *E, QualType T,
12024 static void CheckBoolLikeConversion(Sema &S, Expr *E, SourceLocation CC) {
12035 static void AnalyzeImplicitConversions(Sema &S, Expr *OrigE, SourceLocation CC,
12038   Expr *E = OrigE->IgnoreParenImpCasts();
12080     for (auto *SE : POE->semantics())
12120     Expr *ChildExpr = dyn_cast_or_null<Expr>(SubStmt);
12120     Expr *ChildExpr = dyn_cast_or_null<Expr>(SubStmt);
12133     Expr *SubExpr = BO->getLHS()->IgnoreParenImpCasts();
12154 static bool checkOpenCLEnqueueIntType(Sema &S, Expr *E, const QualType &IntT) {
12170 static bool CheckForReference(Sema &SemaRef, const Expr *E,
12222 void Sema::DiagnoseAlwaysNonNullPointer(Expr *E,
12223                                         Expr::NullPointerConstantKind NullKind,
12237   const bool IsCompare = NullKind != Expr::NPCK_NotNull;
12389       if (NullKind == Expr::NPCK_ZeroExpression ||
12390           NullKind == Expr::NPCK_ZeroLiteral) {
12414 void Sema::CheckImplicitConversions(Expr *E, SourceLocation CC) {
12434 void Sema::CheckBoolLikeConversion(Expr *E, SourceLocation CC) {
12440 void Sema::CheckForIntOverflow (Expr *E) {
12442   SmallVector<Expr *, 2> Exprs(1, E);
12445     Expr *OriginalE = Exprs.pop_back_val();
12446     Expr *E = OriginalE->IgnoreParenCasts();
12559     Expr *Use;
12592   SmallVectorImpl<Expr *> &WorkList;
12637     bool evaluate(const Expr *E, bool &Result) {
12653   Object getObject(Expr *E, bool Mod) const {
12674   void addUsage(UsageInfo &UI, Object O, Expr *Ref, UsageKind UK) {
12685   void checkUsage(Object O, UsageInfo &UI, Expr *Ref, UsageKind OtherKind,
12694     Expr *Mod = U.Use;
12695     Expr *ModOrUse = Ref;
12707   void notePreUse(Object O, Expr *Use) {
12713   void notePostUse(Object O, Expr *Use) {
12719   void notePreMod(Object O, Expr *Mod) {
12726   void notePostMod(Object O, Expr *Use, UsageKind UK) {
12733   SequenceChecker(Sema &S, Expr *E, SmallVectorImpl<Expr *> &WorkList)
12733   SequenceChecker(Sema &S, Expr *E, SmallVectorImpl<Expr *> &WorkList)
12742   void VisitExpr(Expr *E) {
12759   void VisitSequencedExpressions(Expr *SequencedBefore, Expr *SequencedAfter) {
12759   void VisitSequencedExpressions(Expr *SequencedBefore, Expr *SequencedAfter) {
12967       Expr *E = ILE->getInit(I);
12983 void Sema::CheckUnsequencedOperations(Expr *E) {
12984   SmallVector<Expr *, 8> WorkList;
12987     Expr *Item = WorkList.pop_back_val();
12992 void Sema::CheckCompletedExpr(Expr *E, SourceLocation CheckLoc,
13006                                        Expr *Init) {
13121 static CharUnits getDeclAlign(Expr *E, CharUnits TypeAlign,
13134 void Sema::CheckCastAlign(Expr *Op, QualType T, SourceRange TRange) {
13209       const Expr *SizeExpr = dyn_cast<IntegerLiteral>(CTL.getSizeExpr());
13231 void Sema::CheckArrayAccess(const Expr *BaseExpr, const Expr *IndexExpr,
13231 void Sema::CheckArrayAccess(const Expr *BaseExpr, const Expr *IndexExpr,
13255   Expr::EvalResult Result;
13256   if (!IndexExpr->EvaluateAsInt(Result, Context, Expr::SE_AllowSideEffects))
13369 void Sema::CheckArrayAccess(const Expr *expr) {
13410         if (const Expr *lhs = cond->getLHS())
13412         if (const Expr *rhs = cond->getRHS())
13418         for (const auto *Arg : OCE->arguments())
13440   void setLocsFrom(Expr *e) {
13450 static bool considerVariable(VarDecl *var, Expr *ref, RetainCycleOwner &owner) {
13463 static bool findRetainCycleOwner(Sema &S, Expr *e, RetainCycleOwner &owner) {
13547     Expr *Capturer = nullptr;
13581       Expr *LHS = BinOp->getLHS();
13585         if (Expr *RHS = BinOp->getRHS()) {
13599 static Expr *findCapturingExpr(Sema &S, Expr *e, RetainCycleOwner &owner) {
13599 static Expr *findCapturingExpr(Sema &S, Expr *e, RetainCycleOwner &owner) {
13634 static void diagnoseRetainCycle(Sema &S, Expr *capturer,
13783   Expr *Arg = Message->getArg(ArgIndex)->IgnoreImpCasts();
13797     Expr *Receiver = Message->getInstanceReceiver()->IgnoreImpCasts();
13854     if (Expr *capturer = findCapturingExpr(*this, msg->getArg(i), owner)) {
13864 void Sema::checkRetainCycles(Expr *receiver, Expr *argument) {
13864 void Sema::checkRetainCycles(Expr *receiver, Expr *argument) {
13869   if (Expr *capturer = findCapturingExpr(*this, argument, owner))
13873 void Sema::checkRetainCycles(VarDecl *Var, Expr *Init) {
13883   if (Expr *Capturer = findCapturingExpr(*this, Init, Owner))
13888                                      Expr *RHS, bool isProperty) {
13910                                     Expr *RHS, bool isProperty) {
13931                               QualType LHS, Expr *RHS) {
13944                               Expr *LHS, Expr *RHS) {
13944                               Expr *LHS, Expr *RHS) {
14129 void Sema::DiagnoseSelfMove(const Expr *LHSExpr, const Expr *RHSExpr,
14129 void Sema::DiagnoseSelfMove(const Expr *LHSExpr, const Expr *RHSExpr,
14174   const Expr *LHSBase = LHSExpr;
14175   const Expr *RHSBase = RHSExpr;
14379 static bool FindTypeTagExpr(const Expr *TypeExpr, const ASTContext &Ctx,
14461     const IdentifierInfo *ArgumentKind, const Expr *TypeExpr,
14536                                     const ArrayRef<const Expr *> ExprArgs,
14548   const Expr *TypeTagExpr = ExprArgs[TypeTagIdxAST];
14568   const Expr *ArgumentExpr = ExprArgs[ArgumentIdxAST];
14585                                              Expr::NPC_ValueDependentIsNotNull)) {
14629 void Sema::AddPotentialMisalignedMembers(Expr *E, RecordDecl *RD, ValueDecl *MD,
14647 void Sema::DiscardMisalignedMemberAddress(const Type *T, Expr *E) {
14653     auto *Op = cast<UnaryOperator>(E)->getSubExpr()->IgnoreParens();
14667     Expr *E,
14668     llvm::function_ref<void(Expr *, RecordDecl *, FieldDecl *, CharUnits)>
14710   const Expr *TopBase = TopME->getBase()->IgnoreParenImpCasts();
14775 void Sema::CheckAddressOfPackedMember(Expr *rhs) {
tools/clang/lib/Sema/SemaCodeComplete.cpp
  409 static QualType getPreferredTypeOfBinaryRHS(Sema &S, Expr *LHS,
  519 void PreferredTypeBuilder::enterBinary(Sema &S, SourceLocation Tok, Expr *LHS,
  527                                           Expr *Base) {
  547                                           Expr *LHS) {
 4695 void Sema::CodeCompleteMemberReferenceExpr(Scope *S, Expr *Base,
 4696                                            Expr *OtherOpBase,
 4995     Expr *CaseVal = Case->getLHS()->IgnoreParenCasts();
 5035 static bool anyNullArguments(ArrayRef<Expr *> Args) {
 5104 QualType Sema::ProduceCallSignatureHelp(Scope *S, Expr *Fn,
 5105                                         ArrayRef<Expr *> Args,
 5113       Expr::hasAnyTypeDependentArguments(Args)) {
 5123   Expr *NakedFn = Fn->IgnoreParenCasts();
 5135     SmallVector<Expr *, 12> ArgExprs(
 5170         SmallVector<Expr *, 12> ArgExprs(1, NakedFn);
 5202                                                ArrayRef<Expr *> Args,
 5241     ArrayRef<Expr *> ArgExprs, IdentifierInfo *II, SourceLocation OpenParLoc) {
 6412 static ObjCInterfaceDecl *GetAssumedMessageSendExprType(Expr *E) {
 6838 void Sema::CodeCompleteObjCInstanceMessage(Scope *S, Expr *Receiver,
 6844   Expr *RecExpr = static_cast<Expr *>(Receiver);
tools/clang/lib/Sema/SemaConcept.cpp
   22 bool Sema::CheckConstraintExpression(Expr *ConstraintExpression) {
   52                                       Expr *ConstraintExpr,
  109   Expr::EvalResult EvalResult;
tools/clang/lib/Sema/SemaCoroutine.cpp
  265   Expr *CoawaitOp = UnresolvedLookupExpr::Create(
  276                                            Expr *E,
  284                                            SourceLocation Loc, Expr *E) {
  292 static Expr *buildBuiltinCall(Sema &S, SourceLocation Loc, Builtin::ID Id,
  327   Expr *FramePtr =
  341   Expr *Results[3];
  346 static ExprResult buildMemberCall(Sema &S, Expr *Base, SourceLocation Loc,
  375 static Expr *maybeTailCall(Sema &S, QualType RetType, Expr *E,
  375 static Expr *maybeTailCall(Sema &S, QualType RetType, Expr *E,
  391   Expr *JustAddress = AddressExpr.get();
  400                                                   SourceLocation Loc, Expr *E) {
  410   Expr *CoroHandle = CoroHandleRes.get();
  448     if (Expr *TailCallSuspend = maybeTailCall(S, RetType, AwaitSuspend, Loc))
  506   llvm::SmallVector<Expr *, 4> CtorArgExprs;
  544   Expr *PLE = ParenListExpr::Create(Context, FD->getLocation(),
  692 ExprResult Sema::ActOnCoawaitExpr(Scope *S, SourceLocation Loc, Expr *E) {
  712 ExprResult Sema::BuildUnresolvedCoawaitExpr(SourceLocation Loc, Expr *E,
  727     Expr *Res =
  750 ExprResult Sema::BuildResolvedCoawaitExpr(SourceLocation Loc, Expr *E,
  763     Expr *Res = new (Context)
  784   Expr *Res =
  791 ExprResult Sema::ActOnCoyieldExpr(Scope *S, SourceLocation Loc, Expr *E) {
  812 ExprResult Sema::BuildCoyieldExpr(SourceLocation Loc, Expr *E) {
  824     Expr *Res = new (Context) CoyieldExpr(Loc, Context.DependentTy, E);
  839   Expr *Res =
  846 StmtResult Sema::ActOnCoreturnStmt(Scope *S, SourceLocation Loc, Expr *E) {
  854 StmtResult Sema::BuildCoreturnStmt(SourceLocation Loc, Expr *E,
  894   Expr *PCE = ActOnFinishFullExpr(PC.get(), /*DiscardedValue*/ false).get();
  901 static Expr *buildStdNoThrowDeclRef(Sema &S, SourceLocation Loc) {
 1045   this->InitialSuspend = cast<Expr>(Fn.CoroutineSuspends.first);
 1046   this->FinalSuspend = cast<Expr>(Fn.CoroutineSuspends.second);
 1050 static bool diagReturnOnAllocFailure(Sema &S, Expr *E,
 1139   SmallVector<Expr *, 1> PlacementArgs;
 1215     auto *StdNoThrow = buildStdNoThrowDeclRef(S, Loc);
 1244   Expr *FramePtr =
 1247   Expr *FrameSize =
 1257   SmallVector<Expr *, 2> NewArgs(1, FrameSize);
 1276   Expr *CoroFree =
 1279   SmallVector<Expr *, 2> DeleteArgs{CoroFree};
 1405 static void noteMemberDeclaredHere(Sema &S, Expr *E, FunctionScopeInfo &Fn) {
 1497 static Expr *castForMoving(Sema &S, Expr *E, QualType T = QualType()) {
 1497 static Expr *castForMoving(Sema &S, Expr *E, QualType T = QualType()) {
 1542     Expr *CExpr = nullptr;
tools/clang/lib/Sema/SemaDecl.cpp
 1793         if (const Expr *Init = VD->getInit()) {
 5348     Expr *E = DS.getRepAsExpr();
 5773   Expr::EvalResult Result;
 6977   if (Expr *E = (Expr*)D.getAsmLabel()) {
 7395 void Sema::CheckShadowingDeclModification(Expr *E, SourceLocation Loc) {
 8921   if (Expr *E = (Expr*) D.getAsmLabel()) {
10751 bool Sema::CheckForConstantInitializer(Expr *Init, QualType DclT) {
10760   const Expr *Culprit;
10801     void CheckExpr(Expr *E) {
10812         CheckExpr(cast<Expr>(Child));
10822       Expr *Base = E;
10872     void HandleValue(Expr *E) {
10913         Expr *Base = E->IgnoreParenImpCasts();
10957       Expr *Base = E->getBase()->IgnoreParenImpCasts();
10976       Expr *Callee = E->getCallee();
11007         Expr *ArgExpr = E->getArg(0);
11073   static void CheckSelfReference(Sema &S, Decl* OrigDecl, Expr *E,
11113                                             Expr *Init) {
11138   ArrayRef<Expr*> DeduceInits;
11153     SmallVector<Expr*, 8> InitsCopy(DeduceInits.begin(), DeduceInits.end());
11182   Expr *DeduceInit = DeduceInits[0];
11246                                          Expr *Init) {
11275 void Sema::checkNonTrivialCUnionInInitializer(const Expr *Init,
11548 void Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {
11724     Init = Result.getAs<Expr>();
11814       const Expr *Culprit;
12401   const Expr *CacheCulprit = nullptr;
12482   Expr *Init = var->getInit();
12769     const Expr *MagicValueExpr = VD->getInit();
15771                                 Expr *BitWidth, bool *ZeroWidth) {
15862                        Declarator &D, Expr *BitfieldWidth) {
15873                              Declarator &D, Expr *BitWidth,
15979                                 bool Mutable, Expr *BitWidth,
16254                                 Declarator &D, Expr *BitfieldWidth,
16258   Expr *BitWidth = (Expr*)BitfieldWidth;
16388   Expr * BW = IntegerLiteral::Create(Context, Zero, Context.IntTy, DeclLoc);
16898                                           Expr *Val) {
17099                               SourceLocation EqualLoc, Expr *Val) {
17175   Expr *InitExpr = ECD->getInitExpr();
17583 Decl *Sema::ActOnFileScopeAsmDecl(Expr *expr,
tools/clang/lib/Sema/SemaDeclAttr.cpp
  241 static bool checkUInt32Argument(Sema &S, const AttrInfo &AI, const Expr *Expr,
  277 static bool checkPositiveIntArgument(Sema &S, const AttrInfo &AI, const Expr *Expr,
  325     const Expr *IdxExpr, ParamIdx &Idx, bool CanIndexImplicitThis = false) {
  384   Expr *ArgExpr = AL.getArgAsExpr(ArgNum);
  457 static bool isIntOrBool(Expr *Exp) {
  599 static bool isCapabilityExpr(Sema &S, const Expr *Ex) {
  631                                            SmallVectorImpl<Expr *> &Args,
  654     Expr *ArgExp = AL.getArgAsExpr(Idx);
  734                                      Expr *&Arg) {
  735   SmallVector<Expr *, 1> Args;
  748   Expr *Arg = nullptr;
  756   Expr *Arg = nullptr;
  767                                         SmallVectorImpl<Expr *> &Args) {
  787   SmallVector<Expr *, 1> Args;
  791   Expr **StartArg = &Args[0];
  797   SmallVector<Expr *, 1> Args;
  801   Expr **StartArg = &Args[0];
  807                                    SmallVectorImpl<Expr *> &Args) {
  816   SmallVector<Expr *, 1> Args;
  821   Expr **StartArg = Size == 0 ? nullptr : &Args[0];
  828   SmallVector<Expr *, 1> Args;
  833   Expr **StartArg = Size == 0 ? nullptr : &Args[0];
  847   Expr *AttrArg = AI.getArgAsExpr(AttrArgNo);
  874   const Expr *SizeExpr = AL.getArgAsExpr(0);
  885     const Expr *NumberExpr = AL.getArgAsExpr(1);
  900                                       SmallVectorImpl<Expr *> &Args) {
  918   SmallVector<Expr*, 2> Args;
  928   SmallVector<Expr*, 2> Args;
  938   SmallVector<Expr*, 1> Args;
  952   SmallVector<Expr*, 1> Args;
  957   Expr **StartArg = &Args[0];
  964                                        Expr *&Cond, StringRef &Msg) {
  981       !Expr::isPotentialConstantExprUnevaluated(Cond, cast<FunctionDecl>(D),
  994   Expr *Cond;
 1022   bool referencesArgs(Expr *E) {
 1049   Expr *Cond;
 1078   Expr *E = AL.getArgAsExpr(0);
 1450     Expr *Ex = AL.getArgAsExpr(I);
 1536   Expr *E = AL.getArgAsExpr(0),
 1545 void Sema::AddAssumeAlignedAttr(Decl *D, const AttributeCommonInfo &CI, Expr *E,
 1546                                 Expr *OE) {
 1596                              Expr *ParamExpr) {
 1682     Expr *Ex = AL.getArgAsExpr(i);
 2640     Expr *E = AL.getArgAsExpr(0);
 2660     Expr *E = AL.getArgAsExpr(1);
 2788     const Expr *E = AL.getArgAsExpr(i);
 2812   const Expr *E = AL.getArgAsExpr(0);
 3009   Expr *E = AL.getArgAsExpr(0);
 3026   Expr *E = AL.getArgAsExpr(0);
 3103   Expr *IdxExpr = AL.getArgAsExpr(0);
 3187   Expr *E = AL.getArgAsExpr(0);
 3257   Expr *IdxExpr = AL.getArgAsExpr(1);
 3309   Expr *FirstArgExpr = AL.getArgAsExpr(2);
 3387       Expr *IdxExpr = AL.getArgAsExpr(I);
 3574 void Sema::AddAlignValueAttr(Decl *D, const AttributeCommonInfo &CI, Expr *E) {
 3628   Expr *E = AL.getArgAsExpr(0);
 3641 void Sema::AddAlignedAttr(Decl *D, const AttributeCommonInfo &CI, Expr *E,
 4671   Expr *NumParamsExpr = AL.getArgAsExpr(0);
 4699 static Expr *makeLaunchBoundsArgExpr(Sema &S, Expr *E,
 4699 static Expr *makeLaunchBoundsArgExpr(Sema &S, Expr *E,
 4733   return ValArg.getAs<Expr>();
 4737                                Expr *MaxThreads, Expr *MinBlocks) {
 4737                                Expr *MaxThreads, Expr *MinBlocks) {
 5487   Expr *NumParamsExpr = static_cast<Expr *>(AL.getArgAsExpr(0));
 5782 checkAMDGPUFlatWorkGroupSizeArguments(Sema &S, Expr *MinExpr, Expr *MaxExpr,
 5782 checkAMDGPUFlatWorkGroupSizeArguments(Sema &S, Expr *MinExpr, Expr *MaxExpr,
 5813                                           Expr *MinExpr, Expr *MaxExpr) {
 5813                                           Expr *MinExpr, Expr *MaxExpr) {
 5825   Expr *MinExpr = AL.getArgAsExpr(0);
 5826   Expr *MaxExpr = AL.getArgAsExpr(1);
 5831 static bool checkAMDGPUWavesPerEUArguments(Sema &S, Expr *MinExpr,
 5832                                            Expr *MaxExpr,
 5866                                    Expr *MinExpr, Expr *MaxExpr) {
 5866                                    Expr *MinExpr, Expr *MaxExpr) {
 5881   Expr *MinExpr = AL.getArgAsExpr(0);
 5882   Expr *MaxExpr = (AL.getNumArgs() > 1) ? AL.getArgAsExpr(1) : nullptr;
 5889   Expr *NumSGPRExpr = AL.getArgAsExpr(0);
 5898   Expr *NumVGPRExpr = AL.getArgAsExpr(0);
 5930   Expr *VersionExpr = static_cast<Expr *>(AL.getArgAsExpr(0));
 6066   SmallVector<Expr*, 1> Args;
 6076   SmallVector<Expr*, 1> Args;
 6086   SmallVector<Expr*, 2> Args;
 6097   SmallVector<Expr *, 1> Args;
 6110   SmallVector<Expr*, 1> Args;
tools/clang/lib/Sema/SemaDeclCXX.cpp
   61     Expr *DefaultArg;
   65     CheckDefaultArgumentVisitor(Expr *defarg, Sema *s)
   68     bool VisitExpr(Expr *Node);
   76   bool CheckDefaultArgumentVisitor::VisitExpr(Expr *Node) {
  127       Expr *E = *i;
  220 void Sema::ImplicitExceptionSpecification::CalledExpr(Expr *E) {
  250 Sema::SetParamDefaultArgument(ParmVarDecl *Param, Expr *Arg,
  272   Arg = Result.getAs<Expr>();
  300                                 Expr *DefaultArg) {
  876     llvm::function_ref<ExprResult(SourceLocation, Expr *, unsigned)> GetInit) {
 1191       Expr *Get = UnresolvedLookupExpr::Create(
 1196       Expr *Arg = E.get();
 1201     Expr *Init = E.get();
 2087     if (!isa<Expr>(S))
 2299       !Expr::isPotentialConstantExpr(Dcl, Diags)) {
 3149                                Expr *BW, const VirtSpecifiers &VS,
 3160   Expr *BitWidth = static_cast<Expr*>(BW);
 3534       Expr *Base = ME;
 3601     void HandleValue(Expr *E, bool AddressOf) {
 3661     void CheckInitializer(Expr *E, const CXXConstructorDecl *FieldConstructor,
 3704         Expr *ArgExpr = E->getArg(0);
 3718       Expr *Callee = E->getCallee();
 3740       Expr *Callee = E->getCallee();
 3833       Expr *InitExpr = FieldInit->getInit();
 3869                                                   Expr *InitExpr) {
 3975                           Expr *InitList,
 3992                           ArrayRef<Expr *> Args,
 3995   Expr *List = ParenListExpr::Create(Context, LParenLoc, Args, RParenLoc);
 4053                           Expr *Init,
 4218 Sema::BuildMemberInitializer(ValueDecl *Member, Expr *Init,
 4294 Sema::BuildDelegatingInitializer(TypeSourceInfo *TInfo, Expr *Init,
 4346                                           DelegationInit.getAs<Expr>(),
 4352                            Expr *Init, CXXRecordDecl *ClassDecl,
 4478                                           BaseInit.getAs<Expr>(),
 4483 static Expr *CastForMoving(Sema &SemaRef, Expr *E, QualType T = QualType()) {
 4483 static Expr *CastForMoving(Sema &SemaRef, Expr *E, QualType T = QualType()) {
 4533     Expr *CopyCtorArg =
 4576                                              BaseInit.getAs<Expr>(),
 4583 static bool RefersToRValueRef(Expr *MemRef) {
 4607     Expr *MemberExprBase =
 4655     Expr *CtorArgE = CtorArg.getAs<Expr>();
 4655     Expr *CtorArgE = CtorArg.getAs<Expr>();
 4665           SemaRef.Context, Indirect, Loc, Loc, MemberInit.getAs<Expr>(), Loc);
 4668           SemaRef.Context, Field, Loc, Loc, MemberInit.getAs<Expr>(), Loc);
 8741       Expr *ThisArg = nullptr;
11234     Expr *E = FD->getInClassInitializer();
11302 ExplicitSpecifier Sema::ActOnExplicitBoolSpecifier(Expr *ExplicitExpr) {
11903   static Expr *assertNotNull(Expr *E) {
11903   static Expr *assertNotNull(Expr *E) {
11912   virtual Expr *build(Sema &S, SourceLocation Loc) const = 0;
11920   Expr *build(Sema &S, SourceLocation Loc) const override {
11930   Expr *build(Sema &S, SourceLocation Loc) const override {
11931     return assertNotNull(S.ActOnCXXThis(Loc).getAs<Expr>());
11942   Expr *build(Sema &S, SourceLocation Loc) const override {
11957   Expr *build(Sema &S, SourceLocation Loc) const override {
11973   Expr *build(Sema &S, SourceLocation Loc) const override {
11989   Expr *build(Sema &S, SourceLocation Loc) const override {
12000   Expr *build(Sema &S, SourceLocation Loc) const override {
12013   Expr *build(Sema &S, SourceLocation Loc) const override {
12039   Expr *From = FromB.build(S, Loc);
12043   Expr *To = ToB.build(S, Loc);
12071   Expr *CallArgs[] = {
12194     Expr *FromInst = From.build(S, Loc);
12196                                                   OpEqualRef.getAs<Expr>(),
12280   Expr *Comparison
12289   Expr *Increment = new (S.Context)
12546     Statements.push_back(Copy.getAs<Expr>());
12914     Statements.push_back(Move.getAs<Expr>());
13327   Expr *FunctionRef = BuildDeclRefExpr(Invoker, Invoker->getType(),
13353   Expr *This = ActOnCXXThis(CurrentLocation).get();
13354   Expr *DerefThis =CreateBuiltinUnaryOp(CurrentLocation, UO_Deref, This).get();
13440     Expr *SubExpr = ExprArgs[0];
13638                               SmallVectorImpl<Expr*> &ConvertedArgs,
13643   Expr **Args = ArgsPtr.data();
13658   SmallVector<Expr *, 8> AllArgs;
14193                                            Expr *LangStr,
14356       Expr *opaqueValue =
14367           Expr *init = MaybeCreateExprWithCleanups(construct);
14437                                          Expr *AssertExpr,
14438                                          Expr *AssertMessageExpr,
14451                                          Expr *AssertExpr,
14485       Expr *InnerCond = nullptr;
15295     if (!isa<Expr>(SubStmt))
15819                                          MemberInit.getAs<Expr>(),
16015     Expr *Arg = nullptr;
16016     ArrayRef<Expr *> Args;
16059     ArrayRef<SourceRange> DynamicExceptionRanges, Expr *NoexceptExpr,
16110              Expr *NoexceptExpr) {
16146                                        Expr *BitWidth,
tools/clang/lib/Sema/SemaExceptionSpec.cpp
   79                                    Expr *NoexceptExpr,
  898 bool Sema::CheckExceptionSpecCompatibility(Expr *From, QualType ToType) {
  973 static CanThrowResult canSubExprsThrow(Sema &S, const Expr *E) {
  976     R = mergeCanThrow(R, S.canThrow(cast<Expr>(SubStmt)));
  983 static CanThrowResult canCalleeThrow(Sema &S, const Expr *E, const Decl *D) {
 1053   Expr *Op = DC->getExprOperand();
 1070 CanThrowResult Sema::canThrow(const Expr *E) {
 1075   case Expr::ConstantExprClass:
 1078   case Expr::CXXThrowExprClass:
 1082   case Expr::CXXDynamicCastExprClass: {
 1091   case Expr::CXXTypeidExprClass:
 1099   case Expr::CallExprClass:
 1100   case Expr::CXXMemberCallExprClass:
 1101   case Expr::CXXOperatorCallExprClass:
 1102   case Expr::UserDefinedLiteralClass: {
 1116   case Expr::CXXConstructExprClass:
 1117   case Expr::CXXTemporaryObjectExprClass: {
 1125   case Expr::CXXInheritedCtorInitExprClass:
 1129   case Expr::LambdaExprClass: {
 1140   case Expr::CXXNewExprClass: {
 1151   case Expr::CXXDeleteExprClass: {
 1171   case Expr::CXXBindTemporaryExprClass: {
 1182   case Expr::ObjCMessageExprClass:
 1183   case Expr::ObjCPropertyRefExprClass:
 1184   case Expr::ObjCSubscriptRefExprClass:
 1190   case Expr::ObjCArrayLiteralClass:
 1191   case Expr::ObjCDictionaryLiteralClass:
 1192   case Expr::ObjCBoxedExprClass:
 1197   case Expr::CoawaitExprClass:
 1198   case Expr::ConditionalOperatorClass:
 1199   case Expr::CompoundLiteralExprClass:
 1200   case Expr::CoyieldExprClass:
 1201   case Expr::CXXConstCastExprClass:
 1202   case Expr::CXXReinterpretCastExprClass:
 1203   case Expr::CXXRewrittenBinaryOperatorClass:
 1204   case Expr::BuiltinBitCastExprClass:
 1205   case Expr::CXXStdInitializerListExprClass:
 1206   case Expr::DesignatedInitExprClass:
 1207   case Expr::DesignatedInitUpdateExprClass:
 1208   case Expr::ExprWithCleanupsClass:
 1209   case Expr::ExtVectorElementExprClass:
 1210   case Expr::InitListExprClass:
 1211   case Expr::ArrayInitLoopExprClass:
 1212   case Expr::MemberExprClass:
 1213   case Expr::ObjCIsaExprClass:
 1214   case Expr::ObjCIvarRefExprClass:
 1215   case Expr::ParenExprClass:
 1216   case Expr::ParenListExprClass:
 1217   case Expr::ShuffleVectorExprClass:
 1218   case Expr::ConvertVectorExprClass:
 1219   case Expr::VAArgExprClass:
 1223   case Expr::ArraySubscriptExprClass:
 1224   case Expr::OMPArraySectionExprClass:
 1225   case Expr::BinaryOperatorClass:
 1226   case Expr::DependentCoawaitExprClass:
 1227   case Expr::CompoundAssignOperatorClass:
 1228   case Expr::CStyleCastExprClass:
 1229   case Expr::CXXStaticCastExprClass:
 1230   case Expr::CXXFunctionalCastExprClass:
 1231   case Expr::ImplicitCastExprClass:
 1232   case Expr::MaterializeTemporaryExprClass:
 1233   case Expr::UnaryOperatorClass: {
 1239   case Expr::StmtExprClass:
 1242   case Expr::CXXDefaultArgExprClass:
 1245   case Expr::CXXDefaultInitExprClass:
 1248   case Expr::ChooseExprClass:
 1253   case Expr::GenericSelectionExprClass:
 1259   case Expr::CXXDependentScopeMemberExprClass:
 1260   case Expr::CXXUnresolvedConstructExprClass:
 1261   case Expr::DependentScopeDeclRefExprClass:
 1262   case Expr::CXXFoldExprClass:
 1265   case Expr::AsTypeExprClass:
 1266   case Expr::BinaryConditionalOperatorClass:
 1267   case Expr::BlockExprClass:
 1268   case Expr::CUDAKernelCallExprClass:
 1269   case Expr::DeclRefExprClass:
 1270   case Expr::ObjCBridgedCastExprClass:
 1271   case Expr::ObjCIndirectCopyRestoreExprClass:
 1272   case Expr::ObjCProtocolExprClass:
 1273   case Expr::ObjCSelectorExprClass:
 1274   case Expr::ObjCAvailabilityCheckExprClass:
 1275   case Expr::OffsetOfExprClass:
 1276   case Expr::PackExpansionExprClass:
 1277   case Expr::PseudoObjectExprClass:
 1278   case Expr::SubstNonTypeTemplateParmExprClass:
 1279   case Expr::SubstNonTypeTemplateParmPackExprClass:
 1280   case Expr::FunctionParmPackExprClass:
 1281   case Expr::UnaryExprOrTypeTraitExprClass:
 1282   case Expr::UnresolvedLookupExprClass:
 1283   case Expr::UnresolvedMemberExprClass:
 1284   case Expr::TypoExprClass:
 1288   case Expr::AddrLabelExprClass:
 1289   case Expr::ArrayTypeTraitExprClass:
 1290   case Expr::AtomicExprClass:
 1291   case Expr::TypeTraitExprClass:
 1292   case Expr::CXXBoolLiteralExprClass:
 1293   case Expr::CXXNoexceptExprClass:
 1294   case Expr::CXXNullPtrLiteralExprClass:
 1295   case Expr::CXXPseudoDestructorExprClass:
 1296   case Expr::CXXScalarValueInitExprClass:
 1297   case Expr::CXXThisExprClass:
 1298   case Expr::CXXUuidofExprClass:
 1299   case Expr::CharacterLiteralClass:
 1300   case Expr::ExpressionTraitExprClass:
 1301   case Expr::FloatingLiteralClass:
 1302   case Expr::GNUNullExprClass:
 1303   case Expr::ImaginaryLiteralClass:
 1304   case Expr::ImplicitValueInitExprClass:
 1305   case Expr::IntegerLiteralClass:
 1306   case Expr::FixedPointLiteralClass:
 1307   case Expr::ArrayInitIndexExprClass:
 1308   case Expr::NoInitExprClass:
 1309   case Expr::ObjCEncodeExprClass:
 1310   case Expr::ObjCStringLiteralClass:
 1311   case Expr::ObjCBoolLiteralExprClass:
 1312   case Expr::OpaqueValueExprClass:
 1313   case Expr::PredefinedExprClass:
 1314   case Expr::SizeOfPackExprClass:
 1315   case Expr::StringLiteralClass:
 1316   case Expr::SourceLocExprClass:
 1317   case Expr::ConceptSpecializationExprClass:
 1321   case Expr::MSPropertyRefExprClass:
 1322   case Expr::MSPropertySubscriptExprClass:
 1331   case Expr::NoStmtClass:
tools/clang/lib/Sema/SemaExpr.cpp
  341                                  ArrayRef<Expr *> Args) {
  402   Expr *sentinelExpr = Args[Args.size() - numArgsAfterSentinel - 1];
  431 SourceRange Sema::getExprRange(Expr *E) const {
  478 static void CheckForNullPointerDereference(Sema &S, Expr *E) {
  487           isNullPointerConstant(S.Context, Expr::NPC_ValueDependentIsNotNull) &&
  499                                     const Expr* RHS) {
  509   const Expr *Base = OIRE->getBase();
  840 void Sema::checkVariadicArgument(const Expr *E, VariadicCallType CT) {
 1735     Expr *Args[] = { Lit, LenArg };
 1846     if (auto *BE = BD->getBinding())
 1886     DeclarationName Typo, SourceLocation TypoLoc, ArrayRef<Expr *> Args,
 1923                                ArrayRef<Expr *> Args, TypoExpr **Out) {
 2118 static Expr *
 2254       if (Expr *Ex = E.getAs<Expr>())
 2254       if (Expr *Ex = E.getAs<Expr>())
 2275       if (Expr *E = recoverFromMSUnqualifiedLookup(*this, Context, NameInfo,
 3304   Expr *Lit = new (Context) CharacterLiteral(Literal.getValue(), Kind, Ty,
 3331 static Expr *BuildFloatingLiteral(Sema &S, NumericLiteralParser &Literal,
 3363 bool Sema::CheckLoopHintExpr(Expr *E, SourceLocation Loc) {
 3460       Expr *Lit;
 3482       Expr *Lit = StringLiteral::Create(
 3511   Expr *Res;
 3800                                      Expr *E) {
 3822 bool Sema::CheckUnaryExprOrTypeTraitOperand(Expr *E,
 3973 static bool CheckAlignOfExpr(Sema &S, Expr *E, UnaryExprOrTypeTrait ExprKind) {
 3985   Expr *Inner = E->IgnoreParens();
 4029 bool Sema::CheckVecStepExpr(Expr *E) {
 4246   Expr *ArgEx = (Expr *)TyOrEx;
 4310                                          Expr *op) {
 4322 static bool isMSPropertySubscriptExpr(Sema &S, Expr *Base) {
 4323   auto *BaseNoParens = Base->IgnoreParens();
 4419 void Sema::CheckAddressOfNoDeref(const Expr *E) {
 4421   const Expr *StrippedExpr = E->IgnoreParenImpCasts();
 4447   const Expr *Base = E->getBase();
 4562     Expr::EvalResult Result;
 4576     Expr::EvalResult Result;
 4614   Expr *LHSExp = Base;
 4615   Expr *RHSExp = Idx;
 4623     for (auto *Op : {LHSExp, RHSExp}) {
 4648   Expr *BaseExpr, *IndexExpr;
 4816     Expr *UninstExpr = Param->getUninstantiatedDefaultArg();
 4873     Expr *ResultE = Result.getAs<Expr>();
 4873     Expr *ResultE = Result.getAs<Expr>();
 4881         ActOnFinishFullExpr(Result.getAs<Expr>(), Param->getOuterLocStart(),
 4887     Param->setDefaultArg(Result.getAs<Expr>());
 4938                           Expr *Fn) {
 4981 static TypoCorrection TryTypoCorrectionForCall(Sema &S, Expr *Fn,
 4983                                                ArrayRef<Expr *> Args) {
 5026 Sema::ConvertArgumentsForCall(CallExpr *Call, Expr *Fn,
 5029                               ArrayRef<Expr *> Args,
 5128   SmallVector<Expr *, 8> AllArgs;
 5144                                   unsigned FirstParam, ArrayRef<Expr *> Args,
 5145                                   SmallVectorImpl<Expr *> &AllArgs,
 5155     Expr *Arg;
 5194       Arg = ArgE.getAs<Expr>();
 5202       Arg = ArgExpr.getAs<Expr>();
 5222       for (Expr *A : Args.slice(ArgIx)) {
 5231       for (Expr *A : Args.slice(ArgIx)) {
 5239     for (Expr *A : Args.slice(ArgIx))
 5265                                const Expr *ArgExpr) {
 5277                                      Expr::NPC_NeverValueDependent)) {
 5424     Expr *Arg = ArgRes.get();
 5476 static void checkDirectCallValidity(Sema &S, const Expr *Fn,
 5642     if (Fn->isTypeDependent() || Expr::hasAnyTypeDependentArguments(ArgExprs)) {
 5681       if (Expr::hasAnyTypeDependentArguments(ArgExprs))
 5701   Expr *NakedFn = Fn->IgnoreParens();
 5947   TheCall->setValueKind(Expr::getValueKindForType(FuncT->getReturnType()));
 5975       Expr *Arg = Args[i];
 5985         Arg = ArgE.getAs<Expr>();
 5993         Arg = ArgE.getAs<Expr>();
 6108         Expr *Init = ILE->getInit(i);
 6350                                            Expr::NPC_ValueDependentIsNull))
 6688       Expr *E = (PE ? PE->getSubExpr() : PLE->getExpr(0));
 6729   Expr **exprs;
 6731   Expr *subExpr;
 6749   SmallVector<Expr *, 8> initExprs;
 6831 bool Sema::DiagnoseConditionalForNull(Expr *LHSExpr, Expr *RHSExpr,
 6831 bool Sema::DiagnoseConditionalForNull(Expr *LHSExpr, Expr *RHSExpr,
 6833   Expr *NullExpr = LHSExpr;
 6834   Expr *NonPointerExpr = RHSExpr;
 6835   Expr::NullPointerConstantKind NullKind =
 6837                                       Expr::NPC_ValueDependentIsNotNull);
 6839   if (NullKind == Expr::NPCK_NotNull) {
 6844                                         Expr::NPC_ValueDependentIsNotNull);
 6847   if (NullKind == Expr::NPCK_NotNull)
 6850   if (NullKind == Expr::NPCK_ZeroExpression)
 6853   if (NullKind == Expr::NPCK_ZeroLiteral) {
 6862   int DiagType = (NullKind == Expr::NPCK_CXX11_nullptr);
 6870 static bool checkCondition(Sema &S, Expr *Cond, SourceLocation QuestionLoc) {
 6891     Expr *LHSExpr = LHS.get();
 6892     Expr *RHSExpr = RHS.get();
 6911                                             Expr::NPC_ValueDependentIsNull))
 7121   Expr *Expr1 = IsIntFirstExpr ? Int.get() : PointerExpr;
 7122   Expr *Expr2 = IsIntFirstExpr ? PointerExpr : Int.get();
 7233 static bool checkOpenCLConditionVector(Sema &S, Expr *Cond,
 7313 static bool checkBlockType(Sema &S, const Expr *E) {
 7635 static bool IsArithmeticBinaryExpr(Expr *E, BinaryOperatorKind *Opcode,
 7636                                    Expr **RHSExprs) {
 7681 static bool ExprLooksBoolean(Expr *E) {
 7704                                           Expr *Condition,
 7705                                           Expr *LHSExpr,
 7706                                           Expr *RHSExpr) {
 7708   Expr *CondRHS;
 7819   Expr *commonExpr = nullptr;
 8476   Expr *E = EResult.get();
 8517                                            Expr::NPC_ValueDependentIsNull)) {
 8618                                        Expr::NPC_ValueDependentIsNull)) {
 8632                                  Context, Expr::NPC_ValueDependentIsNull)) {
 8661     Expr *E = RHS.get();
 8696   explicit OriginalOperand(Expr *Op) : Orig(Op), Conversion(nullptr) {
 8709   Expr *Orig;
 8750     Expr *Vector = LHSNatVec ? LHS.get() : RHS.get();
 8751     Expr *NonVector = !LHSNatVec ? LHS.get() : RHS.get();
 8850   Expr::EvalResult EVResult;
 8887   Expr::EvalResult EVResult;
 9207 static void DiagnoseDivisionSizeofPointerOrArray(Sema &S, Expr *LHS, Expr *RHS,
 9207 static void DiagnoseDivisionSizeofPointerOrArray(Sema &S, Expr *LHS, Expr *RHS,
 9217   const Expr *LHSArg = LUE->getArgumentExpr()->IgnoreParens();
 9259   Expr::EvalResult RHSValue;
 9319                                                 Expr *LHSExpr, Expr *RHSExpr) {
 9319                                                 Expr *LHSExpr, Expr *RHSExpr) {
 9329                                             Expr *Pointer) {
 9342                                             Expr *Pointer, bool IsGNUIdiom) {
 9353                                                     Expr *LHS, Expr *RHS) {
 9353                                                     Expr *LHS, Expr *RHS) {
 9369                                                 Expr *Pointer) {
 9383                                                  Expr *Operand) {
 9404                                             Expr *Operand) {
 9436                                                 Expr *LHSExpr, Expr *RHSExpr) {
 9436                                                 Expr *LHSExpr, Expr *RHSExpr) {
 9491                                   Expr *LHSExpr, Expr *RHSExpr) {
 9491                                   Expr *LHSExpr, Expr *RHSExpr) {
 9493   Expr* IndexExpr = RHSExpr;
 9521                                    Expr *LHSExpr, Expr *RHSExpr) {
 9521                                    Expr *LHSExpr, Expr *RHSExpr) {
 9522   const Expr *StringRefExpr = LHSExpr;
 9572                                            Expr *LHSExpr, Expr *RHSExpr) {
 9572                                            Expr *LHSExpr, Expr *RHSExpr) {
 9614   Expr *PExp = LHS.get(), *IExp = RHS.get();
 9638           Context, Expr::NPC_ValueDependentIsNotNull)) {
 9640     Expr::EvalResult KnownVal;
 9717                                            Expr::NPC_ValueDependentIsNotNull)) {
 9719         Expr::EvalResult KnownVal;
 9800   Expr::EvalResult RHSResult;
 9829   Expr::EvalResult LHSResult;
10022 static void checkEnumComparison(Sema &S, SourceLocation Loc, Expr *LHS,
10023                                 Expr *RHS) {
10116 static bool hasIsEqualMethod(Sema &S, const Expr *LHS, const Expr *RHS) {
10116 static bool hasIsEqualMethod(Sema &S, const Expr *LHS, const Expr *RHS) {
10162 Sema::ObjCLiteralKind Sema::CheckLiteralKind(Expr *FromE) {
10179       Expr *Inner = cast<ObjCBoxedExpr>(FromE)->getSubExpr()->IgnoreParens();
10207   Expr *Literal;
10208   Expr *Other;
10220                                    Expr::NPC_ValueDependentIsNotNull))
10265   Expr *SubExpr = UO->getSubExpr()->IgnoreImpCasts();
10296 static bool checkForArray(const Expr *E) {
10311                                            Expr *LHS, Expr *RHS,
10311                                            Expr *LHS, Expr *RHS,
10313   Expr *LHSStripped = LHS->IgnoreParenImpCasts();
10314   Expr *RHSStripped = RHS->IgnoreParenImpCasts();
10348   if (Expr::isSameComparisonOperand(LHS, RHS)) {
10396   Expr *LiteralString = nullptr;
10397   Expr *LiteralStringStripped = nullptr;
10400                                           Expr::NPC_ValueDependentIsNull)) {
10406                                           Expr::NPC_ValueDependentIsNull)) {
10456 static bool checkThreeWayNarrowingConversion(Sema &S, QualType ToType, Expr *E,
10623                                      Expr::NPC_ValueDependentIsNotNull) ==
10624         Expr::NPCK_ZeroExpression) {
10695   const Expr::NullPointerConstantKind LHSNullKind =
10696       LHS.get()->isNullPointerConstant(Context, Expr::NPC_ValueDependentIsNull);
10697   const Expr::NullPointerConstantKind RHSNullKind =
10698       RHS.get()->isNullPointerConstant(Context, Expr::NPC_ValueDependentIsNull);
10699   bool LHSIsNull = LHSNullKind != Expr::NPCK_NotNull;
10700   bool RHSIsNull = RHSNullKind != Expr::NPCK_NotNull;
10963         Expr *E = LHS.get();
10971         Expr *E = RHS.get();
11369     Expr::EvalResult EVResult;
11441 static bool IsReadonlyMessage(Expr *E, Sema &S) {
11455 static NonConstCaptureKind isReferenceToNonConstCapture(Sema &S, Expr *E) {
11513 static void DiagnoseConstAssignment(Sema &S, const Expr *E,
11679 static void DiagnoseRecursiveConstFields(Sema &S, const Expr *E,
11702 static bool CheckForModifiableLvalue(Expr *E, SourceLocation Loc, Sema &S) {
11708   Expr::isModifiableLvalueResult IsLV = E->isModifiableLvalue(S.Context,
11710   if (IsLV == Expr::MLV_ClassTemporary && IsReadonlyMessage(E, S))
11711     IsLV = Expr::MLV_InvalidMessageExpression;
11712   if (IsLV == Expr::MLV_Valid)
11718   case Expr::MLV_ConstQualified:
11778   case Expr::MLV_ConstAddrSpace:
11781   case Expr::MLV_ConstQualifiedField:
11784   case Expr::MLV_ArrayType:
11785   case Expr::MLV_ArrayTemporary:
11789   case Expr::MLV_NotObjectType:
11793   case Expr::MLV_LValueCast:
11796   case Expr::MLV_Valid:
11798   case Expr::MLV_InvalidExpression:
11799   case Expr::MLV_MemberFunction:
11800   case Expr::MLV_ClassTemporary:
11803   case Expr::MLV_IncompleteType:
11804   case Expr::MLV_IncompleteVoidType:
11807   case Expr::MLV_DuplicateVectorComponents:
11810   case Expr::MLV_NoSetterProperty:
11812   case Expr::MLV_InvalidMessageExpression:
11815   case Expr::MLV_SubObjCPropertySetting:
11830 static void CheckIdentityFieldAssignment(Expr *LHSExpr, Expr *RHSExpr,
11830 static void CheckIdentityFieldAssignment(Expr *LHSExpr, Expr *RHSExpr,
11875 QualType Sema::CheckAssignmentOperands(Expr *LHSExpr, ExprResult &RHS,
11899     Expr *RHSCheck = RHS.get();
11945         const Expr *InnerLHS = LHSExpr->IgnoreParenCasts();
12008 static bool IgnoreCommaOperand(const Expr *E) {
12029 void Sema::DiagnoseCommaOperator(const Expr *LHS, SourceLocation Loc) {
12114 static QualType CheckIncrementDecrementOperand(Sema &S, Expr *Op,
12216 static ValueDecl *getPrimaryDecl(Expr *E) {
12231     Expr* Base = cast<ArraySubscriptExpr>(E)->getBase();
12274                                          Expr *E, unsigned Type) {
12288       Expr *E = OrigOp.get()->IgnoreParens();
12326   Expr *op = OrigOp.get()->IgnoreParens();
12359   Expr::LValueClassification lval = op->ClassifyLValue(Context);
12362   if (lval == Expr::LV_ClassTemporary || lval == Expr::LV_ArrayTemporary) {
12362   if (lval == Expr::LV_ClassTemporary || lval == Expr::LV_ArrayTemporary) {
12374   } else if (lval == Expr::LV_MemberFunction) {
12416   } else if (lval != Expr::LV_Valid && lval != Expr::LV_IncompleteVoidType) {
12416   } else if (lval != Expr::LV_Valid && lval != Expr::LV_IncompleteVoidType) {
12485   if (lval == Expr::LV_IncompleteVoidType) {
12501 static void RecordModifiableNonNullParam(Sema &S, const Expr *Exp) {
12520 static QualType CheckIndirectionOperand(Sema &S, Expr *Op, ExprValueKind &VK,
12644 static void DiagnoseSelfAssignment(Sema &S, Expr *LHSExpr, Expr *RHSExpr,
12644 static void DiagnoseSelfAssignment(Sema &S, Expr *LHSExpr, Expr *RHSExpr,
12685   const Expr *ObjCPointerExpr = nullptr, *OtherExpr = nullptr;
12686   const Expr *LHS = L.get();
12687   const Expr *RHS = R.get();
12705     const Expr *Ex = ObjCPointerExpr->IgnoreParenCasts();
12721 static NamedDecl *getDeclFromExpr(Expr *E) {
13078                                       SourceLocation OpLoc, Expr *LHSExpr,
13079                                       Expr *RHSExpr) {
13133 static bool EvaluatesAsTrue(Sema &S, Expr *E) {
13141 static bool EvaluatesAsFalse(Sema &S, Expr *E) {
13149                                              Expr *LHSExpr, Expr *RHSExpr) {
13149                                              Expr *LHSExpr, Expr *RHSExpr) {
13171                                              Expr *LHSExpr, Expr *RHSExpr) {
13171                                              Expr *LHSExpr, Expr *RHSExpr) {
13188                                          SourceLocation OpLoc, Expr *SubExpr) {
13203                                     Expr *SubExpr, StringRef Shift) {
13217                                  Expr *LHSExpr, Expr *RHSExpr) {
13217                                  Expr *LHSExpr, Expr *RHSExpr) {
13245                                     SourceLocation OpLoc, Expr *LHSExpr,
13246                                     Expr *RHSExpr){
13674 bool Sema::isQualifiedMemberAccess(Expr *E) {
13809       if (const Expr *Value = LastStmt->getExprStmt()) {
13818   Expr *ResStmtExpr = new (Context) StmtExpr(Compound, Ty, LPLoc, RPLoc);
13833   Expr *E = ER.get();
13880   SmallVector<Expr*, 4> Exprs;
13896       Expr *Idx = IdxRval.get();
14063     Expr *ActiveExpr = CondIsTrue ? LHSExpr : RHSExpr;
14338     Expr *CopyExpr = nullptr;
14434   Expr *OrigExpr = E;
14485       E = Init.getAs<Expr>();
14577 bool Sema::ConversionToObjCStringLiteralCheck(QualType DstType, Expr *&Exp,
14596   Expr *SrcExpr = Exp->IgnoreParenImpCasts();
14613                                               const Expr *SrcExpr) {
14634                                     Expr *SrcExpr, AssignmentAction Action,
14961   Expr::EvalResult EvalResult;
15090 const DeclRefExpr *CheckPossibleDeref(Sema &S, const Expr *PossibleDeref) {
15118   for (const Expr *E : Rec.PossibleDerefs) {
15137 void Sema::CheckUnusedVolatileAssignment(Expr *E) {
15190   for (auto *BO : Rec.VolatileAssignmentLHSs)
16385   case Expr::DeclRefExprClass: {
16399   case Expr::FunctionParmPackExprClass: {
16415   case Expr::ArraySubscriptExprClass: {
16417     Expr *OldBase = ASE->getBase()->IgnoreImplicit();
16423     Expr *LHS = ASE->getBase() == ASE->getLHS() ? Base.get() : ASE->getLHS();
16424     Expr *RHS = ASE->getBase() == ASE->getRHS() ? Base.get() : ASE->getRHS();
16430   case Expr::MemberExprClass: {
16464   case Expr::BinaryOperatorClass: {
16466     Expr *LHS = BO->getLHS();
16467     Expr *RHS = BO->getRHS();
16488   case Expr::ParenExprClass: {
16498   case Expr::ConditionalOperatorClass: {
16518   case Expr::UnaryOperatorClass: {
16532   case Expr::GenericSelectionExprClass: {
16535     SmallVector<Expr *, 4> AssocExprs;
16537     for (Expr *OrigAssocExpr : GSE->getAssocExprs()) {
16560   case Expr::ChooseExprClass: {
16583   case Expr::ConstantExprClass: {
16593   case Expr::ImplicitCastExprClass: {
16666   for (Expr *E : LocalMaybeODRUseExprs) {
16686                                     VarDecl *Var, Expr *E) {
16865                                Decl *D, Expr *E, bool MightBeOdrUse) {
16899 void Sema::MarkDeclRefReferenced(DeclRefExpr *E, const Expr *Base) {
17070 void Sema::MarkDeclarationsReferencedInExpr(Expr *E,
17183 void Sema::DiagnoseAssignmentAsCondition(Expr *E) {
17250   Expr *E = ParenE->IgnoreParens();
17255                                                            == Expr::MLV_Valid) {
17300                                            Expr *SubExpr, ConditionKind CK) {
17357       Expr *SubExpr = SubResult.get();
17377       Expr *SubExpr = SubResult.get();
17451       Expr *SubExpr = SubResult.get();
17509   Expr *CalleeExpr = E->getCallee();
17522     CalleeType = Expr::findBoundMemberType(CalleeExpr);
17545   E->setValueKind(Expr::getValueKindForType(DestType));
17575         Expr *Arg = E->getArg(i);
17633   E->setValueKind(Expr::getValueKindForType(DestType));
17813   Expr *orig = E;
17895     const Expr *BME = E->IgnoreParens();
17912     Expr *realCast = stripARCUnbridgedCast(E);
17967 bool Sema::CheckCaseExpression(Expr *E) {
tools/clang/lib/Sema/SemaExprCXX.cpp
  653     if (E->isNullPointerConstant(Context, Expr::NPC_ValueDependentIsNull)) {
  863                                 QualType ExceptionObjectTy, Expr *E) {
 1268 Expr *Sema::BuildCXXThisExpr(SourceLocation Loc, QualType Type,
 1373     Expr *Arg = Exprs[0];
 1409   Expr *Inner = Result.get();
 1427         Context, ResultType, Expr::getValueKindForType(Ty), TInfo, CK_NoOp,
 1653   Optional<Expr *> ArraySize;
 1679       if (Expr *NumElts = (Expr *)Array.NumElts) {
 1721                                        Expr *Init) {
 1796   Expr **Inits = &Initializer;
 1854       Expr *FirstBad = Inits[1];
 1862     Expr *Deduce = Inits[0];
 1928         Expr *ArraySize;
 1931         SizeConvertDiagnoser(Expr *ArraySize)
 2048       !Expr::hasAnyTypeDependentArguments(PlacementArgs) &&
 2062   SmallVector<Expr *, 8> AllPlaceArgs;
 2113       !Expr::hasAnyTypeDependentArguments(
 2223     Sema &S, LookupResult &R, SourceRange Range, SmallVectorImpl<Expr *> &Args,
 2225     OverloadCandidateSet *AlignedCandidates, Expr *AlignArg, bool Diagnose) {
 2362   SmallVector<Expr*, 8> AllocArgs;
 3013   const CXXNewExpr *getNewExprFromInitListOrExpr(const Expr *E);
 3053   const Expr *E = DE->getArgument()->IgnoreParenImpCasts();
 3064 MismatchingNewDeleteDetector::getNewExprFromInitListOrExpr(const Expr *E) {
 3107   const Expr *InitExpr = Field->getInClassInitializer();
 3458   SmallVector<Expr *, 8> Args(TheCall->arg_begin(), TheCall->arg_end());
 3690 Sema::IsStringLiteralToNonConstPointerConversion(Expr *From, QualType ToType) {
 3737     SmallVector<Expr*, 8> ConstructorArgs;
 3759     return S.MaybeBindToTemporary(Result.getAs<Expr>());
 3907       SmallVector<Expr*, 8> ConstructorArgs;
 4169     Expr *Elem = prepareVectorSplat(ToType, From).get();
 4963     SmallVector<Expr *, 2> ArgExprs;
 4972                           Expr::getValueKindForType(ArgTy)));
 4974     for (Expr &E : OpaqueArgExprs)
 5181                          Expr::getValueKindForType(LhsT));
 5182     Expr *FromPtr = &From;
 5234                         Expr::getValueKindForType(LhsT));
 5236                         Expr::getValueKindForType(RhsT));
 5292                                            QualType T, Expr *DimExpr,
 5380 static bool EvaluateExpressionTrait(ExpressionTrait ET, Expr *E) {
 5568 static bool TryClassUnification(Sema &Self, Expr *From, Expr *To,
 5568 static bool TryClassUnification(Sema &Self, Expr *From, Expr *To,
 5662   Expr *Args[2] = { LHS.get(), RHS.get() };
 5723   Expr *Arg = E.get();
 5784       Expr *NonThrow = LThrow ? RHS.get() : LHS.get();
 6111                                         Expr *&E1, Expr *&E2,
 6111                                         Expr *&E1, Expr *&E2,
 6135       E2->isNullPointerConstant(Context, Expr::NPC_ValueDependentIsNull)) {
 6143       E1->isNullPointerConstant(Context, Expr::NPC_ValueDependentIsNull)) {
 6304     Expr *&E1, *&E2;
 6311     Conversion(Sema &S, SourceLocation Loc, Expr *&E1, Expr *&E2,
 6311     Conversion(Sema &S, SourceLocation Loc, Expr *&E1, Expr *&E2,
 6323       E1 = E1Result.getAs<Expr>();
 6328       E2 = E2Result.getAs<Expr>();
 6377       Expr *Callee = Call->getCallee()->IgnoreParens();
 6526 Expr *Sema::MaybeCreateExprWithCleanups(Expr *SubExpr) {
 6526 Expr *Sema::MaybeCreateExprWithCleanups(Expr *SubExpr) {
 6562   Expr *E = new (Context) StmtExpr(CompStmt, Context.VoidTy, SourceLocation(),
 6845 static bool CheckArrow(Sema& S, QualType& ObjectType, Expr *&Base,
 7003   Expr *Result
 7197     Expr *SubE = E;
 7231   ExprValueKind VK = Expr::getValueKindForType(ResultType);
 7275 static bool IsSpecialDiscardedValue(Expr *E) {
 7436   Expr *Init = cast<Expr>(Eval->Value);
 7436   Expr *Init = cast<Expr>(Eval->Value);
 7456     Expr *const FE, LambdaScopeInfo *const CurrentLSI, Sema &S) {
 7619   llvm::SmallDenseMap<OverloadExpr *, Expr *, 4> OverloadResolution;
 7674   NamedDecl *getDeclFromExpr(Expr *E) {
 7708     Expr *FixedExpr = Res.get();
 7855         Expr *ResultCall = Result.get();
tools/clang/lib/Sema/SemaExprMember.cpp
  480 Sema::ActOnDependentMemberExpr(Expr *BaseExpr, QualType BaseType,
  523                                              Expr *BaseExpr,
  549 bool Sema::CheckQualifiedMemberReference(Expr *BaseExpr,
  642                                      Expr *BaseExpr,
  744 Sema::BuildMemberReferenceExpr(Expr *Base, QualType BaseType,
  807                                                Expr *baseObjectExpr,
  839   Expr *result = baseObjectExpr;
  884 BuildMSPropertyRefExpr(Sema &S, Expr *BaseExpr, bool IsArrow,
  897     Expr *Base, bool IsArrow, SourceLocation OpLoc, const CXXScopeSpec *SS,
  910     Expr *Base, bool IsArrow, SourceLocation OpLoc, NestedNameSpecifierLoc NNS,
  960 Sema::BuildMemberReferenceExpr(Expr *BaseExpr, QualType BaseExprType,
 1228 Sema::PerformMemberExprBaseConversion(Expr *Base, bool IsArrow) {
 1437       Expr *BaseExp = BaseExpr.get()->IgnoreParenImpCasts();
 1685 ExprResult Sema::ActOnMemberAccessExpr(Scope *S, Expr *Base,
 1756 Sema::BuildFieldReferenceExpr(Expr *BaseExpr, bool IsArrow,
 1849   Expr *baseExpr = nullptr; // null signifies implicit access
tools/clang/lib/Sema/SemaExprObjC.cpp
   35                                         ArrayRef<Expr *> Strings) {
   48     for (Expr *E : Strings) {
  314 ExprResult Sema::BuildObjCNumericLiteral(SourceLocation AtLoc, Expr *Number) {
  384 static ExprResult CheckObjCCollectionLiteralElement(Sema &S, Expr *Element,
  409   Expr *OrigElement = Element;
  498 ExprResult Sema::BuildObjCBoxedExpr(SourceRange SR, Expr *ValueExpr) {
  765 ExprResult Sema::BuildObjCSubscriptExpression(SourceLocation RB, Expr *BaseExpr,
  766                                         Expr *IndexExpr,
  879   Expr **ElementsBuffer = Elements.data();
 1368 QualType Sema::getMessageSendResultType(const Expr *Receiver,
 1527 void Sema::EmitRelatedResultTypeNote(const Expr *E) {
 1554     const Expr *Receiver, QualType ReceiverType, MultiExprArg Args,
 1637   VK = Expr::getValueKindForType(Method->getReturnType());
 1661     Expr *argExpr = Args[i];
 1712       Args[i] = ArgE.getAs<Expr>();
 1759 bool Sema::isSelfExpr(Expr *RExpr) {
 1766 bool Sema::isSelfExpr(Expr *receiver, const ObjCMethodDecl *method) {
 1818                           Expr *BaseExpr, SourceLocation OpLoc,
 2335                                ArrayRef<Expr *> Args, QualType ReceiverType,
 2386                                         Expr **Args, unsigned NumArgs) {
 2405   Expr *FormatExpr = Args[Idx];
 2475     Expr **Args = ArgsIn.data();
 2529   Expr **Args = ArgsIn.data();
 2612 ExprResult Sema::BuildInstanceMessageImplicit(Expr *Receiver,
 2670 ExprResult Sema::BuildInstanceMessage(Expr *Receiver,
 2718       Expr **Args = ArgsIn.data();
 2754                                               Expr::NPC_ValueDependentIsNull);
 3022   Expr **Args = ArgsIn.data();
 3197 static void RemoveSelectorFromWarningCache(Sema &S, Expr* Arg) {
 3212                                       Expr *Receiver,
 3353     ACCResult Visit(Expr *e) {
 3362     ACCResult VisitExpr(Expr *e) {
 3363       if (e->isNullPointerConstant(Context, Expr::NPC_ValueDependentIsNotNull))
 3550                                          Expr *castExpr,
 3551                                          Expr *realCast,
 3582     Expr *castedE = castExpr;
 3628     Expr *castedE = castExpr->IgnoreImpCasts();
 3672                           Expr *castExpr, Expr *realCast,
 3672                           Expr *castExpr, Expr *realCast,
 3802 static bool CheckObjCBridgeNSCast(Sema &S, QualType castType, Expr *castExpr,
 3868 static bool CheckObjCBridgeCFCast(Sema &S, QualType castType, Expr *castExpr,
 3936 void Sema::CheckTollFreeBridgeCast(QualType castType, Expr *castExpr) {
 3986 void Sema::CheckObjCBridgeRelatedCast(QualType castType, Expr *castExpr) {
 4007 bool Sema::CheckTollFreeBridgeStaticCast(QualType castType, Expr *castExpr,
 4100                                         Expr *&SrcExpr, bool Diagnose) {
 4138         Expr *args[] = { SrcExpr };
 4194                           Expr *&castExpr, CheckedConversionKind CCK,
 4308 void Sema::diagnoseARCUnbridgedCast(Expr *e) {
 4332   Expr *castExpr = realCast->getSubExpr();
 4341 Expr *Sema::stripARCUnbridgedCast(Expr *e) {
 4341 Expr *Sema::stripARCUnbridgedCast(Expr *e) {
 4345     Expr *sub = stripARCUnbridgedCast(pe->getSubExpr());
 4349     Expr *sub = stripARCUnbridgedCast(uo->getSubExpr());
 4357     SmallVector<Expr *, 4> subExprs;
 4363       Expr *sub = assoc.getAssociationExpr();
 4397 static Expr *maybeUndoReclaimObject(Expr *e) {
 4397 static Expr *maybeUndoReclaimObject(Expr *e) {
 4398   Expr *curExpr = e, *prevExpr = nullptr;
 4437                                       Expr *SubExpr) {
 4531   Expr *Result = new (Context) ObjCBridgedCastExpr(LParenLoc, Kind, CK,
 4550                                       Expr *SubExpr) {
tools/clang/lib/Sema/SemaFixItUtils.cpp
   50 bool ConversionFixItGenerator::tryToFixConversion(const Expr *FullExpr,
   65   const Expr* Expr = FullExpr->IgnoreImpCasts();
  102           isNullPointerConstant(S.Context, Expr::NPC_ValueDependentIsNotNull))
tools/clang/lib/Sema/SemaInit.cpp
   62 static StringInitFailureKind IsStringInit(Expr *Init, const ArrayType *AT,
  135 static StringInitFailureKind IsStringInit(Expr *init, QualType declType,
  145 static void updateStringLiteralType(Expr *E, QualType Ty) {
  168 static void updateGNUCompoundLiteralRValue(Expr *E) {
  188 static void CheckStringInit(Expr *Str, QualType &DeclT, const ArrayType *AT,
  366                                    Expr *expr);
  377   void diagnoseInitOverride(Expr *OldInit, SourceRange NewInitRange,
  465                               Expr *InitExpr, FieldDecl *Field,
  488   Expr *InitExpr;
  622       ILE->setInit(Init, BaseInit.getAs<Expr>());
  654       Expr *Filler = new (SemaRef.Context) NoInitExpr(Field->getType());
  709       ILE->setInit(Init, MemberInit.getAs<Expr>());
  715       ILE->updateInit(SemaRef.Context, Init, MemberInit.getAs<Expr>());
  864     Expr *InitExpr = (Init < NumInits ? ILE->getInit(Init) : nullptr);
  873       Expr *Filler = nullptr;
  885         Filler = ElementInit.getAs<Expr>();
 1315   Expr *expr = IList->getInit(Index);
 1373                                     Result.getAs<Expr>());
 1430                                   ExprRes.getAs<Expr>());
 1522   Expr *expr = IList->getInit(Index);
 1556   Expr *ResultExpr = nullptr;
 1561     ResultExpr = Result.getAs<Expr>();
 1596   Expr *expr = IList->getInit(Index);
 1622   expr = Result.getAs<Expr>();
 1655     Expr *Init = IList->getInit(Index);
 1669       Expr *ResultExpr = nullptr;
 1673         ResultExpr = Result.getAs<Expr>();
 1878     Expr *Init = IList->getInit(Index);
 1955                                              Expr *InitExpr,
 2056     Expr *Init = Index < IList->getNumInits() ? IList->getInit(Index) : nullptr;
 2092     Expr *Init = IList->getInit(Index);
 2286   SmallVector<Expr*, 4> IndexExprs(NumIndexExprs);
 2375       Expr *Init = DIE->getInit();
 2422       Expr *ExistingInit = StructuredIndex < StructuredList->getNumInits() ?
 2581           Expr *ExistingInit = StructuredList->getInit(0);
 2646           if (Expr *PrevInit = StructuredList->getInit(OldIndex)) {
 2796   Expr *IndexExpr = nullptr;
 2859     Expr *SubExpr = StructuredList->getInit(0)->IgnoreParens();
 2881         Expr *Init = new (Context) IntegerLiteral(
 2903         Expr *Init = new (Context) IntegerLiteral(
 2980   Expr *ExistingInit = nullptr;
 3077                                                   Expr *expr) {
 3082   if (Expr *PrevInit = StructuredList->updateInit(SemaRef.Context,
 3110 CheckArrayDesignatorExpr(Sema &S, Expr *Index, llvm::APSInt &Value) {
 3134   SmallVector<Expr *, 32> InitExpressions;
 3146       Expr *Index = static_cast<Expr *>(D.getArrayIndex());
 3162       Expr *StartIndex = static_cast<Expr *>(D.getArrayRangeStart());
 3163       Expr *EndIndex = static_cast<Expr *>(D.getArrayRangeEnd());
 3214                                     Init.getAs<Expr>());
 3938     Expr *Initializer = Args[0];
 4149                                              Expr *Initializer,
 4178                                            Expr *Initializer,
 4221     Expr *Initializer = InitList->getInit(0);
 4309         Expr *InitListAsExpr = InitList;
 4318       Expr *SubInit[1] = {InitList->getInit(0)};
 4366       Expr *InitListAsExpr = InitList;
 4376     Expr *E = InitList->getInit(0);
 4439       Expr *SubInit[1] = { InitList->getInit(0) };
 4464     Expr *Initializer, bool AllowRValues, bool IsLValueRef,
 4656                                            Expr *CurInitExpr);
 4662                                        Expr *Initializer,
 4687 static bool isNonReferenceableGLValue(Expr *E) {
 4695                                            Expr *Initializer,
 4710   Expr::Classification InitCategory = Initializer->Classify(S.Context);
 5000                                            Expr *Initializer,
 5069       Expr *InitListAsExpr = InitList;
 5128                                      Expr *Initializer,
 5308                                               const Expr *Init) {
 5321 static InvalidICRKind isInvalidICRSource(ASTContext &C, Expr *e,
 5379     return (e->isNullPointerConstant(C, Expr::NPC_ValueDependentIsNull)
 5388 static void checkIndirectCopyRestoreSource(Sema &S, Expr *src) {
 5425                                        Expr *Initializer) {
 5472                                         Expr *Initializer) {
 5482 static bool IsZeroInitializer(Expr *Initializer, Sema &S) {
 5490                                                Expr *Initializer) {
 5542 static bool isExprAnUnaddressableFunction(Sema &S, const Expr *E) {
 5619       Expr::hasAnyTypeDependentArguments(Args)) {
 5628   Expr *Initializer = nullptr;
 5741       Expr *OVEAsExpr = &OVE;
 6047                                            Expr *Initializer) {
 6110   Expr *CurInitExpr = (Expr *)CurInit.get();
 6171   SmallVector<Expr*, 8> ConstructorArgs;
 6247     CurInit = S.MaybeBindToTemporary(CurInit.getAs<Expr>());
 6256                                            Expr *CurInitExpr) {
 6370   SmallVector<Expr*, 8> ConstructorArgs;
 6644 using Local = Expr*;
 6658   Expr *E;
 6661   IndirectLocalPathEntry(EntryKind K, Expr *E) : Kind(K), E(E) {}
 6662   IndirectLocalPathEntry(EntryKind K, Expr *E, const Decl *D)
 6694                                              Expr *Init, LocalVisitor Visit,
 6699                                                   Expr *Init, ReferenceKind RK,
 6784 static void handleGslAnnotatedTypes(IndirectLocalPath &Path, Expr *Call,
 6845 static void visitLifetimeBoundArguments(IndirectLocalPath &Path, Expr *Call,
 6848   ArrayRef<Expr*> Args;
 6861   Expr *ObjectArg = nullptr;
 6895                                                   Expr *Init, ReferenceKind RK,
 6901   Expr *Old;
 7023                                              Expr *Init, LocalVisitor Visit,
 7028   Expr *Old;
 7166           Expr *SubInit = ILE->getInit(Index);
 7188     for (Expr *E : LE->capture_inits()) {
 7285                                       Expr *E) {
 7319                                     Expr *Init) {
 7577                                         const Expr *PostInit);
 7580 static void CheckMoveOnConstruction(Sema &S, const Expr *InitExpr,
 7610   const Expr *Arg = CE->getArg(0)->IgnoreImplicit();
 7641     const Expr *ArgStripped = Arg->IgnoreImplicit()->IgnoreParens();
 7677 static void CheckForNullPointerDereference(Sema &S, const Expr *E) {
 7684         isNullPointerConstant(S.Context, Expr::NPC_ValueDependentIsNotNull)) {
 7692 Sema::CreateMaterializeTemporaryExpr(QualType T, Expr *Temporary,
 7707 ExprResult Sema::TemporaryMaterializationConversion(Expr *E) {
 7725 ExprResult Sema::PerformQualificationConversion(Expr *E, QualType Ty,
 7831     Expr *Init = Args[0];
 7860   SmallVector<Expr*, 4> ArrayLoopCommonExprs;
 8052         SmallVector<Expr*, 8> ConstructorArgs;
 8057         Expr *Arg = CurInit.get();
 8110         CurInit = S.MaybeBindToTemporary(CurInit.getAs<Expr>());
 8260       Expr *E = CurInit.get();
 8287       Expr *Source = CurInit.get();
 8379       Expr *Cur = CurInit.get();
 8380       Expr *BaseExpr = new (S.Context)
 8383       Expr *IndexExpr =
 8394       Expr *Common = ArrayLoopCommonExprs.pop_back_val();
 8485       Expr *Init = CurInit.get()->IgnoreParens();
 8530         Expr::EvalResult EVResult;
 8575   if (auto *Init = CurInit.get())
 8586   if (const Expr *E = CurInit.get()) {
 8636                                    Expr *op) {
 8691                                       ArrayRef<Expr *> Args) {
 8697   Expr *OnlyArg;
 9493                                         const Expr *PostInit) {
 9587   Expr *InitE = Init.get();
 9605   Expr *InitE = Init.get();
 9692   if (Expr::hasAnyTypeDependentArguments(Inits)) {
 9836       Expr *E = ListInit->getInit(0);
tools/clang/lib/Sema/SemaLambda.cpp
  573 static EnumDecl *findEnumForBlockReturn(Expr *E) {
  598     if (Expr *last = dyn_cast_or_null<Expr>(SE->getSubStmt()->body_back()))
  598     if (Expr *last = dyn_cast_or_null<Expr>(SE->getSubStmt()->body_back()))
  637   if (Expr *retValue = ret->getRetValue())
  671     Expr *retValue = ret->getRetValue();
  681     Expr *E = (cleanups ? cleanups->getSubExpr() : retValue);
  760     const Expr *RetE = RS->getRetValue();
  788     Expr *&Init) {
  845   Init = Result.getAs<Expr>();
  853                                               unsigned InitStyle, Expr *Init) {
 1500     Expr *This = BuildCXXThisExpr(Loc, ThisTy, ImplicitCaptureLoc.isValid());
 1522   Expr *InitExpr = Init.get();
 1556     Expr *Init = From.getVariable()->getInit();
 1649   SmallVector<Expr *, 4> CaptureInits;
 1862                                                Expr *Src) {
 1922   Expr *BuildBlock = new (Context) BlockExpr(Block, Conv->getConversionType());
tools/clang/lib/Sema/SemaLookup.cpp
 2977     SourceLocation InstantiationLoc, ArrayRef<Expr *> Args,
 2994     Expr *Arg = Args[ArgIdx];
 3116   Expr *Arg = nullptr;
 3188   Expr::Classification Classification =
 3525                                    ArrayRef<Expr *> Args, ADLResult &Result) {
tools/clang/lib/Sema/SemaObjCProperty.cpp
 1418       Expr *LoadSelfExpr =
 1422       Expr *IvarRefExpr =
 1434         Expr *ResExpr = Res.getAs<Expr>();
 1434         Expr *ResExpr = Res.getAs<Expr>();
 1470       Expr *LoadSelfExpr =
 1474       Expr *lhs =
 1490         Expr *callExpr = Res.getAs<Expr>();
 1490         Expr *callExpr = Res.getAs<Expr>();
 1503       PIDecl->setSetterCXXAssignment(Res.getAs<Expr>());
tools/clang/lib/Sema/SemaOpenMP.cpp
   38 static const Expr *checkMapClauseExpressionBase(
   39     Sema &SemaRef, Expr *E,
   64     const Expr *RefExpr = nullptr;
   69                const Expr *RefExpr, DeclRefExpr *PrivateCopy,
   75       llvm::SmallVector<std::pair<Expr *, OverloadedOperatorKind>, 4>;
   84     llvm::PointerIntPair<const Expr *, 1, bool> RefExpr;
   88   using AlignedMapTy = llvm::SmallDenseMap<const ValueDecl *, const Expr *, 8>;
  105     llvm::PointerUnion<const Expr *, BOKPtrType> ReductionOp;
  111     void set(const Expr *RefExpr, SourceRange RR) {
  140     llvm::Optional<std::pair<const Expr *, OMPOrderedClause *>> OrderedRegion;
  150     Expr *TaskgroupReductionRef = nullptr;
  261   Expr *OMPPredefinedAllocators[OMPAllocateDeclAttr::OMPUserDefinedMemAlloc] = {
  275                     Expr *Allocator) {
  279   Expr *getAllocator(OMPAllocateDeclAttr::AllocatorTypeTy AllocatorKind) const {
  418   const Expr *addUniqueAligned(const ValueDecl *D, const Expr *NewDE);
  418   const Expr *addUniqueAligned(const ValueDecl *D, const Expr *NewDE);
  437   void addDSA(const ValueDecl *D, const Expr *E, OpenMPClauseKind A,
  447                                  const Expr *ReductionRef);
  453                                    Expr *&TaskgroupDescriptor) const;
  458                                    const Expr *&ReductionRef,
  459                                    Expr *&TaskgroupDescriptor) const;
  461   Expr *getTaskgroupReductionRef() const {
  628   void setOrderedRegion(bool IsOrdered, const Expr *Param,
  643   std::pair<const Expr *, OMPOrderedClause *> getOrderedRegionParam() const {
  657   std::pair<const Expr *, OMPOrderedClause *>
  860 static const Expr *getExprAsWritten(const Expr *E) {
  860 static const Expr *getExprAsWritten(const Expr *E) {
  875 static Expr *getExprAsWritten(Expr *E) {
  875 static Expr *getExprAsWritten(Expr *E) {
 1011 const Expr *DSAStackTy::addUniqueAligned(const ValueDecl *D,
 1012                                          const Expr *NewDE) {
 1067 void DSAStackTy::addDSA(const ValueDecl *D, const Expr *E, OpenMPClauseKind A,
 1144   Expr *&TaskgroupReductionRef =
 1155                                            const Expr *ReductionRef) {
 1167   Expr *&TaskgroupReductionRef =
 1179     Expr *&TaskgroupDescriptor) const {
 1188         ReductionData.ReductionOp.is<const Expr *>())
 1203     const ValueDecl *D, SourceRange &SR, const Expr *&ReductionRef,
 1204     Expr *&TaskgroupDescriptor) const {
 1213         !ReductionData.ReductionOp.is<const Expr *>())
 1216     ReductionRef = ReductionData.ReductionOp.get<const Expr *>();
 1704 void Sema::checkOpenMPDeviceExpr(const Expr *E) {
 2158         SmallVector<Expr *, 8> PrivateCopies;
 2159         for (Expr *DE : Clause->varlists()) {
 2205                                      Expr *NumIterations, Sema &SemaRef,
 2384                                         ArrayRef<Expr *> VarList) {
 2423 Sema::CheckOMPThreadPrivateDecl(SourceLocation Loc, ArrayRef<Expr *> VarList) {
 2424   SmallVector<Expr *, 8> Vars;
 2425   for (Expr *RefExpr : VarList) {
 2481     if (const Expr *Init = VD->getAnyInitializer()) {
 2504 getAllocatorKind(Sema &S, DSAStackTy *Stack, Expr *Allocator) {
 2512   const Expr *AE = Allocator->IgnoreParenImpCasts();
 2516     const Expr *DefAllocator = Stack->getAllocator(AllocatorKind);
 2529     Sema &S, DSAStackTy *Stack, Expr *RefExpr, VarDecl *VD,
 2530     OMPAllocateDeclAttr::AllocatorTypeTy AllocatorKind, Expr *Allocator) {
 2534   Expr *PrevAllocator = A->getAllocator();
 2541     const Expr *AE = Allocator->IgnoreParenImpCasts();
 2542     const Expr *PAE = PrevAllocator->IgnoreParenImpCasts();
 2581                           Expr *Allocator, SourceRange SR) {
 2597     SourceLocation Loc, ArrayRef<Expr *> VarList,
 2600   Expr *Allocator = nullptr;
 2614   SmallVector<Expr *, 8> Vars;
 2615   for (Expr *RefExpr : VarList) {
 2772   llvm::SmallVector<Expr *, 4> ImplicitFirstprivate;
 2773   llvm::SmallVector<Expr *, 4> ImplicitMap;
 3072   ArrayRef<Expr *> getImplicitFirstprivate() const {
 3075   ArrayRef<Expr *> getImplicitMap() const { return ImplicitMap; }
 3505                                              Expr *CaptureExpr, bool WithInit,
 3509   Expr *Init = AsExpression ? CaptureExpr : CaptureExpr->IgnoreImpCasts();
 3533 static DeclRefExpr *buildCapture(Sema &S, ValueDecl *D, Expr *CaptureExpr,
 3657       for (Expr *E : IRC->taskgroup_descriptors())
 3669         if (auto *E = cast_or_null<Expr>(VarRef)) {
 3669         if (auto *E = cast_or_null<Expr>(VarRef)) {
 3679         if (Expr *E = C->getPostUpdateExpr())
 4072 getPrivateItem(Sema &S, Expr *&RefExpr, SourceLocation &ELoc,
 4091       Expr *Base = ASE->getBase()->IgnoreParenImpCasts();
 4097       Expr *Base = OASE->getBase()->IgnoreParenImpCasts();
 4143     MutableArrayRef<Expr *>::iterator I, It, Et;
 4182     for (Expr *E : llvm::make_range(It, Et)) {
 4189       Expr *SimpleRefExpr = E;
 4212     for (Expr *E : AC->varlists()) {
 4215       Expr *SimpleRefExpr = E;
 4275     SmallVector<Expr *, 4> ImplicitFirstprivates(
 4278     SmallVector<Expr *, 4> ImplicitMaps(DSAChecker.getImplicitMap().begin(),
 4283         for (Expr *E : IRC->taskgroup_descriptors())
 4710     DeclGroupPtrTy DG, OMPDeclareSimdDeclAttr::BranchStateTy BS, Expr *Simdlen,
 4711     ArrayRef<Expr *> Uniforms, ArrayRef<Expr *> Aligneds,
 4711     ArrayRef<Expr *> Uniforms, ArrayRef<Expr *> Aligneds,
 4712     ArrayRef<Expr *> Alignments, ArrayRef<Expr *> Linears,
 4712     ArrayRef<Expr *> Alignments, ArrayRef<Expr *> Linears,
 4713     ArrayRef<unsigned> LinModifiers, ArrayRef<Expr *> Steps, SourceRange SR) {
 4748   llvm::DenseMap<const Decl *, const Expr *> UniformedArgs;
 4749   const Expr *UniformedLinearThis = nullptr;
 4750   for (const Expr *E : Uniforms) {
 4775   llvm::DenseMap<const Decl *, const Expr *> AlignedArgs;
 4776   const Expr *AlignedThis = nullptr;
 4777   for (const Expr *E : Aligneds) {
 4826   SmallVector<const Expr *, 4> NewAligns;
 4827   for (Expr *E : Alignments) {
 4842   llvm::DenseMap<const Decl *, const Expr *> LinearArgs;
 4845   for (const Expr *E : Linears) {
 4908   Expr *Step = nullptr;
 4909   Expr *NewStep = nullptr;
 4910   SmallVector<Expr *, 4> NewSteps;
 4911   for (Expr *E : Steps) {
 4957 Optional<std::pair<FunctionDecl *, Expr *>>
 4959                                         Expr *VariantRef, SourceRange SR) {
 5064       Expr *PossibleAddrOfVariantRef = VariantRefCast.get();
 5168   return std::make_pair(FD, cast<Expr>(DRE));
 5172     FunctionDecl *FD, Expr *VariantRef, SourceRange SR,
 5177   Expr *Score = nullptr;
 5206       Expr *VariantRef = A->getVariantFuncRef();
 5244   Expr *PreCond = nullptr;
 5247   Expr *NumIterations = nullptr;
 5249   Expr *CounterVar = nullptr;
 5251   Expr *PrivateCounterVar = nullptr;
 5253   Expr *CounterInit = nullptr;
 5256   Expr *CounterStep = nullptr;
 5268   Expr *MinValue = nullptr;
 5272   Expr *MaxValue = nullptr;
 5283   Expr *FinalCondition = nullptr;
 5307   Expr *LCRef = nullptr;
 5309   Expr *LB = nullptr;
 5311   Expr *UB = nullptr;
 5313   Expr *Step = nullptr;
 5337   Expr *Condition = nullptr;
 5349   bool checkAndSetCond(Expr *S);
 5352   bool checkAndSetInc(Expr *S);
 5356   Expr *getLoopDeclRefExpr() const { return LCRef; }
 5368   Expr *buildNumIterations(
 5370       llvm::MapVector<const Expr *, DeclRefExpr *> &Captures) const;
 5372   Expr *
 5373   buildPreCond(Scope *S, Expr *Cond,
 5374                llvm::MapVector<const Expr *, DeclRefExpr *> &Captures) const;
 5377   buildCounterVar(llvm::MapVector<const Expr *, DeclRefExpr *> &Captures,
 5381   Expr *buildPrivateCounterVar() const;
 5383   Expr *buildCounterInit() const;
 5385   Expr *buildCounterStep() const;
 5388   Expr *
 5389   buildOrderedLoopData(Scope *S, Expr *Counter,
 5390                        llvm::MapVector<const Expr *, DeclRefExpr *> &Captures,
 5391                        SourceLocation Loc, Expr *Inc = nullptr,
 5394   std::pair<Expr *, Expr *> buildMinMaxValues(
 5394   std::pair<Expr *, Expr *> buildMinMaxValues(
 5395       Scope *S, llvm::MapVector<const Expr *, DeclRefExpr *> &Captures) const;
 5397   Expr *buildFinalCondition(Scope *S) const;
 5412   bool checkAndSetIncRHS(Expr *RHS);
 5414   bool setLCDeclAndLB(ValueDecl *NewLCDecl, Expr *NewDeclRefExpr, Expr *NewLB,
 5414   bool setLCDeclAndLB(ValueDecl *NewLCDecl, Expr *NewDeclRefExpr, Expr *NewLB,
 5417   bool setUB(Expr *NewUB, llvm::Optional<bool> LessOp, bool StrictOp,
 5420   bool setStep(Expr *NewStep, bool Subtract);
 5434                                                  Expr *NewLCRefExpr,
 5435                                                  Expr *NewLB, bool EmitDiags) {
 5455 bool OpenMPIterationSpaceChecker::setUB(Expr *NewUB,
 5474 bool OpenMPIterationSpaceChecker::setStep(Expr *NewStep, bool Subtract) {
 5548   bool checkDecl(const Expr *E, const ValueDecl *VD) {
 5660   if (Expr *E = dyn_cast<Expr>(S))
 5660   if (Expr *E = dyn_cast<Expr>(S))
 5664       Expr *LHS = BO->getLHS()->IgnoreParens();
 5699       Expr *LHS = CE->getArg(0);
 5727 static const ValueDecl *getInitLCDecl(const Expr *E) {
 5747 bool OpenMPIterationSpaceChecker::checkAndSetCond(Expr *S) {
 5817 bool OpenMPIterationSpaceChecker::checkAndSetIncRHS(Expr *RHS) {
 5848 bool OpenMPIterationSpaceChecker::checkAndSetInc(Expr *S) {
 5931   if (Capture->isEvaluatable(SemaRef.Context, Expr::SE_AllowSideEffects))
 5945 Expr *OpenMPIterationSpaceChecker::buildNumIterations(
 5947     llvm::MapVector<const Expr *, DeclRefExpr *> &Captures) const {
 5952     Expr *LBVal = LB;
 5953     Expr *UBVal = UB;
 6003       Expr *LBMin = tryBuildCapture(SemaRef, LBMinVal.get(), Captures).get();
 6004       Expr *LBMax = tryBuildCapture(SemaRef, LBMaxVal.get(), Captures).get();
 6012       Expr *MinLessMax =
 6083       Expr *UBMin = tryBuildCapture(SemaRef, UBMinVal.get(), Captures).get();
 6084       Expr *UBMax = tryBuildCapture(SemaRef, UBMaxVal.get(), Captures).get();
 6092       Expr *MinGreaterMax =
 6115     Expr *UBExpr = TestIsLessOp.getValue() ? UBVal : LBVal;
 6116     Expr *LBExpr = TestIsLessOp.getValue() ? LBVal : UBVal;
 6117     Expr *Upper = tryBuildCapture(SemaRef, UBExpr, Captures).get();
 6118     Expr *Lower = tryBuildCapture(SemaRef, LBExpr, Captures).get();
 6203 std::pair<Expr *, Expr *> OpenMPIterationSpaceChecker::buildMinMaxValues(
 6203 std::pair<Expr *, Expr *> OpenMPIterationSpaceChecker::buildMinMaxValues(
 6204     Scope *S, llvm::MapVector<const Expr *, DeclRefExpr *> &Captures) const {
 6211   Expr *MinExpr = nullptr;
 6212   Expr *MaxExpr = nullptr;
 6213   Expr *LBExpr = TestIsLessOp.getValue() ? LB : UB;
 6214   Expr *UBExpr = TestIsLessOp.getValue() ? UB : LB;
 6219   Expr *Lower =
 6221   Expr *Upper =
 6318 Expr *OpenMPIterationSpaceChecker::buildFinalCondition(Scope *S) const {
 6324 Expr *OpenMPIterationSpaceChecker::buildPreCond(
 6325     Scope *S, Expr *Cond,
 6326     llvm::MapVector<const Expr *, DeclRefExpr *> &Captures) const {
 6365     llvm::MapVector<const Expr *, DeclRefExpr *> &Captures,
 6383 Expr *OpenMPIterationSpaceChecker::buildPrivateCounterVar() const {
 6400 Expr *OpenMPIterationSpaceChecker::buildCounterInit() const { return LB; }
 6403 Expr *OpenMPIterationSpaceChecker::buildCounterStep() const { return Step; }
 6405 Expr *OpenMPIterationSpaceChecker::buildOrderedLoopData(
 6406     Scope *S, Expr *Counter,
 6407     llvm::MapVector<const Expr *, DeclRefExpr *> &Captures, SourceLocation Loc,
 6408     Expr *Inc, OverloadedOperatorKind OOK) {
 6409   Expr *Cnt = SemaRef.DefaultLvalueConversion(Counter).get();
 6425     Expr *Upper = TestIsLessOp.getValue()
 6428     Expr *Lower = TestIsLessOp.getValue()
 6508         Expr *LoopDeclRefExpr = ISC.getLoopDeclRefExpr();
 6552     unsigned TotalNestedLoopCount, Expr *CollapseLoopCountExpr,
 6553     Expr *OrderedLoopCountExpr,
 6556     llvm::MapVector<const Expr *, DeclRefExpr *> &Captures) {
 6702       Expr *CntValue;
 6840 static bool fitsInto(unsigned Bits, bool Signed, const Expr *E, Sema &SemaRef) {
 6863               const llvm::MapVector<const Expr *, DeclRefExpr *> &Captures) {
 6874 static Expr *buildPostUpdate(Sema &S, ArrayRef<Expr *> PostUpdates) {
 6874 static Expr *buildPostUpdate(Sema &S, ArrayRef<Expr *> PostUpdates) {
 6875   Expr *PostUpdate = nullptr;
 6877     for (Expr *E : PostUpdates) {
 6878       Expr *ConvE = S.BuildCStyleCastExpr(
 6897 checkOpenMPLoop(OpenMPDirectiveKind DKind, Expr *CollapseLoopCountExpr,
 6898                 Expr *OrderedLoopCountExpr, Stmt *AStmt, Sema &SemaRef,
 6905     Expr::EvalResult Result;
 6917     Expr::EvalResult EVResult;
 6938   llvm::MapVector<const Expr *, DeclRefExpr *> Captures;
 7027   Expr *N0 = IterSpaces[0].NumIterations;
 7058     Expr *N = IterSpaces[Cnt].NumIterations;
 7236     Expr *RHS =
 7245       Expr *CombRHS =
 7266   Expr *BoundUB = UB.get();
 7292     Expr *BoundCombUB = CombUB.get();
 7411     Expr *BoundPrevUB = PrevUB.get();
 7584 static Expr *getCollapseNumberExpr(ArrayRef<OMPClause *> Clauses) {
 7592 static Expr *getOrderedNumberExpr(ArrayRef<OMPClause *> Clauses) {
 7615     const Expr *SimdlenLength = Simdlen->getSimdlen();
 7616     const Expr *SafelenLength = Safelen->getSafelen();
 7625     Expr::EvalResult SimdlenResult, SafelenResult;
 7873       Expr *E = cast<OMPHintClause>(C)->getHint();
 8155     if (const Expr *Param = DSAStack->getParentOrderedRegionParam().first) {
 8207   Expr *X;
 8209   Expr *E;
 8213   Expr *UpdateExpr;
 8236   Expr *getX() const { return X; }
 8238   Expr *getExpr() const { return E; }
 8242   Expr *getUpdateExpr() const { return UpdateExpr; }
 8274         Expr *LHS = AtomicInnerBinOp->getLHS();
 8275         Expr *RHS = AtomicInnerBinOp->getRHS();
 8338   if (auto *AtomicBody = dyn_cast<Expr>(S)) {
 8338   if (auto *AtomicBody = dyn_cast<Expr>(S)) {
 8452   Expr *X = nullptr;
 8453   Expr *V = nullptr;
 8454   Expr *E = nullptr;
 8455   Expr *UE = nullptr;
 8492     if (const auto *AtomicBody = dyn_cast<Expr>(Body)) {
 8492     if (const auto *AtomicBody = dyn_cast<Expr>(Body)) {
 8501             const Expr *NotLValueExpr = X->isLValue() ? V : X;
 8510           const Expr *NotScalarExpr =
 8555     if (const auto *AtomicBody = dyn_cast<Expr>(Body)) {
 8555     if (const auto *AtomicBody = dyn_cast<Expr>(Body)) {
 8572           const Expr *NotScalarExpr =
 8637     if (const auto *AtomicBody = dyn_cast<Expr>(Body)) {
 8637     if (const auto *AtomicBody = dyn_cast<Expr>(Body)) {
 8721             Expr *PossibleX = BinOp->getRHS()->IgnoreParenImpCasts();
 8751               Expr *PossibleX = BinOp->getRHS()->IgnoreParenImpCasts();
 8768             auto *FirstExpr = dyn_cast<Expr>(First);
 8768             auto *FirstExpr = dyn_cast<Expr>(First);
 8769             auto *SecondExpr = dyn_cast<Expr>(Second);
 8769             auto *SecondExpr = dyn_cast<Expr>(Second);
 8792                   Expr *PossibleXRHSInFirst =
 8794                   Expr *PossibleXLHSInSecond =
10230 OMPClause *Sema::ActOnOpenMPSingleExprClause(OpenMPClauseKind Kind, Expr *Expr,
10973                                      Expr *Condition, SourceLocation StartLoc,
10978   Expr *ValExpr = Condition;
10995       llvm::MapVector<const Expr *, DeclRefExpr *> Captures;
11006 OMPClause *Sema::ActOnOpenMPFinalClause(Expr *Condition,
11010   Expr *ValExpr = Condition;
11026       llvm::MapVector<const Expr *, DeclRefExpr *> Captures;
11081 isNonNegativeIntegerValue(Expr *&ValExpr, Sema &SemaRef, OpenMPClauseKind CKind,
11112       llvm::MapVector<const Expr *, DeclRefExpr *> Captures;
11120 OMPClause *Sema::ActOnOpenMPNumThreadsClause(Expr *NumThreads,
11124   Expr *ValExpr = NumThreads;
11138     llvm::MapVector<const Expr *, DeclRefExpr *> Captures;
11178 OMPClause *Sema::ActOnOpenMPSafelenClause(Expr *Len, SourceLocation StartLoc,
11191 OMPClause *Sema::ActOnOpenMPSimdlenClause(Expr *Len, SourceLocation StartLoc,
11248 OMPClause *Sema::ActOnOpenMPAllocatorClause(Expr *A, SourceLocation StartLoc,
11269 OMPClause *Sema::ActOnOpenMPCollapseClause(Expr *NumForLoops,
11289                                           Expr *NumForLoops) {
11476     OpenMPClauseKind Kind, ArrayRef<unsigned> Argument, Expr *Expr,
11597     OpenMPScheduleClauseKind Kind, Expr *ChunkSize, SourceLocation StartLoc,
11641   Expr *ValExpr = ChunkSize;
11670         llvm::MapVector<const Expr *, DeclRefExpr *> Captures;
11861     OpenMPClauseKind Kind, ArrayRef<Expr *> VarList, Expr *TailExpr,
11861     OpenMPClauseKind Kind, ArrayRef<Expr *> VarList, Expr *TailExpr,
12011 OMPClause *Sema::ActOnOpenMPPrivateClause(ArrayRef<Expr *> VarList,
12015   SmallVector<Expr *, 8> Vars;
12016   SmallVector<Expr *, 8> PrivateCopies;
12017   for (Expr *RefExpr : VarList) {
12021     Expr *SimpleRefExpr = RefExpr;
12171 OMPClause *Sema::ActOnOpenMPFirstprivateClause(ArrayRef<Expr *> VarList,
12175   SmallVector<Expr *, 8> Vars;
12176   SmallVector<Expr *, 8> PrivateCopies;
12177   SmallVector<Expr *, 8> Inits;
12183   for (Expr *RefExpr : VarList) {
12187     Expr *SimpleRefExpr = RefExpr;
12380     Expr *VDInitRefExpr = nullptr;
12387       Expr *Init = DefaultLvalueConversion(VDInitRefExpr).get();
12400         VDPrivate->setInit(Result.getAs<Expr>());
12449 OMPClause *Sema::ActOnOpenMPLastprivateClause(ArrayRef<Expr *> VarList,
12453   SmallVector<Expr *, 8> Vars;
12454   SmallVector<Expr *, 8> SrcExprs;
12455   SmallVector<Expr *, 8> DstExprs;
12456   SmallVector<Expr *, 8> AssignmentOps;
12458   SmallVector<Expr *, 4> ExprPostUpdates;
12459   for (Expr *RefExpr : VarList) {
12463     Expr *SimpleRefExpr = RefExpr;
12610 OMPClause *Sema::ActOnOpenMPSharedClause(ArrayRef<Expr *> VarList,
12614   SmallVector<Expr *, 8> Vars;
12615   for (Expr *RefExpr : VarList) {
12619     Expr *SimpleRefExpr = RefExpr;
12933   SmallVector<Expr *, 8> Vars;
12935   SmallVector<Expr *, 8> Privates;
12937   SmallVector<Expr *, 8> LHSs;
12939   SmallVector<Expr *, 8> RHSs;
12941   SmallVector<Expr *, 8> ReductionOps;
12944   SmallVector<Expr *, 8> TaskgroupDescriptors;
12948   SmallVector<Expr *, 4> ExprPostUpdates;
12963   void push(Expr *Item, Expr *ReductionOp) {
12963   void push(Expr *Item, Expr *ReductionOp) {
12972   void push(Expr *Item, Expr *Private, Expr *LHS, Expr *RHS, Expr *ReductionOp,
12972   void push(Expr *Item, Expr *Private, Expr *LHS, Expr *RHS, Expr *ReductionOp,
12972   void push(Expr *Item, Expr *Private, Expr *LHS, Expr *RHS, Expr *ReductionOp,
12972   void push(Expr *Item, Expr *Private, Expr *LHS, Expr *RHS, Expr *ReductionOp,
12972   void push(Expr *Item, Expr *Private, Expr *LHS, Expr *RHS, Expr *ReductionOp,
12973             Expr *TaskgroupDescriptor) {
12987   const Expr *Length = OASE->getLength();
12998     Expr::EvalResult Result;
13008   const Expr *Base = OASE->getBase()->IgnoreParenImpCasts();
13023       Expr::EvalResult Result;
13052     ArrayRef<Expr *> VarList, SourceLocation StartLoc, SourceLocation LParenLoc,
13055     ArrayRef<Expr *> UnresolvedReductions, ReductionData &RD) {
13148   for (Expr *RefExpr : VarList) {
13162     Expr *SimpleRefExpr = RefExpr;
13173       Expr *ReductionOp = nullptr;
13185     Expr *TaskgroupDescriptor = nullptr;
13397     Expr *Init = nullptr;
13554       Expr *Args[] = {LHS.get(), RHS.get()};
13591       const Expr *ParentReductionOp;
13592       Expr *ParentBOKTD, *ParentReductionOpTD;
13634     Expr *VarsExpr = RefExpr->IgnoreParens();
13684     ArrayRef<Expr *> VarList, SourceLocation StartLoc, SourceLocation LParenLoc,
13687     ArrayRef<Expr *> UnresolvedReductions) {
13704     ArrayRef<Expr *> VarList, SourceLocation StartLoc, SourceLocation LParenLoc,
13707     ArrayRef<Expr *> UnresolvedReductions) {
13724     ArrayRef<Expr *> VarList, SourceLocation StartLoc, SourceLocation LParenLoc,
13727     ArrayRef<Expr *> UnresolvedReductions) {
13795     ArrayRef<Expr *> VarList, Expr *Step, SourceLocation StartLoc,
13795     ArrayRef<Expr *> VarList, Expr *Step, SourceLocation StartLoc,
13798   SmallVector<Expr *, 8> Vars;
13799   SmallVector<Expr *, 8> Privates;
13800   SmallVector<Expr *, 8> Inits;
13802   SmallVector<Expr *, 4> ExprPostUpdates;
13805   for (Expr *RefExpr : VarList) {
13809     Expr *SimpleRefExpr = RefExpr;
13848     Expr *InitExpr;
13887   Expr *StepExpr = Step;
13888   Expr *CalcStepExpr = nullptr;
13929                                      Expr *NumIterations, Sema &SemaRef,
13932   SmallVector<Expr *, 8> Updates;
13933   SmallVector<Expr *, 8> Finals;
13934   SmallVector<Expr *, 8> UsedExprs;
13935   Expr *Step = Clause.getStep();
13936   Expr *CalcStep = Clause.getCalcStep();
13947   for (Expr *RefExpr : Clause.varlists()) {
13950     Expr *SimpleRefExpr = RefExpr;
13972     Expr *InitExpr = *CurInit;
13976     Expr *CapturedRef;
14022   if (Expr *S = Clause.getStep())
14033     ArrayRef<Expr *> VarList, Expr *Alignment, SourceLocation StartLoc,
14033     ArrayRef<Expr *> VarList, Expr *Alignment, SourceLocation StartLoc,
14035   SmallVector<Expr *, 8> Vars;
14036   for (Expr *RefExpr : VarList) {
14040     Expr *SimpleRefExpr = RefExpr;
14072     if (const Expr *PrevRef = DSAStack->addUniqueAligned(D, SimpleRefExpr)) {
14106 OMPClause *Sema::ActOnOpenMPCopyinClause(ArrayRef<Expr *> VarList,
14110   SmallVector<Expr *, 8> Vars;
14111   SmallVector<Expr *, 8> SrcExprs;
14112   SmallVector<Expr *, 8> DstExprs;
14113   SmallVector<Expr *, 8> AssignmentOps;
14114   for (Expr *RefExpr : VarList) {
14200 OMPClause *Sema::ActOnOpenMPCopyprivateClause(ArrayRef<Expr *> VarList,
14204   SmallVector<Expr *, 8> Vars;
14205   SmallVector<Expr *, 8> SrcExprs;
14206   SmallVector<Expr *, 8> DstExprs;
14207   SmallVector<Expr *, 8> AssignmentOps;
14208   for (Expr *RefExpr : VarList) {
14212     Expr *SimpleRefExpr = RefExpr;
14313 OMPClause *Sema::ActOnOpenMPFlushClause(ArrayRef<Expr *> VarList,
14326                               ArrayRef<Expr *> VarList, SourceLocation StartLoc,
14344   SmallVector<Expr *, 8> Vars;
14349     if (const Expr *OrderedCountExpr =
14355   for (Expr *RefExpr : VarList) {
14364     Expr *SimpleExpr = RefExpr->IgnoreParenCasts();
14388       Expr *LHS = SimpleExpr;
14389       Expr *RHS = nullptr;
14489 OMPClause *Sema::ActOnOpenMPDeviceClause(Expr *Device, SourceLocation StartLoc,
14492   Expr *ValExpr = Device;
14506     llvm::MapVector<const Expr *, DeclRefExpr *> Captures;
14533                                                         const Expr *E,
14548   const Expr *LowerBound = OASE->getLowerBound();
14549   const Expr *Length = OASE->getLength();
14554     Expr::EvalResult Result;
14578   Expr::EvalResult Result;
14590                                                         const Expr *E,
14600   const Expr *Length = OASE->getLength();
14613   Expr::EvalResult Result;
14625 static const Expr *checkMapClauseExpressionBase(
14626     Sema &SemaRef, Expr *E,
14651   const Expr *RelevantExpr = nullptr;
14690       Expr *BaseE = CurE->getBase()->IgnoreParenImpCasts();
14775         Expr::EvalResult Result;
14834         Expr::EvalResult ResultR;
14835         Expr::EvalResult ResultL;
14876     Sema &SemaRef, DSAStackTy *DSAS, const ValueDecl *VD, const Expr *E,
14894   const Expr *EnclosingExpr = nullptr;
14910         const Expr *RE = StackComponents.front().getAssociatedExpression();
14958             const Expr *E = OASE->getBase()->IgnoreParenImpCasts();
15231   ArrayRef<Expr *> VarList;
15233   SmallVector<Expr *, 16> ProcessedVarList;
15239   SmallVector<Expr *, 16> UDMapperList;
15241   MappableVarListInfo(ArrayRef<Expr *> VarList) : VarList(VarList) {
15260     ArrayRef<Expr *> UnresolvedMappers,
15280   Expr *UnresolvedMapper = nullptr;
15288   for (Expr *RE : MVLI.VarList) {
15303     const Expr *VE = RE->IgnoreParenLValueCasts();
15321     Expr *SimpleExpr = RE->IgnoreParenCasts();
15335     const Expr *BE = checkMapClauseExpressionBase(
15510     SourceLocation ColonLoc, ArrayRef<Expr *> VarList,
15511     const OMPVarListLocTy &Locs, ArrayRef<Expr *> UnresolvedMappers) {
15700   Expr *InE =
15702   Expr *OutE =
15707 void Sema::ActOnOpenMPDeclareReductionCombinerEnd(Decl *D, Expr *Combiner) {
15760   Expr *OrigE =
15762   Expr *PrivE =
15768 void Sema::ActOnOpenMPDeclareReductionInitializerEnd(Decl *D, Expr *Initializer,
15921   Expr *MapperVarRefExpr = buildDeclRefExpr(*this, VD, MapperType, StartLoc);
15940 OMPClause *Sema::ActOnOpenMPNumTeamsClause(Expr *NumTeams,
15944   Expr *ValExpr = NumTeams;
15958     llvm::MapVector<const Expr *, DeclRefExpr *> Captures;
15967 OMPClause *Sema::ActOnOpenMPThreadLimitClause(Expr *ThreadLimit,
15971   Expr *ValExpr = ThreadLimit;
15985     llvm::MapVector<const Expr *, DeclRefExpr *> Captures;
15994 OMPClause *Sema::ActOnOpenMPPriorityClause(Expr *Priority,
15998   Expr *ValExpr = Priority;
16014 OMPClause *Sema::ActOnOpenMPGrainsizeClause(Expr *Grainsize,
16018   Expr *ValExpr = Grainsize;
16035 OMPClause *Sema::ActOnOpenMPNumTasksClause(Expr *NumTasks,
16039   Expr *ValExpr = NumTasks;
16056 OMPClause *Sema::ActOnOpenMPHintClause(Expr *Hint, SourceLocation StartLoc,
16070     OpenMPDistScheduleClauseKind Kind, Expr *ChunkSize, SourceLocation StartLoc,
16082   Expr *ValExpr = ChunkSize;
16111         llvm::MapVector<const Expr *, DeclRefExpr *> Captures;
16286 void Sema::checkDeclIsAllowedInOpenMPTarget(Expr *E, Decl *D,
16350 OMPClause *Sema::ActOnOpenMPToClause(ArrayRef<Expr *> VarList,
16354                                      ArrayRef<Expr *> UnresolvedMappers) {
16367 OMPClause *Sema::ActOnOpenMPFromClause(ArrayRef<Expr *> VarList,
16371                                        ArrayRef<Expr *> UnresolvedMappers) {
16384 OMPClause *Sema::ActOnOpenMPUseDevicePtrClause(ArrayRef<Expr *> VarList,
16387   SmallVector<Expr *, 8> PrivateCopies;
16388   SmallVector<Expr *, 8> Inits;
16390   for (Expr *RefExpr : VarList) {
16394     Expr *SimpleRefExpr = RefExpr;
16469 OMPClause *Sema::ActOnOpenMPIsDevicePtrClause(ArrayRef<Expr *> VarList,
16472   for (Expr *RefExpr : VarList) {
16476     Expr *SimpleRefExpr = RefExpr;
16507     const Expr *ConflictExpr;
16552     Expr *Allocator, ArrayRef<Expr *> VarList, SourceLocation StartLoc,
16552     Expr *Allocator, ArrayRef<Expr *> VarList, SourceLocation StartLoc,
16581   SmallVector<Expr *, 8> Vars;
16582   for (Expr *RefExpr : VarList) {
16586     Expr *SimpleRefExpr = RefExpr;
tools/clang/lib/Sema/SemaOverload.cpp
   50                       const Expr *Base, bool HadMultipleCandidates,
   75 static bool IsStandardConversion(Sema &S, Expr* From, QualType ToType,
   81 static bool IsTransparentUnionStandardConversion(Sema &S, Expr* From,
   87 IsUserDefinedConversion(Sema &S, Expr *From, QualType ToType,
  260 static const Expr *IgnoreNarrowingConversion(ASTContext &Ctx,
  261                                              const Expr *Converted) {
  265     Expr *Inner =
  304     ASTContext &Ctx, const Expr *Converted, APValue &ConstantValue,
  345       const Expr *Initializer = IgnoreNarrowingConversion(Ctx, Converted);
  383       const Expr *Initializer = IgnoreNarrowingConversion(Ctx, Converted);
  429       const Expr *Initializer = IgnoreNarrowingConversion(Ctx, Converted);
  891       Expr **Addr;
  892       Expr *Saved;
  897     void save(Sema &S, Expr *&E) {
  920 checkPlaceholderForOverload(Sema &S, Expr *&E,
 1267 TryUserDefinedConversion(Sema &S, Expr *From, QualType ToType,
 1370 TryImplicitConversion(Sema &S, Expr *From, QualType ToType,
 1425 Sema::TryImplicitConversion(Expr *From, QualType ToType,
 1444 Sema::PerformImplicitConversion(Expr *From, QualType ToType,
 1451 Sema::PerformImplicitConversion(Expr *From, QualType ToType,
 1616 static bool tryAtomicConversion(Sema &S, Expr *From, QualType ToType,
 1629 static bool IsStandardConversion(Sema &S, Expr* From, QualType ToType,
 1972 IsTransparentUnionStandardConversion(Sema &S, Expr* From,
 1998 bool Sema::IsIntegralPromotion(Expr *From, QualType FromType, QualType ToType) {
 2257 static bool isNullPointerConstantForConversion(Expr *Expr,
 2267                     InOverloadResolution? Expr::NPC_ValueDependentIsNotNull
 2268                                         : Expr::NPC_ValueDependentIsNull);
 2287 bool Sema::IsPointerConversion(Expr *From, QualType FromType, QualType ToType,
 2917 bool Sema::CheckPointerConversion(Expr *From, QualType ToType,
 2928       From->isNullPointerConstant(Context, Expr::NPC_ValueDependentIsNotNull) ==
 2929           Expr::NPCK_ZeroExpression) {
 2992   if (From->isNullPointerConstant(Context, Expr::NPC_ValueDependentIsNull))
 3003 bool Sema::IsMemberPointerConversion(Expr *From, QualType FromType,
 3013                     InOverloadResolution? Expr::NPC_ValueDependentIsNotNull
 3014                                         : Expr::NPC_ValueDependentIsNull)) {
 3045 bool Sema::CheckMemberPointerConversion(Expr *From, QualType ToType,
 3219 static bool tryAtomicConversion(Sema &S, Expr *From, QualType ToType,
 3256 IsInitializerListConstructorConversion(Sema &S, Expr *From, QualType ToType,
 3333 IsUserDefinedConversion(Sema &S, Expr *From, QualType ToType,
 3365       Expr **Args = &From;
 3538 Sema::DiagnoseMultipleUserDefinedConversion(Expr *From, QualType ToType) {
 4467                          Expr *Init, QualType T2, bool AllowRvalues,
 4594 TryReferenceInit(Sema &S, Expr *Init, QualType DeclType,
 4623   Expr::Classification InitCategory = Init->Classify(S.Context);
 4862 TryCopyInitialization(Sema &S, Expr *From, QualType ToType,
 4946       Expr *Init = From->getInit(i);
 5033       Expr *Init = From->getInit(0);
 5127 TryCopyInitialization(Sema &S, Expr *From, QualType ToType,
 5167                                 Expr::Classification FromClassification,
 5293 Sema::PerformObjectArgumentInitialization(Expr *From,
 5301   Expr::Classification FromClassification;
 5305     FromClassification = Expr::Classification::makeSimpleLValue();
 5385 TryContextuallyConvertToBool(Sema &S, Expr *From) {
 5397 ExprResult Sema::PerformContextuallyConvertToBool(Expr *From) {
 5480 static ExprResult CheckConvertedConstantExpression(Sema &S, Expr *From,
 5588   Expr::EvalResult Eval;
 5590   Expr::ConstExprUsage Usage = CCE == Sema::CCEK_TemplateArg
 5591                                    ? Expr::EvaluateForMangling
 5592                                    : Expr::EvaluateForCodeGen;
 5621 ExprResult Sema::CheckConvertedConstantExpression(Expr *From, QualType T,
 5626 ExprResult Sema::CheckConvertedConstantExpression(Expr *From, QualType T,
 5653 TryContextuallyConvertToObjCPointer(Sema &S, Expr *From) {
 5688 ExprResult Sema::PerformContextuallyConvertToObjCPointer(Expr *From) {
 5708 diagnoseAmbiguousConversion(Sema &SemaRef, SourceLocation Loc, Expr *From,
 5726 diagnoseNoViableConversion(Sema &SemaRef, SourceLocation Loc, Expr *&From,
 5766 static bool recordConversion(Sema &SemaRef, SourceLocation Loc, Expr *&From,
 5795     Sema &SemaRef, SourceLocation Loc, Expr *From,
 5805 collectViableConversionCandidates(Sema &SemaRef, Expr *From, QualType ToType,
 5853     SourceLocation Loc, Expr *From, ContextualImplicitConverter &Converter) {
 5885     Expr *From;
 5887     TypeDiagnoserPartialDiag(ContextualImplicitConverter &Converter, Expr *From)
 6042                                                    ArrayRef<Expr *> Args) {
 6083     FunctionDecl *Function, DeclAccessPair FoundDecl, ArrayRef<Expr *> Args,
 6104                          Expr::Classification::makeSimpleLValue(), Args,
 6323       Expr *argExpr = Args[i];
 6391 convertArgsForAvailabilityChecks(Sema &S, FunctionDecl *Function, Expr *ThisArg,
 6392                                  ArrayRef<Expr *> Args, Sema::SFINAETrap &Trap,
 6393                                  bool MissingImplicitThis, Expr *&ConvertedThis,
 6394                                  SmallVectorImpl<Expr *> &ConvertedArgs) {
 6439       Expr *DefArg = P->hasUninstantiatedDefaultArg()
 6461 EnableIfAttr *Sema::CheckEnableIf(FunctionDecl *Function, ArrayRef<Expr *> Args,
 6468   SmallVector<Expr *, 16> ConvertedArgs;
 6470   Expr *DiscardedThis;
 6532                                                const Expr *ThisArg,
 6533                                                ArrayRef<const Expr *> Args,
 6563                                  ArrayRef<Expr *> Args,
 6571     ArrayRef<Expr *> FunctionArgs = Args;
 6579       Expr::Classification ObjectClassification;
 6581         if (Expr *E = Args[0]) {
 6587             ObjectClassification = Expr::Classification::makeSimpleLValue();
 6633                               Expr::Classification ObjectClassification,
 6634                               ArrayRef<Expr *> Args,
 6668                          Expr::Classification ObjectClassification,
 6669                          ArrayRef<Expr *> Args,
 6813     Expr::Classification ObjectClassification, ArrayRef<Expr *> Args,
 6813     Expr::Classification ObjectClassification, ArrayRef<Expr *> Args,
 6877     TemplateArgumentListInfo *ExplicitTemplateArgs, ArrayRef<Expr *> Args,
 6942     ArrayRef<Expr *> Args, OverloadCandidateSet &CandidateSet,
 6945     Expr::Classification ObjectClassification, OverloadCandidateParamOrder PO) {
 7045     CXXRecordDecl *ActingContext, Expr *From, QualType ToType,
 7150   ExprValueKind VK = Expr::getValueKindForType(ConversionType);
 7233     CXXRecordDecl *ActingDC, Expr *From, QualType ToType,
 7277                                  Expr *Object,
 7278                                  ArrayRef<Expr *> Args,
 7381     const UnresolvedSetImpl &Fns, ArrayRef<Expr *> Args,
 7386     ArrayRef<Expr *> FunctionArgs = Args;
 7430                                        ArrayRef<Expr *> Args,
 7479 void Sema::AddBuiltinCandidate(QualType *ParamTys, ArrayRef<Expr *> Args,
 7822                                                         Expr *Arg) {
 7831                                                    ArrayRef<Expr *> Args,
 7855 static  Qualifiers CollectVRQualifiers(ASTContext &Context, Expr* ArgExpr) {
 7913   ArrayRef<Expr *> Args;
 8024     Sema &S, ArrayRef<Expr *> Args,
 8934                                         ArrayRef<Expr *> Args,
 9130                                            ArrayRef<Expr *> Args,
 9869 void Sema::NoteAllOverloadCandidates(Expr *OverloadedExpr, QualType DestType,
 9938   Expr *FromExpr = Conv.Bad.FromExpr;
 9944     Expr *E = FromExpr->IgnoreParens();
10957                            ArrayRef<Expr *> Args,
11087     Sema &S, OverloadCandidateDisplayKind OCD, ArrayRef<Expr *> Args,
11098 void OverloadCandidateSet::NoteCandidates(Sema &S, ArrayRef<Expr *> Args,
11291   Expr* SourceExpr;
11311   AddressOfFunctionResolver(Sema &S, Expr *SourceExpr,
11701 Sema::ResolveAddressOfOverloadedFunction(Expr *AddressOfExpr,
11747 Sema::resolveAddressOfOnlyViableOverloadCandidate(Expr *E,
11785   Expr *E = SrcExpr.get();
11799   Expr *Fixed = FixOverloadedFunctionReference(E, DAP, Found);
11980                                        ArrayRef<Expr *> Args,
12018                                        ArrayRef<Expr *> Args,
12095                        ArrayRef<Expr *> Args,
12197                                ArrayRef<Expr *> Args) {
12226 BuildRecoveryCallExpr(Sema &SemaRef, Scope *S, Expr *Fn,
12229                       MutableArrayRef<Expr *> Args,
12307 bool Sema::buildOverloadedCallSet(Scope *S, Expr *Fn,
12374 static ExprResult FinishOverloadedCallExpr(Sema &SemaRef, Scope *S, Expr *Fn,
12379                                            Expr *ExecConfig,
12414     for (const Expr *Arg : Args) {
12481 ExprResult Sema::BuildOverloadedCallExpr(Scope *S, Expr *Fn,
12486                                          Expr *ExecConfig,
12534                               Expr *Input, bool PerformADL) {
12544   Expr *Args[2] = { Input, nullptr };
12557   ArrayRef<Expr *> ArgsArray(Args, NumArgs);
12602       Expr *Base = nullptr;
12638       ExprValueKind VK = Expr::getValueKindForType(ResultTy);
12724                                        const UnresolvedSetImpl &Fns, Expr *LHS,
12725                                        Expr *RHS, bool PerformADL,
12727   Expr *Args[2] = { LHS, RHS };
12861         Expr *Base = nullptr;
12925           Base = Args[0] = Arg0.getAs<Expr>();
12926           Args[1] = RHS = Arg1.getAs<Expr>();
12943           Args[0] = LHS = Arg0.getAs<Expr>();
12944           Args[1] = RHS = Arg1.getAs<Expr>();
12956         ExprValueKind VK = Expr::getValueKindForType(ResultTy);
12967         ArrayRef<const Expr *> ArgsArray(Args, 2);
12968         const Expr *ImplicitThis = nullptr;
12997             Expr *ZeroLiteral =
13130                                          Expr *Base, Expr *Idx) {
13130                                          Expr *Base, Expr *Idx) {
13131   Expr *Args[2] = { Base, Idx };
13207         Args[1] = InputInit.getAs<Expr>();
13223         ExprValueKind VK = Expr::getValueKindForType(ResultTy);
13304 Sema::BuildCallToMemberFunction(Scope *S, Expr *MemExprE,
13313   Expr *NakedMemExpr = MemExprE->IgnoreParens();
13325     ExprValueKind valueKind = Expr::getValueKindForType(proto->getReturnType());
13387     Expr::Classification ObjectClassification
13388       = UnresExpr->isArrow()? Expr::Classification::makeSimpleLValue()
13499   ExprValueKind VK = Expr::getValueKindForType(ResultType);
13586 Sema::BuildCallToObjectOfClassType(Scope *S, Expr *Obj,
13786   SmallVector<Expr *, 8> MethodArgs(NumArgsSlots);
13802     Expr *Arg;
13815       Arg = InputInit.getAs<Expr>();
13824       Arg = DefArg.getAs<Expr>();
13848   ExprValueKind VK = Expr::getValueKindForType(ResultTy);
13868 Sema::BuildOverloadedArrowExpr(Scope *S, Expr *Base, SourceLocation OpLoc,
13968   ExprValueKind VK = Expr::getValueKindForType(ResultTy);
13987                                           ArrayRef<Expr*> Args,
14033   Expr *ConvArgs[2];
14044   ExprValueKind VK = Expr::getValueKindForType(ResultTy);
14073                                 Expr *Range, ExprResult *CallExpr) {
14134 Expr *Sema::FixOverloadedFunctionReference(Expr *E, DeclAccessPair Found,
14134 Expr *Sema::FixOverloadedFunctionReference(Expr *E, DeclAccessPair Found,
14137     Expr *SubExpr = FixOverloadedFunctionReference(PE->getSubExpr(),
14146     Expr *SubExpr = FixOverloadedFunctionReference(ICE->getSubExpr(),
14163       Expr *SubExpr =
14170       ArrayRef<Expr *> A = GSE->getAssocExprs();
14171       SmallVector<Expr *, 4> AssocExprs(A.begin(), A.end());
14197         Expr *SubExpr = FixOverloadedFunctionReference(UnOp->getSubExpr(),
14223     Expr *SubExpr = FixOverloadedFunctionReference(UnOp->getSubExpr(),
14265     Expr *Base;
tools/clang/lib/Sema/SemaPseudoObject.cpp
   49     typedef llvm::function_ref<Expr *(Expr *, unsigned)> SpecificRebuilderRefTy;
   49     typedef llvm::function_ref<Expr *(Expr *, unsigned)> SpecificRebuilderRefTy;
   55     Expr *rebuildObjCPropertyRefExpr(ObjCPropertyRefExpr *refExpr) {
   73     Expr *rebuildObjCSubscriptRefExpr(ObjCSubscriptRefExpr *refExpr) {
   84     Expr *rebuildMSPropertyRefExpr(MSPropertyRefExpr *refExpr) {
   93     Expr *rebuildMSPropertySubscriptExpr(MSPropertySubscriptExpr *refExpr) {
   97       auto *NewBase = rebuild(refExpr->getBase());
  106     Expr *rebuild(Expr *e) {
  106     Expr *rebuild(Expr *e) {
  143         SmallVector<Expr *, 8> assocExprs;
  150           Expr *assocExpr = assoc.getAssociationExpr();
  166         Expr *LHS = ce->getLHS(), *RHS = ce->getRHS();
  167         Expr *&rebuiltExpr = ce->isConditionTrue() ? LHS : RHS;
  192     SmallVector<Expr *, 4> Semantics;
  201     void addSemanticExpr(Expr *semantic) {
  206     void addResultSemanticExpr(Expr *resultExpr) {
  215     ExprResult buildRValueOperation(Expr *op);
  219                                         Expr *LHS, Expr *RHS);
  219                                         Expr *LHS, Expr *RHS);
  222                                     Expr *op);
  224     virtual ExprResult complete(Expr *syntacticForm);
  226     OpaqueValueExpr *capture(Expr *op);
  227     OpaqueValueExpr *captureValueAsResult(Expr *op);
  238     static bool CanCaptureValue(Expr *exp) {
  250     virtual Expr *rebuildAndCaptureObject(Expr *) = 0;
  250     virtual Expr *rebuildAndCaptureObject(Expr *) = 0;
  252     virtual ExprResult buildSet(Expr *, SourceLocation,
  288     ExprResult buildRValueOperation(Expr *op);
  292                                         Expr *LHS, Expr *RHS);
  292                                         Expr *LHS, Expr *RHS);
  295                                     Expr *op);
  297     bool tryBuildGetOfReference(Expr *op, ExprResult &result);
  302     Expr *rebuildAndCaptureObject(Expr *syntacticBase) override;
  302     Expr *rebuildAndCaptureObject(Expr *syntacticBase) override;
  304     ExprResult buildSet(Expr *op, SourceLocation, bool) override;
  305     ExprResult complete(Expr *SyntacticForm) override;
  327    ExprResult buildRValueOperation(Expr *op);
  331                                        Expr *LHS, Expr *RHS);
  331                                        Expr *LHS, Expr *RHS);
  332    Expr *rebuildAndCaptureObject(Expr *syntacticBase) override;
  332    Expr *rebuildAndCaptureObject(Expr *syntacticBase) override;
  338    ExprResult buildSet(Expr *op, SourceLocation, bool) override;
  344    SmallVector<Expr *, 4> CallArgs;
  358    Expr *rebuildAndCaptureObject(Expr *) override;
  358    Expr *rebuildAndCaptureObject(Expr *) override;
  360    ExprResult buildSet(Expr *op, SourceLocation, bool) override;
  366 OpaqueValueExpr *PseudoOpBuilder::capture(Expr *e) {
  386 OpaqueValueExpr *PseudoOpBuilder::captureValueAsResult(Expr *e) {
  412 ExprResult PseudoOpBuilder::complete(Expr *syntactic) {
  418 ExprResult PseudoOpBuilder::buildRValueOperation(Expr *op) {
  419   Expr *syntacticBase = rebuildAndCaptureObject(op);
  433                                           Expr *LHS, Expr *RHS) {
  433                                           Expr *LHS, Expr *RHS) {
  436   Expr *syntacticLHS = rebuildAndCaptureObject(LHS);
  445   Expr *semanticRHS = capturedRHS;
  451   Expr *syntactic;
  498                                       Expr *op) {
  501   Expr *syntacticOp = rebuildAndCaptureObject(op);
  518   Expr *one = IntegerLiteral::Create(S.Context, oneV, S.Context.IntTy,
  708 Expr *ObjCPropertyOpBuilder::rebuildAndCaptureObject(Expr *syntacticBase) {
  708 Expr *ObjCPropertyOpBuilder::rebuildAndCaptureObject(Expr *syntacticBase) {
  761 ExprResult ObjCPropertyOpBuilder::buildSet(Expr *op, SourceLocation opcLoc,
  798   Expr *args[] = { op };
  819     Expr *arg = msgExpr->getArg(0);
  828 ExprResult ObjCPropertyOpBuilder::buildRValueOperation(Expr *op) {
  870 bool ObjCPropertyOpBuilder::tryBuildGetOfReference(Expr *op,
  895                                                 Expr *LHS, Expr *RHS) {
  895                                                 Expr *LHS, Expr *RHS) {
  941                                             Expr *op) {
  975 ExprResult ObjCPropertyOpBuilder::complete(Expr *SyntacticForm) {
  992 ExprResult ObjCSubscriptOpBuilder::buildRValueOperation(Expr *op) {
 1003                                                 Expr *LHS, Expr *RHS) {
 1003                                                 Expr *LHS, Expr *RHS) {
 1027 Expr *ObjCSubscriptOpBuilder::rebuildAndCaptureObject(Expr *syntacticBase) {
 1027 Expr *ObjCSubscriptOpBuilder::rebuildAndCaptureObject(Expr *syntacticBase) {
 1053   Sema::CheckSubscriptingKind(Expr *FromE) {
 1070     const Expr *IndexExpr = FromE->IgnoreParenImpCasts();
 1127                                          Expr *Key) {
 1149   Expr *BaseExpr = RefExpr->getBaseExpr();
 1253   Expr *BaseExpr = RefExpr->getBaseExpr();
 1391   Expr *Index = InstanceKey;
 1394   Expr *args[] = { Index };
 1410 ExprResult ObjCSubscriptOpBuilder::buildSet(Expr *op, SourceLocation opcLoc,
 1417   Expr *Index = InstanceKey;
 1420   Expr *args[] = { op, Index };
 1432     Expr *arg = msgExpr->getArg(0);
 1447   Expr *Base = E->getBase()->IgnoreParens();
 1455 Expr *MSPropertyOpBuilder::rebuildAndCaptureObject(Expr *syntacticBase) {
 1455 Expr *MSPropertyOpBuilder::rebuildAndCaptureObject(Expr *syntacticBase) {
 1499 ExprResult MSPropertyOpBuilder::buildSet(Expr *op, SourceLocation sl,
 1523   SmallVector<Expr*, 4> ArgExprs;
 1535 ExprResult Sema::checkPseudoObjectRValue(Expr *E) {
 1536   Expr *opaqueRef = E->IgnoreParens();
 1561                                          UnaryOperatorKind opcode, Expr *op) {
 1568   Expr *opaqueRef = op->IgnoreParens();
 1591                                              Expr *LHS, Expr *RHS) {
 1591                                              Expr *LHS, Expr *RHS) {
 1606   Expr *opaqueRef = LHS->IgnoreParens();
 1631 static Expr *stripOpaqueValuesFromPseudoObjectRef(Sema &S, Expr *E) {
 1631 static Expr *stripOpaqueValuesFromPseudoObjectRef(Sema &S, Expr *E) {
 1645 Expr *Sema::recreateSyntacticForm(PseudoObjectExpr *E) {
 1646   Expr *syntax = E->getSyntacticForm();
 1648     Expr *op = stripOpaqueValuesFromPseudoObjectRef(*this, uop->getSubExpr());
 1654     Expr *lhs = stripOpaqueValuesFromPseudoObjectRef(*this, cop->getLHS());
 1655     Expr *rhs = cast<OpaqueValueExpr>(cop->getRHS())->getSourceExpr();
 1665     Expr *lhs = stripOpaqueValuesFromPseudoObjectRef(*this, bop->getLHS());
 1666     Expr *rhs = cast<OpaqueValueExpr>(bop->getRHS())->getSourceExpr();
tools/clang/lib/Sema/SemaStmt.cpp
  128 static bool DiagnoseUnusedComparison(Sema &S, const Expr *E) {
  222   const Expr *E = dyn_cast_or_null<Expr>(S);
  222   const Expr *E = dyn_cast_or_null<Expr>(S);
  241   const Expr *WarnExpr;
  336     const Expr *Source = POE->getSyntacticForm();
  343     const Expr *E = FC->getSubExpr();
  437   Expr *CondExpr =
  575   Expr *CondExpr = Cond.get().second;
  652 static QualType GetTypeBeforeIntegralPromotion(const Expr *&E) {
  662 ExprResult Sema::CheckSwitchCondition(SourceLocation SwitchLoc, Expr *Cond) {
  664     Expr *Cond;
  667     SwitchConvertDiagnoser(Expr *Cond)
  728   Expr *CondExpr = Cond.get().second;
  790                                               const Expr *CaseExpr,
  820 static void checkEnumTypesInSwitchStmt(Sema &S, const Expr *Cond,
  821                                        const Expr *Case) {
  859   Expr *CondExpr = SS->getCond();
  871   const Expr *CondExprBeforePromotion = CondExpr;
  924       Expr *Lo = CS->getLHS();
  933       const Expr *LoBeforePromotion = Lo;
  967       Expr::EvalResult Result;
  969                                                 Expr::SE_AllowSideEffects);
  991           Expr *PrevCase = CaseVals[i-1].second->getLHS()->IgnoreParenCasts();
  992           Expr *CurrCase = CaseVals[i].second->getLHS()->IgnoreParenCasts();
 1034         Expr *Hi = CR->getRHS();
 1036         const Expr *HiBeforePromotion = Hi;
 1152         Expr *CaseExpr = CI->second->getLHS();
 1163         Expr *CaseExpr = RI->second->getLHS();
 1261                              Expr *SrcExpr) {
 1338                   Expr *Cond, SourceLocation CondRParen) {
 1484     void CheckLValueToRValueCast(Expr *E) {
 1517       for (auto *S : POE->semantics()) {
 1530   void CheckForLoopConditionalStatement(Sema &S, Expr *Second,
 1531                                         Expr *Third, Stmt *Body) {
 1709   void CheckForRedundantIteration(Sema &S, Expr *Third, Stmt *Body) {
 1745 void Sema::CheckBreakContinueBinding(Expr *E) {
 1800   Expr *Third  = third.release().getAs<Expr>();
 1800   Expr *Third  = third.release().getAs<Expr>();
 1813 StmtResult Sema::ActOnForEachLValueExpr(Expr *E) {
 1827 Sema::CheckObjCForCollectionOperand(SourceLocation forLoc, Expr *collection) {
 1903                                  Stmt *First, Expr *collection,
 1933         Expr *DeducedInit = &OpaqueId;
 1953       Expr *FirstE = cast<Expr>(First);
 1953       Expr *FirstE = cast<Expr>(First);
 1985 static bool FinishForRangeVarDecl(Sema &SemaRef, VarDecl *Decl, Expr *Init,
 2034 void NoteForRangeBeginEndFunction(Sema &SemaRef, Expr *E,
 2070 static bool ObjCEnumerationCollection(Expr *Collection) {
 2096                                       Expr *Range, SourceLocation RParenLoc,
 2169 BuildNonArrayForRange(Sema &SemaRef, Expr *BeginRange, Expr *EndRange,
 2169 BuildNonArrayForRange(Sema &SemaRef, Expr *BeginRange, Expr *EndRange,
 2309                                                  Expr *Range,
 2359                                       Stmt *Begin, Stmt *End, Expr *Cond,
 2360                                       Expr *Inc, Stmt *LoopVarDecl,
 2418     Expr *Range = RangeVar->getInit();
 2567         Expr *Range = BEFFailure ? EndRangeRef.get() : BeginRangeRef.get();
 2710   const Expr *InitExpr = VD->getInit();
 2727   const Expr *E = MTE->GetTemporaryExpr()->IgnoreImpCasts();
 2783   const Expr *InitExpr = VD->getInit();
 2842   const Expr *InitExpr = VD->getInit();
 2886                             Expr *E) {
 2965 VarDecl *Sema::getCopyElisionCandidate(QualType ReturnType, Expr *E,
 3046                                   Expr *&Value,
 3052   Expr *InitExpr = &AsRvalue;
 3124                                       Expr *Value,
 3196           Expr *FakeValue = Value;
 3238 Sema::ActOnCapScopeReturnStmt(SourceLocation ReturnLoc, Expr *RetValExp) {
 3445                                             Expr *&RetExpr,
 3554 Sema::ActOnReturnStmt(SourceLocation ReturnLoc, Expr *RetValExp,
 3578 StmtResult Sema::BuildReturnStmt(SourceLocation ReturnLoc, Expr *RetValExp) {
 3777       RetValExp = Res.getAs<Expr>();
 3791         RetValExp = Res.getAs<Expr>();
 3847 StmtResult Sema::BuildObjCAtThrowStmt(SourceLocation AtLoc, Expr *Throw) {
 3873 Sema::ActOnObjCAtThrowStmt(SourceLocation AtLoc, Expr *Throw,
 3891 Sema::ActOnObjCAtSynchronizedOperand(SourceLocation atLoc, Expr *operand) {
 3929 Sema::ActOnObjCAtSynchronizedStmt(SourceLocation AtLoc, Expr *SyncExpr,
 4189                           Expr *FilterExpr,
 4279                              SmallVectorImpl<Expr *> &CaptureInits) {
 4431   SmallVector<Expr *, 4> CaptureInits;
tools/clang/lib/Sema/SemaStmtAsm.cpp
   30 static void removeLValueToRValueCast(Expr *E) {
   31   Expr *Parent = E;
   32   Expr *ExprUnderCast = nullptr;
   33   SmallVector<Expr *, 8> ParentsToUpdate;
   42     Expr *Child = nullptr;
   63   for (Expr *E : ParentsToUpdate)
   69 static void emitAndFixInvalidAsmCastLValue(const Expr *LVal, Expr *BadArgument,
   69 static void emitAndFixInvalidAsmCastLValue(const Expr *LVal, Expr *BadArgument,
   88 static bool CheckAsmLValue(Expr *E, Sema &S) {
   98   const Expr *E2 = E->IgnoreParenNoopCasts(S.Context);
  127 static bool CheckNakedParmReference(Expr *E, Sema &S) {
  134   SmallVector<Expr*, 4> WorkList;
  137     Expr *E = WorkList.pop_back_val();
  151       if (Expr *E = dyn_cast_or_null<Expr>(Child))
  151       if (Expr *E = dyn_cast_or_null<Expr>(Child))
  160 static bool checkExprMemoryConstraintCompat(Sema &S, Expr *E,
  191 static StringRef extractRegisterName(const Expr *Expression,
  244                                  Expr *asmString, MultiExprArg clobbers,
  283     Expr *OutputExpr = Exprs[i];
  300     Expr::isModifiableLvalueResult IsLV =
  303     case Expr::MLV_Valid:
  306     case Expr::MLV_ArrayType:
  309     case Expr::MLV_LValueCast: {
  310       const Expr *LVal = OutputExpr->IgnoreParenNoopCasts(Context);
  315     case Expr::MLV_IncompleteType:
  316     case Expr::MLV_IncompleteVoidType:
  365     Expr *InputExpr = Exprs[i];
  385         Expr::EvalResult EVResult;
  556     Expr *OutputExpr = Exprs[TiedTo];
  557     Expr *InputExpr = Exprs[InputOpNo];
  668   typedef std::pair<StringRef , Expr *> NamedOperand;
  698 void Sema::FillInlineAsmIdentifierInfo(Expr *Res,
  701   Expr::EvalResult Eval;
  835 Sema::LookupInlineAsmVarDeclField(Expr *E, StringRef Member,
  881                                 ArrayRef<Expr*> Exprs,
tools/clang/lib/Sema/SemaStmtAttr.cpp
   81   Expr *ValueExpr = A.getArgAsExpr(3);
  298     Expr *E = A.getArgAsExpr(0);
tools/clang/lib/Sema/SemaTemplate.cpp
  879     Expr *E = static_cast<Expr *>(Arg.getAsExpr());
 1117                                           Expr *Default) {
 1335                                  Expr *RequiresClause) {
 2495     if (auto *E = dyn_cast_or_null<Expr>(S))
 2495     if (auto *E = dyn_cast_or_null<Expr>(S))
 3072 static void collectConjunctionTerms(Expr *Clause,
 3073                                     SmallVectorImpl<Expr *> &Terms) {
 3089 static Expr *lookThroughRangesV3Condition(Preprocessor &PP, Expr *Cond) {
 3089 static Expr *lookThroughRangesV3Condition(Preprocessor &PP, Expr *Cond) {
 3097   Expr *LHS = BinOp->getLHS();
 3152 std::pair<Expr *, std::string>
 3153 Sema::findFailedBooleanCondition(Expr *Cond) {
 3157   SmallVector<Expr *, 4> Terms;
 3161   Expr *FailedCond = nullptr;
 3162   for (Expr *Term : Terms) {
 3163     Expr *TermAsWritten = Term->IgnoreParenImpCasts();
 3273             Expr *FailedCond;
 4809     Expr *ArgE = Arg.getAs<Expr>();
 4809     Expr *ArgE = Arg.getAs<Expr>();
 5386       Expr *Ex = E.getAs<Expr>();
 5386       Expr *Ex = E.getAs<Expr>();
 5765                                    QualType ParamType, Expr *Arg,
 5788   Expr::EvalResult EvalResult;
 5841   if (Arg->isNullPointerConstant(S.Context, Expr::NPC_NeverValueDependent)) {
 5860     Sema &S, NonTypeTemplateParmDecl *Param, QualType ParamType, Expr *ArgIn,
 5861     Expr *Arg, QualType ArgType) {
 5920                                                Expr *ArgIn,
 5923   Expr *Arg = ArgIn;
 6206                                                  Expr *&ResultArg,
 6210   Expr *Arg = ResultArg;
 6361     Expr *DeductionArg = Arg;
 6507         auto *E = Base.dyn_cast<const Expr *>();
 7081   Expr *E;
 7345     const Expr *NewRC = New->getRequiresClause();
 7346     const Expr *OldRC = Old->getRequiresClause();
 7529 static SourceRange findTemplateParameterInType(unsigned Depth, Expr *E) {
 7567     Expr *ArgExpr = Args[I].getAsExpr();
 7740         if (Expr *DefArg = NTTP->getDefaultArgument()) {
 8051                                    Expr *ConstraintExpr) {
 9919                        SourceRange &CondRange, Expr *&Cond) {
10004     Expr *Cond = nullptr;
10009         Expr *FailedCond;
tools/clang/lib/Sema/SemaTemplateDeduction.cpp
  174 getDeducedParameterFromExpr(TemplateDeductionInfo &Info, Expr *E) {
  440   Expr *Value =
  456     NonTypeTemplateParmDecl *NTTP, Expr *Value, TemplateDeductionInfo &Info,
 1700       Expr *NoexceptExpr = FunctionProtoParam->getNoexceptExpr();
 1721           if (Expr *ArgNoexceptExpr = FunctionProtoArg->getNoexceptExpr())
 2456     Expr *E = BuildExpressionFromDeclTemplateArgument(Arg, NTTPType, Loc)
 2457                   .getAs<Expr>();
 2464     Expr *E = BuildExpressionFromDeclTemplateArgument(Arg, NTTPType, Loc)
 2465                   .getAs<Expr>();
 2471     Expr *E =
 2472         BuildExpressionFromIntegralTemplateArgument(Arg, Loc).getAs<Expr>();
 3478                             Expr *Arg, QualType ParamType,
 3584     QualType &ParamType, QualType &ArgType, Expr *Arg, unsigned &TDF) {
 3678     QualType ParamType, Expr *Arg, TemplateDeductionInfo &Info,
 3714   for (Expr *E : ILE->inits())
 3720     for (Expr *E : ILE->inits()) {
 3754     QualType ParamType, Expr *Arg, TemplateDeductionInfo &Info,
 3810     TemplateArgumentListInfo *ExplicitTemplateArgs, ArrayRef<Expr *> Args,
 4373 Sema::DeduceAutoType(TypeSourceInfo *Type, Expr *&Init, QualType &Result,
 4419 Sema::DeduceAutoType(TypeLoc Type, Expr *&Init, QualType &Result,
 4523     for (Expr *E : InitList->inits())
 4529       Expr *Init = InitList->getInit(i);
 4616 void Sema::DiagnoseAutoDeductionFailure(VarDecl *VDecl, Expr *Init) {
 5259                            const Expr *E,
 5465     if (auto *E = Proto->getNoexceptExpr())
tools/clang/lib/Sema/SemaTemplateInstantiate.cpp
 1304   Expr *TransformedExpr = getDerived().TransformExpr(LH->getValue()).get();
 1329     Expr *argExpr = arg.getAsExpr();
 1377   Expr *resultExpr = result.get();
 1864     Expr *Arg = OldParm->getUninstantiatedDefaultArg();
 1869   } else if (Expr *Arg = OldParm->getDefaultArg()) {
 2405   Expr *OldInit = Pattern->getInClassInitializer();
 2443   Expr *Init = NewInit.get();
 2923 bool Sema::SubstExprs(ArrayRef<Expr *> Exprs, bool IsCall,
 2925                       SmallVectorImpl<Expr *> &Outputs) {
tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
   89       S.AddAlignedAttr(New, *Aligned, Result.getAs<Expr>(), IsPackExpansion);
  144   Expr *E, *OE = nullptr;
  148   E = Result.getAs<Expr>();
  154     OE = Result.getAs<Expr>();
  168     S.AddAlignValueAttr(New, *Aligned, Result.getAs<Expr>());
  174   Expr *Param = IntegerLiteral::Create(
  181 static Expr *instantiateDependentFunctionAttrCondition(
  183     const Attr *A, Expr *OldCond, const Decl *Tmpl, FunctionDecl *New) {
  184   Expr *Cond = nullptr;
  192     Cond = Result.getAs<Expr>();
  203       !Expr::isPotentialConstantExprUnevaluated(Cond, New, Diags)) {
  215   Expr *Cond = instantiateDependentFunctionAttrCondition(
  226   Expr *Cond = instantiateDependentFunctionAttrCondition(
  247   Expr *MaxThreads = Result.getAs<Expr>();
  247   Expr *MaxThreads = Result.getAs<Expr>();
  249   Expr *MinBlocks = nullptr;
  254     MinBlocks = Result.getAs<Expr>();
  277   SmallVector<Expr *, 4> Uniforms, Aligneds, Alignments, Linears, Steps;
  307   if (auto *E = Attr.getSimdlen())
  311     for(auto *E : Attr.uniforms()) {
  320   for (auto *E : Attr.aligneds()) {
  333   for (auto *E : Attr.linears()) {
  388   if (Expr *E = Attr.getVariantFuncRef())
  392   if (Expr *E = Attr.getScore())
  396   Optional<std::pair<FunctionDecl *, Expr *>> DeclVarData =
  422   Expr *MinExpr = Result.getAs<Expr>();
  422   Expr *MinExpr = Result.getAs<Expr>();
  427   Expr *MaxExpr = Result.getAs<Expr>();
  427   Expr *MaxExpr = Result.getAs<Expr>();
  438   Expr *OldCond = ES.getExpr();
  439   Expr *Cond = nullptr;
  465   Expr *MinExpr = Result.getAs<Expr>();
  465   Expr *MinExpr = Result.getAs<Expr>();
  467   Expr *MaxExpr = nullptr;
  472     MaxExpr = Result.getAs<Expr>();
  962   Expr *BitWidth = D->getBitWidth();
  976       BitWidth = InstantiatedBitWidth.getAs<Expr>();
 1141   Expr *AssertExpr = D->getAssertExpr();
 1252     if (Expr *UninstValue = EC->getInitExpr()) {
 2982   SmallVector<Expr *, 5> Vars;
 2983   for (auto *I : D->varlists()) {
 2984     Expr *Var = SemaRef.SubstExpr(I, TemplateArgs).get();
 2999   SmallVector<Expr *, 5> Vars;
 3000   for (auto *I : D->varlists()) {
 3001     Expr *Var = SemaRef.SubstExpr(I, TemplateArgs).get();
 3063     if (Expr *Combiner = D->getCombiner()) {
 3066       if (Expr *Init = D->getInitializer()) {
 3075   Expr *SubstCombiner = nullptr;
 3076   Expr *SubstInitializer = nullptr;
 3183       SmallVector<Expr *, 4> NewVars;
 3184       for (Expr *OE : OldC->varlists()) {
 3185         Expr *NE = SemaRef.SubstExpr(OE, TemplateArgs).get();
 3524   Expr *InstRequiresClause = nullptr;
 3525   if (Expr *E = L->getRequiresClause()) {
 4641       Expr *InitExpr = Init.get();
tools/clang/lib/Sema/SemaTemplateVariadic.cpp
  134       Expr *E = dyn_cast_or_null<Expr>(S);
  134       Expr *E = dyn_cast_or_null<Expr>(S);
  264                                Expr *Init) {
  397 bool Sema::DiagnoseUnexpandedParameterPack(Expr *E,
  620 ExprResult Sema::ActOnPackExpansion(Expr *Pattern, SourceLocation EllipsisLoc) {
  624 ExprResult Sema::CheckPackExpansion(Expr *Pattern, SourceLocation EllipsisLoc,
 1059     Expr *Pattern = Expansion->getPattern();
 1141 static void CheckFoldOperand(Sema &S, Expr *E) {
 1156 ExprResult Sema::ActOnCXXFoldExpr(SourceLocation LParenLoc, Expr *LHS,
 1158                                   SourceLocation EllipsisLoc, Expr *RHS,
 1189     Expr *Pack = LHS ? LHS : RHS;
 1202 ExprResult Sema::BuildCXXFoldExpr(SourceLocation LParenLoc, Expr *LHS,
 1204                                   SourceLocation EllipsisLoc, Expr *RHS,
tools/clang/lib/Sema/SemaType.cpp
 1564     Expr *E = DS.getRepAsExpr();
 1575     Expr *E = DS.getRepAsExpr();
 2107 static bool isArraySizeVLA(Sema &S, Expr *ArraySize, llvm::APSInt &SizeVal) {
 2143                               Expr *ArraySize, unsigned Quals,
 2349 QualType Sema::BuildVectorType(QualType CurType, Expr *SizeExpr,
 2404 QualType Sema::BuildExtVectorType(QualType T, Expr *ArraySize,
 4473       Expr *ArraySize = static_cast<Expr*>(ATI.NumElts);
 4897         Expr *NoexceptExpr = nullptr;
 5893                                    const Expr *AddrSpace,
 5937 QualType Sema::BuildAddressSpaceAttr(QualType &T, LangAS ASIdx, Expr *AddrSpace,
 5960 QualType Sema::BuildAddressSpaceAttr(QualType &T, Expr *AddrSpace,
 5995     Expr *ASArgExpr;
 7144   Expr *SizeExpr;
 7181   Expr *sizeExpr;
 7280   Expr *numEltsExpr = static_cast<Expr *>(Attr.getArgAsExpr(0));
 7730 void Sema::completeExprArrayBound(Expr *E) {
 7788 bool Sema::RequireCompleteExprType(Expr *E, TypeDiagnoser &Diagnoser) {
 7806 bool Sema::RequireCompleteExprType(Expr *E, unsigned DiagID) {
 8297 QualType Sema::BuildTypeofExprType(Expr *E, SourceLocation Loc) {
 8314 static QualType getDecltypeForExpr(Sema &S, Expr *E) {
 8381 QualType Sema::BuildDecltypeType(Expr *E, SourceLocation Loc,
tools/clang/lib/Sema/TreeTransform.h
  217   bool DropCallArgument(Expr *E) {
  417   bool TransformExprs(Expr *const *Inputs, unsigned NumInputs, bool IsCall,
  418                       SmallVectorImpl<Expr *> &Outputs,
  441                                            Expr *Expr,
  786                             Expr *SizeExpr,
  798                                     Expr *SizeExpr,
  819                                     Expr *SizeExpr,
  830                                           Expr *SizeExpr,
  847   QualType RebuildDependentVectorType(QualType ElementType, Expr *SizeExpr,
  865                                               Expr *SizeExpr,
  877                                             Expr *AddrSpaceExpr,
  920   QualType RebuildTypeOfExprType(Expr *Underlying, SourceLocation Loc);
  936   QualType RebuildDecltypeType(Expr *Underlying, SourceLocation Loc);
 1234                                    Expr *LHS,
 1236                                    Expr *RHS,
 1325                            Expr *Cond, SourceLocation RParenLoc) {
 1357                                      Expr *Target) {
 1365   StmtResult RebuildReturnStmt(SourceLocation ReturnLoc, Expr *Result) {
 1387                                Expr *AsmString, MultiExprArg Clobbers,
 1405                               ArrayRef<Expr*> Exprs,
 1416   StmtResult RebuildCoreturnStmt(SourceLocation CoreturnLoc, Expr *Result,
 1502                                           Expr *Operand) {
 1525                                 Expr *Condition, SourceLocation StartLoc,
 1539   OMPClause *RebuildOMPFinalClause(Expr *Condition, SourceLocation StartLoc,
 1550   OMPClause *RebuildOMPNumThreadsClause(Expr *NumThreads,
 1562   OMPClause *RebuildOMPSafelenClause(Expr *Len, SourceLocation StartLoc,
 1572   OMPClause *RebuildOMPSimdlenClause(Expr *Len, SourceLocation StartLoc,
 1582   OMPClause *RebuildOMPAllocatorClause(Expr *A, SourceLocation StartLoc,
 1592   OMPClause *RebuildOMPCollapseClause(Expr *Num, SourceLocation StartLoc,
 1631       OpenMPScheduleClauseKind Kind, Expr *ChunkSize, SourceLocation StartLoc,
 1645                                      SourceLocation LParenLoc, Expr *Num) {
 1653   OMPClause *RebuildOMPPrivateClause(ArrayRef<Expr *> VarList,
 1665   OMPClause *RebuildOMPFirstprivateClause(ArrayRef<Expr *> VarList,
 1677   OMPClause *RebuildOMPLastprivateClause(ArrayRef<Expr *> VarList,
 1689   OMPClause *RebuildOMPSharedClause(ArrayRef<Expr *> VarList,
 1701   OMPClause *RebuildOMPReductionClause(ArrayRef<Expr *> VarList,
 1708                                        ArrayRef<Expr *> UnresolvedReductions) {
 1719       ArrayRef<Expr *> VarList, SourceLocation StartLoc,
 1723       ArrayRef<Expr *> UnresolvedReductions) {
 1734   RebuildOMPInReductionClause(ArrayRef<Expr *> VarList, SourceLocation StartLoc,
 1739                               ArrayRef<Expr *> UnresolvedReductions) {
 1749   OMPClause *RebuildOMPLinearClause(ArrayRef<Expr *> VarList, Expr *Step,
 1749   OMPClause *RebuildOMPLinearClause(ArrayRef<Expr *> VarList, Expr *Step,
 1765   OMPClause *RebuildOMPAlignedClause(ArrayRef<Expr *> VarList, Expr *Alignment,
 1765   OMPClause *RebuildOMPAlignedClause(ArrayRef<Expr *> VarList, Expr *Alignment,
 1778   OMPClause *RebuildOMPCopyinClause(ArrayRef<Expr *> VarList,
 1790   OMPClause *RebuildOMPCopyprivateClause(ArrayRef<Expr *> VarList,
 1802   OMPClause *RebuildOMPFlushClause(ArrayRef<Expr *> VarList,
 1816                          SourceLocation ColonLoc, ArrayRef<Expr *> VarList,
 1827   OMPClause *RebuildOMPDeviceClause(Expr *Device, SourceLocation StartLoc,
 1843       SourceLocation MapLoc, SourceLocation ColonLoc, ArrayRef<Expr *> VarList,
 1844       const OMPVarListLocTy &Locs, ArrayRef<Expr *> UnresolvedMappers) {
 1855   OMPClause *RebuildOMPAllocateClause(Expr *Allocate, ArrayRef<Expr *> VarList,
 1855   OMPClause *RebuildOMPAllocateClause(Expr *Allocate, ArrayRef<Expr *> VarList,
 1868   OMPClause *RebuildOMPNumTeamsClause(Expr *NumTeams, SourceLocation StartLoc,
 1879   OMPClause *RebuildOMPThreadLimitClause(Expr *ThreadLimit,
 1891   OMPClause *RebuildOMPPriorityClause(Expr *Priority, SourceLocation StartLoc,
 1902   OMPClause *RebuildOMPGrainsizeClause(Expr *Grainsize, SourceLocation StartLoc,
 1913   OMPClause *RebuildOMPNumTasksClause(Expr *NumTasks, SourceLocation StartLoc,
 1924   OMPClause *RebuildOMPHintClause(Expr *Hint, SourceLocation StartLoc,
 1936                                Expr *ChunkSize, SourceLocation StartLoc,
 1947   OMPClause *RebuildOMPToClause(ArrayRef<Expr *> VarList,
 1951                                 ArrayRef<Expr *> UnresolvedMappers) {
 1960   OMPClause *RebuildOMPFromClause(ArrayRef<Expr *> VarList,
 1964                                   ArrayRef<Expr *> UnresolvedMappers) {
 1973   OMPClause *RebuildOMPUseDevicePtrClause(ArrayRef<Expr *> VarList,
 1982   OMPClause *RebuildOMPIsDevicePtrClause(ArrayRef<Expr *> VarList,
 2001                                            Expr *Object, Stmt *Body) {
 2020                                           Expr *Collection,
 2076                                     Stmt *Begin, Stmt *End, Expr *Cond,
 2077                                     Expr *Inc, Stmt *LoopVar,
 2087           Expr *RangeExpr = RangeVar->getInit();
 2135   StmtResult RebuildSEHExceptStmt(SourceLocation Loc, Expr *FilterExpr,
 2901     SmallVector<Expr*, 8> ConvertedArgs;
 3234     Expr *Callee = new (SemaRef.Context)
 3244         Expr::getValueKindForType(Builtin->getReturnType()), RParenLoc);
 3397       ExprResult E = getDerived().TransformExpr(cast<Expr>(S));
 3504   SmallVector<Expr*, 8> NewArgs;
 3529 bool TreeTransform<Derived>::TransformExprs(Expr *const *Inputs,
 3532                                       SmallVectorImpl<Expr *> &Outputs,
 3544       Expr *Pattern = Expansion->getPattern();
 3643     SourceLocation Loc, VarDecl *Var, Expr *Expr, Sema::ConditionKind Kind) {
 4040     Expr *InputExpr = Input.getSourceExpression();
 4761   Expr *OldSize = TL.getSizeExpr();
 4764   Expr *NewSize = nullptr;
 4768     NewSize = getDerived().TransformExpr(OldSize).template getAs<Expr>();
 4847   Expr *Size = SizeResult.get();
 4886   Expr *origSize = TL.getSizeExpr();
 4895   Expr *size = sizeResult.get();
 7072   SmallVector<Expr*, 8> Constraints;
 7073   SmallVector<Expr*, 8> Exprs;
 7077   SmallVector<Expr*, 8> Clobbers;
 7089     Expr *OutputExpr = S->getOutputExpr(I);
 7107     Expr *InputExpr = S->getInputExpr(I);
 7152   ArrayRef<Expr*> SrcExprs = S->getAllExprs();
 7153   SmallVector<Expr*, 8> TransformedExprs;
 7223   Expr *ReturnObject = S->getReturnValueInit();
 8590   if (auto *Num = C->getNumForLoops()) {
 8709   llvm::SmallVector<Expr *, 16> Vars;
 8711   for (auto *VE : C->varlists()) {
 8712     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8724   llvm::SmallVector<Expr *, 16> Vars;
 8726   for (auto *VE : C->varlists()) {
 8727     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8739   llvm::SmallVector<Expr *, 16> Vars;
 8741   for (auto *VE : C->varlists()) {
 8742     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8754   llvm::SmallVector<Expr *, 16> Vars;
 8756   for (auto *VE : C->varlists()) {
 8757     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8769   llvm::SmallVector<Expr *, 16> Vars;
 8771   for (auto *VE : C->varlists()) {
 8772     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8788   llvm::SmallVector<Expr *, 16> UnresolvedReductions;
 8789   for (auto *E : C->reduction_ops()) {
 8816   llvm::SmallVector<Expr *, 16> Vars;
 8818   for (auto *VE : C->varlists()) {
 8819     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8835   llvm::SmallVector<Expr *, 16> UnresolvedReductions;
 8836   for (auto *E : C->reduction_ops()) {
 8861   llvm::SmallVector<Expr *, 16> Vars;
 8863   for (auto *VE : C->varlists()) {
 8864     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8880   llvm::SmallVector<Expr *, 16> UnresolvedReductions;
 8881   for (auto *E : C->reduction_ops()) {
 8906   llvm::SmallVector<Expr *, 16> Vars;
 8908   for (auto *VE : C->varlists()) {
 8909     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8925   llvm::SmallVector<Expr *, 16> Vars;
 8927   for (auto *VE : C->varlists()) {
 8928     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8944   llvm::SmallVector<Expr *, 16> Vars;
 8946   for (auto *VE : C->varlists()) {
 8947     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8959   llvm::SmallVector<Expr *, 16> Vars;
 8961   for (auto *VE : C->varlists()) {
 8962     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8973   llvm::SmallVector<Expr *, 16> Vars;
 8975   for (auto *VE : C->varlists()) {
 8976     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8988   llvm::SmallVector<Expr *, 16> Vars;
 8990   for (auto *VE : C->varlists()) {
 8991     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 9014     llvm::SmallVectorImpl<Expr *> &Vars, CXXScopeSpec &MapperIdScopeSpec,
 9016     llvm::SmallVectorImpl<Expr *> &UnresolvedMappers) {
 9019   for (auto *VE : C->varlists()) {
 9020     ExprResult EVar = TT.getDerived().TransformExpr(cast<Expr>(VE));
 9042   for (auto *E : C->mapperlists()) {
 9067   llvm::SmallVector<Expr *, 16> Vars;
 9070   llvm::SmallVector<Expr *, 16> UnresolvedMappers;
 9083   Expr *Allocator = C->getAllocator();
 9090   llvm::SmallVector<Expr *, 16> Vars;
 9092   for (auto *VE : C->varlists()) {
 9093     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 9182   llvm::SmallVector<Expr *, 16> Vars;
 9185   llvm::SmallVector<Expr *, 16> UnresolvedMappers;
 9196   llvm::SmallVector<Expr *, 16> Vars;
 9199   llvm::SmallVector<Expr *, 16> UnresolvedMappers;
 9210   llvm::SmallVector<Expr *, 16> Vars;
 9212   for (auto *VE : C->varlists()) {
 9213     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 9225   llvm::SmallVector<Expr *, 16> Vars;
 9227   for (auto *VE : C->varlists()) {
 9228     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 9369   SmallVector<Expr *, 4> AssocExprs;
 9467       Expr *FromIndex = E->getIndexExpr(ON.getArrayExprIndex());
 9529   Expr *newSyntacticForm = SemaRef.recreateSyntacticForm(E);
 9657   SmallVector<Expr*, 8> Args;
 9804   Expr *PossibleBinOps[] = {E->getSemanticForm(),
 9806   for (Expr *PossibleBinOp : PossibleBinOps) {
 9975   SmallVector<Expr*, 4> Inits;
10002   SmallVector<Expr*, 4> ArrayExprs;
10146   SmallVector<Expr*, 4> Inits;
10252     SmallVector<Expr*, 8> Args;
10346   SmallVector<Expr*, 8> Args;
10623   Optional<Expr *> ArraySize;
10624   if (Optional<Expr *> OldArraySize = E->getArraySize()) {
10636   SmallVector<Expr*, 8> PlacementArgs;
10643   Expr *OldInit = E->getInitializer();
11260   SmallVector<Expr*, 8> Args;
11349   SmallVector<Expr*, 8> Args;
11409       Expr *NewExprInit = NewExprInitResult.get();
11754   SmallVector<Expr*, 8> Args;
11781   Expr *OldBase;
12154   Expr *Pattern = E->getPattern();
12309   SmallVector<Expr *, 8> Elements;
12505   SmallVector<Expr*, 8> Args;
12687   SmallVector<Expr*, 8> SubExprs;
12810   SmallVector<Expr*, 8> SubExprs;
12903                                          Expr *SizeExpr,
12939                                                  Expr *SizeExpr,
12960                                                  Expr *SizeExpr,
12972                                                        Expr *SizeExpr,
12982     QualType PointeeType, Expr *AddrSpaceExpr, SourceLocation AttributeLoc) {
12998     QualType ElementType, Expr *SizeExpr, SourceLocation AttributeLoc,
13018                                                            Expr *SizeExpr,
13092 QualType TreeTransform<Derived>::RebuildTypeOfExprType(Expr *E,
13103 QualType TreeTransform<Derived>::RebuildDecltypeType(Expr *E,
13194   Expr *Callee = OrigCallee->IgnoreParenCasts();
13272   Expr *Args[2] = { First, Second };
tools/clang/lib/Serialization/ASTReader.cpp
 6445     Expr *SizeExpr = ReadExpr(*Loc.F);
 6809     Expr *NumElts = ReadExpr(*Loc.F);
 6856     Expr *SizeExpr = ReadExpr(*Loc.F);
 6869     Expr *SizeExpr = ReadExpr(*Loc.F);
 6881     Expr *AddrSpaceExpr = ReadExpr(*Loc.F);
 9349   Expr *RequiresClause = HasRequiresClause ? ReadExpr(F) : nullptr;
 9429     Expr *Init = ReadExpr(F);
10790         Expr *FirstExpr = FirstSA->getAssertExpr();
10791         Expr *SecondExpr = SecondSA->getAssertExpr();
10914         const Expr *FirstInitializer = FirstField->getInClassInitializer();
10915         const Expr *SecondInitializer = SecondField->getInClassInitializer();
11145           const Expr *FirstInit = FirstParam->getInit();
11146           const Expr *SecondInit = SecondParam->getInit();
11372         const Expr *FirstInit = FirstVD->getInit();
11373         const Expr *SecondInit = SecondVD->getInit();
11718               Expr *FirstDefaultArgument = FirstNTTPD->getDefaultArgument();
11719               Expr *SecondDefaultArgument = SecondNTTPD->getDefaultArgument();
11892         const Expr *FirstInit = FirstParam->getInit();
11893         const Expr *SecondInit = SecondParam->getInit();
12093         const Expr *FirstInit = FirstEnumConstant->getInitExpr();
12094         const Expr *SecondInit = SecondEnumConstant->getInitExpr();
12616   SmallVector<Expr *, 16> Vars;
12631   SmallVector<Expr *, 16> Vars;
12650   SmallVector<Expr *, 16> Vars;
12676   SmallVector<Expr *, 16> Vars;
12694   SmallVector<Expr *, 16> Vars;
12728   SmallVector<Expr *, 16> Vars;
12762   SmallVector<Expr *, 16> Vars;
12796   SmallVector<Expr *, 16> Vars;
12829   SmallVector<Expr *, 16> Vars;
12840   SmallVector<Expr *, 16> Exprs;
12862   SmallVector<Expr *, 16> Exprs;
12884   SmallVector<Expr *, 16> Vars;
12898   SmallVector<Expr *, 16> Vars;
12933   SmallVector<Expr *, 16> Vars;
12939   SmallVector<Expr *, 16> UDMappers;
12966     Expr *AssociatedExpr = Record.readExpr();
12979   SmallVector<Expr *, 16> Vars;
13052   SmallVector<Expr *, 16> Vars;
13058   SmallVector<Expr *, 16> UDMappers;
13085     Expr *AssociatedExpr = Record.readSubExpr();
13104   SmallVector<Expr *, 16> Vars;
13110   SmallVector<Expr *, 16> UDMappers;
13137     Expr *AssociatedExpr = Record.readSubExpr();
13152   SmallVector<Expr *, 16> Vars;
13187     Expr *AssociatedExpr = Record.readSubExpr();
13202   SmallVector<Expr *, 16> Vars;
13230     Expr *AssociatedExpr = Record.readSubExpr();
tools/clang/lib/Serialization/ASTReaderDecl.cpp
 1331   if (auto *BW = Record.readExpr())
 1402     Expr *CopyExpr = Record.readExpr();
 1510     Expr *copyExpr = ((flags & 4) ? Record.readExpr() : nullptr);
 1941     auto *ThisArg = Record.readExpr();
 2571   SmallVector<Expr *, 16> Vars;
 2583   SmallVector<Expr *, 16> Vars;
 2611   Expr *In = Record.readExpr();
 2612   Expr *Out = Record.readExpr();
 2614   Expr *Combiner = Record.readExpr();
 2616   Expr *Orig = Record.readExpr();
 2617   Expr *Priv = Record.readExpr();
 2619   Expr *Init = Record.readExpr();
 2628   Expr *MapperVarRefE = Record.readExpr();
 2671   Expr *readExpr() { return Reader->ReadExpr(*F); }
 4315       auto *DefaultArg = Record.readExpr();
 4326       auto *DefaultInit = Record.readExpr();
 4429       auto *ThisArg = Record.readExpr();
 4493       Expr *Allocator = Record.readExpr();
tools/clang/lib/Serialization/ASTReaderStmt.cpp
  437   SmallVector<Expr*, 16> Exprs;
  444     Exprs.push_back(cast<Expr>(Record.readSubStmt()));
  521 void ASTStmtReader::VisitExpr(Expr *E) {
  940   Expr *filler = nullptr;
  951       Expr *init = Record.readSubExpr();
 1088   SmallVector<Expr *, 16> Exprs;
 1143     Expr *subExpr = Record.readSubExpr();
 1179   Expr **Elements = E->getElements();
 2066   SmallVector<Expr *, 4> Sub;
 2421 Expr *ASTReader::ReadExpr(ModuleFile &F) {
 2422   return cast_or_null<Expr>(ReadStmt(F));
 2425 Expr *ASTReader::ReadSubExpr() {
 2426   return cast_or_null<Expr>(ReadSubStmt());
tools/clang/lib/Serialization/ASTWriter.cpp
 6078   if (const Expr *RequiresClause = TemplateParams->getRequiresClause()) {
 6433                                        Expr *ThisArg) {
 6703   for (Expr *NumIter : C->getLoopNumIterations())
 6735   for (auto *VE : C->varlists()) {
 6738   for (auto *VE : C->private_copies()) {
 6747   for (auto *VE : C->varlists()) {
 6750   for (auto *VE : C->private_copies()) {
 6753   for (auto *VE : C->inits()) {
 6762   for (auto *VE : C->varlists())
 6764   for (auto *E : C->private_copies())
 6766   for (auto *E : C->source_exprs())
 6768   for (auto *E : C->destination_exprs())
 6770   for (auto *E : C->assignment_ops())
 6777   for (auto *VE : C->varlists())
 6788   for (auto *VE : C->varlists())
 6790   for (auto *VE : C->privates())
 6792   for (auto *E : C->lhs_exprs())
 6794   for (auto *E : C->rhs_exprs())
 6796   for (auto *E : C->reduction_ops())
 6807   for (auto *VE : C->varlists())
 6809   for (auto *VE : C->privates())
 6811   for (auto *E : C->lhs_exprs())
 6813   for (auto *E : C->rhs_exprs())
 6815   for (auto *E : C->reduction_ops())
 6826   for (auto *VE : C->varlists())
 6828   for (auto *VE : C->privates())
 6830   for (auto *E : C->lhs_exprs())
 6832   for (auto *E : C->rhs_exprs())
 6834   for (auto *E : C->reduction_ops())
 6836   for (auto *E : C->taskgroup_descriptors())
 6847   for (auto *VE : C->varlists()) {
 6850   for (auto *VE : C->privates()) {
 6853   for (auto *VE : C->inits()) {
 6856   for (auto *VE : C->updates()) {
 6859   for (auto *VE : C->finals()) {
 6864   for (auto *VE : C->used_expressions())
 6872   for (auto *VE : C->varlists())
 6880   for (auto *VE : C->varlists())
 6882   for (auto *E : C->source_exprs())
 6884   for (auto *E : C->destination_exprs())
 6886   for (auto *E : C->assignment_ops())
 6893   for (auto *VE : C->varlists())
 6895   for (auto *E : C->source_exprs())
 6897   for (auto *E : C->destination_exprs())
 6899   for (auto *E : C->assignment_ops())
 6906   for (auto *VE : C->varlists())
 6917   for (auto *VE : C->varlists())
 6944   for (auto *E : C->varlists())
 6946   for (auto *E : C->mapperlists())
 6965   for (auto *VE : C->varlists())
 7029   for (auto *E : C->varlists())
 7031   for (auto *E : C->mapperlists())
 7053   for (auto *E : C->varlists())
 7055   for (auto *E : C->mapperlists())
 7075   for (auto *E : C->varlists())
 7077   for (auto *VE : C->private_copies())
 7079   for (auto *VE : C->inits())
 7099   for (auto *E : C->varlists())
tools/clang/lib/Serialization/ASTWriterDecl.cpp
 1782   for (auto *I : D->varlists())
 1791   for (auto *I : D->varlists())
tools/clang/lib/Serialization/ASTWriterStmt.cpp
  421   for (auto *I : S->capture_inits())
  440 void ASTStmtWriter::VisitExpr(Expr *E) {
  597   for (auto *SubStmt : E->exprs())
  858   bool isArrayFiller = E->ArrayFillerOrUnionFieldInit.is<Expr*>();
  869     Expr *filler = E->getArrayFiller();
tools/clang/lib/StaticAnalyzer/Checkers/AllocationState.h
   21                              const Expr *Origin);
tools/clang/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp
  113     void warnIfNilExpr(const Expr *E,
  125                            const Expr *Expr,
  137 void NilArgChecker::warnIfNilExpr(const Expr *E,
  209                                       const Expr *E,
  351   void EmitError(const TypedRegion* R, const Expr *Ex,
 1036   const Expr *MsgExpr = M.getOriginExpr();
 1154   ProgramStateRef assumeExprIsNonNull(const Expr *NonNullExpr,
 1157   void assumeExprIsNonNull(const Expr *E, CheckerContext &C) const {
 1176 ObjCNonNilReturnValueChecker::assumeExprIsNonNull(const Expr *NonNullExpr,
tools/clang/lib/StaticAnalyzer/Checkers/BuiltinFunctionChecker.cpp
   40   const Expr *CE = Call.getOriginExpr();
  110     Expr::EvalResult EVResult;
  111     if (CE->EvaluateAsInt(EVResult, C.getASTContext(), Expr::SE_NoSideEffects)) {
tools/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
  114                       const Expr *Size,
  115                       const Expr *Source,
  116                       const Expr *Dest,
  170                                         const Expr *Ex,
  175                         const Expr *Ex,
  181                                          const Expr *expr,
  186                                           const Expr *Ex, SVal V,
  188                                           const Expr *Size);
  193   static bool memsetAux(const Expr *DstBuffer, SVal CharE,
  194                         const Expr *Size, CheckerContext &C,
  200                                    const Expr *S,
  205                                     const Expr *S,
  210                                         const Expr *Size,
  211                                         const Expr *FirstBuf,
  212                                         const Expr *SecondBuf,
  219                                         const Expr *Size,
  220                                         const Expr *Buf,
  229                                    const Expr *Size,
  230                                    const Expr *First,
  231                                    const Expr *Second) const;
  255                                 const Expr *FirstBuf,
  256                                 const Expr *Size);
  281                                             const Expr *S, SVal l,
  312                                              const Expr *S, SVal l,
  372                                                  const Expr *Size,
  373                                                  const Expr *FirstBuf,
  374                                                  const Expr *SecondBuf,
  417     const Expr *warningExpr = (WarnAboutSize ? Size : FirstBuf);
  437       const Expr *warningExpr = (WarnAboutSize ? Size : SecondBuf);
  451                                             const Expr *Size,
  452                                             const Expr *First,
  453                                             const Expr *Second) const {
  592     if (const auto *Ex = dyn_cast<Expr>(S))
  592     if (const auto *Ex = dyn_cast<Expr>(S))
  755                                                const Expr *Ex,
  793                                       const Expr *Ex, SVal Buf,
  867   ProgramStateRef &state, const Expr *expr, SVal val) const {
  888                                        const Expr *FirstBuf,
  889                                        const Expr *Size) {
  954                                                  const Expr *E, SVal V,
  956                                                  const Expr *Size) {
 1046 bool CStringChecker::memsetAux(const Expr *DstBuffer, SVal CharVal,
 1047                                const Expr *Size, CheckerContext &C,
 1141                                     const Expr *Size, const Expr *Dest,
 1141                                     const Expr *Size, const Expr *Dest,
 1142                                     const Expr *Source, bool Restricted,
 1243   const Expr *Dest = CE->getArg(0);
 1252   const Expr *Dest = CE->getArg(0);
 1261   const Expr *Dest = CE->getArg(0);
 1277   const Expr *Left = CE->getArg(0);
 1278   const Expr *Right = CE->getArg(1);
 1279   const Expr *Size = CE->getArg(2);
 1365     const Expr *maxlenExpr = CE->getArg(1);
 1389   const Expr *Arg = CE->getArg(0);
 1413     const Expr *maxlenExpr = CE->getArg(1);
 1547   const Expr *Dst = CE->getArg(0);
 1555   const Expr *srcExpr = CE->getArg(1);
 1587     const Expr *lenExpr = CE->getArg(2);
 1911   const Expr *s1 = CE->getArg(0);
 1918   const Expr *s2 = CE->getArg(1);
 1977       const Expr *lenExpr = CE->getArg(2);
 2034   const Expr *SearchStrPtr = CE->getArg(0);
 2052   const Expr *DelimStr = CE->getArg(1);
 2114   const Expr *Dst = CE->getArg(2);
 2130   const Expr *Mem = CE->getArg(0);
 2131   const Expr *CharE = CE->getArg(1);
 2132   const Expr *Size = CE->getArg(2);
 2178   const Expr *Mem = CE->getArg(0);
 2179   const Expr *Size = CE->getArg(1);
 2288     const Expr *Init = D->getInit();
tools/clang/lib/StaticAnalyzer/Checkers/CStringSyntaxChecker.cpp
   38   bool sameDecl(const Expr *A1, const Expr *A2) {
   38   bool sameDecl(const Expr *A1, const Expr *A2) {
   46   bool isSizeof(const Expr *E, const Expr *WithArg) {
   46   bool isSizeof(const Expr *E, const Expr *WithArg) {
   54   bool isStrlen(const Expr *E, const Expr *WithArg) {
   54   bool isStrlen(const Expr *E, const Expr *WithArg) {
   66   bool isOne(const Expr *E) {
   72   StringRef getPrintableName(const Expr *E) {
  125   const Expr *DstArg = CE->getArg(0);
  126   const Expr *SrcArg = CE->getArg(1);
  127   const Expr *LenArg = CE->getArg(2);
  133       const Expr *L = BE->getLHS();
  134       const Expr *R = BE->getRHS();
  156   const Expr *DstArg = CE->getArg(0);
  157   const Expr *LenArg = CE->getArg(2);
  220       const Expr *DstArg = CE->getArg(0);
  221       const Expr *LenArg = CE->getArg(2);
  245       const Expr *DstArg = CE->getArg(0);
  246       const Expr *LenArg = CE->getArg(2);
tools/clang/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp
   67                           const Expr *ArgEx, int ArgumentNumber,
   72   static void emitBadCall(BugType *BT, CheckerContext &C, const Expr *BadE);
   85                           SourceRange ArgRange, const Expr *ArgEx,
   93                                         const Expr *BadE) {
  144     CheckerContext &C, const SVal &V, SourceRange ArgRange, const Expr *ArgEx,
  235                                                const Expr *ArgEx,
  317   const Expr *Callee = CE->getCallee()->IgnoreParens();
  490       if (const Expr *ReceiverE = ME->getInstanceReceiver())
  532   if (const Expr *receiver = ME->getInstanceReceiver()) {
tools/clang/lib/StaticAnalyzer/Checkers/CastSizeChecker.cpp
   88   const Expr *E = CE->getSubExpr();
tools/clang/lib/StaticAnalyzer/Checkers/CastToStructChecker.cpp
   40   const Expr *E = CE->getSubExpr();
tools/clang/lib/StaticAnalyzer/Checkers/CastValueChecker.cpp
  105                                  QualType CastToTy, const Expr *Object,
  163   const Expr *Object;
tools/clang/lib/StaticAnalyzer/Checkers/CheckSecuritySyntaxOnly.cpp
  210 getIncrementedVar(const Expr *expr, const VarDecl *x, const VarDecl *y) {
  248   const Expr *condition = FS->getCond();
  254   const Expr *increment = FS->getInc();
  612     const Expr *suffixEx = CE->getArg((unsigned)ArgSuffix.second);
  613     Expr::EvalResult EVResult;
  666   const auto *Target = CE->getArg(0)->IgnoreImpCasts(),
tools/clang/lib/StaticAnalyzer/Checkers/CheckSizeofPointer.cpp
   60     Expr *ArgEx = E->getArgumentExpr();
tools/clang/lib/StaticAnalyzer/Checkers/ChrootChecker.cpp
   98   const Expr *ArgExpr = Call.getArgExpr(0);
tools/clang/lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp
  102 static const Expr *
  103 LookThroughTransitiveAssignmentsAndCommaOperators(const Expr *Ex) {
  267   void CheckVarDecl(const VarDecl *VD, const Expr *Ex, const Expr *Val,
  267   void CheckVarDecl(const VarDecl *VD, const Expr *Ex, const Expr *Val,
  288   void CheckDeclRef(const DeclRefExpr *DR, const Expr *Val, DeadStoreKind dsk,
  298     const Expr *RHS = B->getRHS()->IgnoreParenCasts();
  335           const Expr *RHS =
  343             if (RHS->isNullPointerConstant(Ctx, Expr::NPC_ValueDependentIsNull))
  369       const Expr *Ex = U->getSubExpr()->IgnoreParenCasts();
  389           if (const Expr *E = V->getInit()) {
  475     const Expr *E = U->getSubExpr()->IgnoreParenCasts();
tools/clang/lib/StaticAnalyzer/Checkers/DeleteWithNonVirtualDtorChecker.cpp
   63   const Expr *DeletedObj = DE->getArgument();
tools/clang/lib/StaticAnalyzer/Checkers/DereferenceChecker.cpp
   45                              const Expr *Ex, const ProgramState *state,
   54                                    const Expr *Ex,
   90 static const Expr *getDereferenceExpr(const Stmt *S, bool IsBind=false){
   91   const Expr *E = nullptr;
   95   if (const Expr *expr = dyn_cast<Expr>(S))
   95   if (const Expr *expr = dyn_cast<Expr>(S))
  100     const Expr *Init;
  108 static bool suppressReport(const Expr *E) {
  113 static bool isDeclRefExprToReference(const Expr *E) {
  225       const Expr *expr = getDereferenceExpr(S);
  267       const Expr *expr = getDereferenceExpr(S, /*IsBind=*/true);
tools/clang/lib/StaticAnalyzer/Checkers/DivZeroChecker.cpp
   36 static const Expr *getDenomExpr(const ExplodedNode *N) {
tools/clang/lib/StaticAnalyzer/Checkers/DynamicTypePropagation.cpp
   62   const ObjCObjectPointerType *getBetterObjCType(const Expr *CastE,
  321   const Expr *RecE = MsgE->getInstanceReceiver();
  344 DynamicTypePropagation::getBetterObjCType(const Expr *CastE,
  610 static const Expr *stripCastsAndSugar(const Expr *E) {
  610 static const Expr *stripCastsAndSugar(const Expr *E) {
  767     const Expr *Arg = MessageExpr->getArg(i);
tools/clang/lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp
  112   const Expr *Assertion = CE->getArg(0);
tools/clang/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp
  112   static bool isStdin(const Expr *E, CheckerContext &C);
  115   static Optional<SVal> getPointedToSVal(CheckerContext &C, const Expr *Arg);
  149   bool generateReportIfTainted(const Expr *E, StringRef Msg,
  211     static bool isTaintedOrPointsToTainted(const Expr *E, ProgramStateRef State,
  516     const Expr *Arg = CE->getArg(ArgNum);
  559                                                      const Expr *Arg) {
  635       const Expr *Arg = CE->getArg(i);
  662 bool GenericTaintChecker::isStdin(const Expr *E, CheckerContext &C) {
  721 bool GenericTaintChecker::generateReportIfTainted(const Expr *E, StringRef Msg,
tools/clang/lib/StaticAnalyzer/Checkers/IdenticalExprChecker.cpp
   81   const Expr *LHS = B->getLHS();
   82   const Expr *RHS = B->getRHS();
  136     const Expr *Cond1 = I->getCond();
  139       const Expr *Cond2 = I2->getCond();
  222   const Expr *LHS = B->getLHS()->IgnoreParenImpCasts();
  223   const Expr *RHS = B->getRHS()->IgnoreParenImpCasts();
  318   const Expr *Expr1 = dyn_cast<Expr>(Stmt1);
  318   const Expr *Expr1 = dyn_cast<Expr>(Stmt1);
  319   const Expr *Expr2 = dyn_cast<Expr>(Stmt2);
  319   const Expr *Expr2 = dyn_cast<Expr>(Stmt2);
  332     Expr::const_child_iterator I1 = Expr1->child_begin();
  333     Expr::const_child_iterator I2 = Expr2->child_begin();
tools/clang/lib/StaticAnalyzer/Checkers/InnerPointerChecker.cpp
  138     const Expr *Origin = Call.getOriginExpr();
tools/clang/lib/StaticAnalyzer/Checkers/IteratorChecker.cpp
  182   void handleComparison(CheckerContext &C, const Expr *CE, const SVal &RetVal,
  197   void handleBegin(CheckerContext &C, const Expr *CE, const SVal &RetVal,
  199   void handleEnd(CheckerContext &C, const Expr *CE, const SVal &RetVal,
  201   void assignToContainer(CheckerContext &C, const Expr *CE, const SVal &RetVal,
  204                     const Expr *CE = nullptr,
  303                                      const MemRegion *Cont, const Expr *E,
  307                                    const Expr *E, QualType T,
  579       const auto *OrigExpr = Call.getOriginExpr();
  693     const auto *OrigExpr = Call.getOriginExpr();
  851 void IteratorChecker::handleComparison(CheckerContext &C, const Expr *CE,
 1138 void IteratorChecker::handleBegin(CheckerContext &C, const Expr *CE,
 1160 void IteratorChecker::handleEnd(CheckerContext &C, const Expr *CE,
 1182 void IteratorChecker::assignToContainer(CheckerContext &C, const Expr *CE,
 1198                                    const Expr *CE, const SVal &OldCont) const {
 1943                                      const MemRegion *Cont, const Expr *E,
 1966                                    const Expr *E, QualType T,
tools/clang/lib/StaticAnalyzer/Checkers/IvarInvalidationChecker.cpp
  121     const Expr *peel(const Expr *E) const;
  121     const Expr *peel(const Expr *E) const;
  124     bool isZero(const Expr *E) const;
  142     void check(const Expr *E);
  589 const Expr *IvarInvalidationCheckerImpl::MethodCrawler::peel(const Expr *E) const {
  589 const Expr *IvarInvalidationCheckerImpl::MethodCrawler::peel(const Expr *E) const {
  641 bool IvarInvalidationCheckerImpl::MethodCrawler::isZero(const Expr *E) const {
  644   return (E->isNullPointerConstant(Ctx, Expr::NPC_ValueDependentIsNotNull)
  645            != Expr::NPCK_NotNull);
  648 void IvarInvalidationCheckerImpl::MethodCrawler::check(const Expr *E) {
  693   const Expr *Receiver = ME->getInstanceReceiver();
tools/clang/lib/StaticAnalyzer/Checkers/LLVMConventionsChecker.cpp
  151   Expr *Init = VD->getInit();
tools/clang/lib/StaticAnalyzer/Checkers/LocalizationChecker.cpp
 1225     bool isCheckingPlurality(const Expr *E) const;
 1242     const Expr *Condition) const {
 1247       const Expr *InitExpr = VD->getInit();
 1286         for (const Expr *Arg : CE->arguments()) {
 1340   const Expr *Condition = I->getCond()->IgnoreParenImpCasts();
 1370   const Expr *Condition = C->getCond()->IgnoreParenImpCasts();
tools/clang/lib/StaticAnalyzer/Checkers/MacOSKeychainAPIChecker.cpp
   44     AllocationState(const Expr *E, unsigned int Idx, SymbolRef R) :
  109                                          const Expr *ArgExpr,
  159 static bool isEnclosingFunctionParam(const Expr *E) {
  208 static SymbolRef getAsPointeeSymbol(const Expr *Expr,
  226                                     const Expr *ArgExpr,
  269     const Expr *ArgExpr = CE->getArg(paramIdx);
  306   const Expr *ArgExpr = CE->getArg(paramIdx);
  354       const Expr *DeallocatorExpr = CE->getArg(5)->IgnoreParenCasts();
  357           Expr::NPC_ValueDependentIsNotNull)) {
  416   const Expr *ArgExpr = CE->getArg(FunctionsToTrack[idx].Param);
  643   const Expr *ArgExpr = CE->getArg(FunctionsToTrack[Idx].Param);
tools/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
  103                                   const Expr *E);
  109                                    CheckerContext &C, const Expr *E);
  208 static ProgramStateRef MallocUpdateRefState(CheckerContext &C, const Expr *E,
  414   static ProgramStateRef ProcessZeroAllocCheck(CheckerContext &C, const Expr *E,
  450                                       const Expr *SizeEx, SVal Init,
  541   ProgramStateRef FreeMemAux(CheckerContext &C, const Expr *ArgExpr,
  542                              const Expr *ParentExpr, ProgramStateRef State,
  568   static SVal evalMulForBufferSize(CheckerContext &C, const Expr *Blocks,
  569                                    const Expr *BlockBytes);
  635                      const Expr *DeallocExpr) const;
  639                                const Expr *DeallocExpr, const RefState *RS,
  642                         const Expr *DeallocExpr,
  643                         const Expr *AllocExpr = nullptr) const;
  655                                  SourceRange Range, const Expr *FreeExpr) const;
  775     std::string getMessageForArg(const Expr *ArgE, unsigned ArgIndex) override {
 1012   const Expr *FlagsEx = CE->getArg(CE->getNumArgs() - 1);
 1044 SVal MallocChecker::evalMulForBufferSize(CheckerContext &C, const Expr *Blocks,
 1045                                          const Expr *BlockBytes) {
 1231     CheckerContext &C, const Expr *E, const unsigned IndexOfSizeArg,
 1239   const Expr *Arg = nullptr;
 1386     const Expr *SizeExpr = *NE->getArraySize();
 1501                                             const Expr *SizeEx, SVal Init,
 1554 static ProgramStateRef MallocUpdateRefState(CheckerContext &C, const Expr *E,
 1680                                   const Expr *E) {
 1721                                    CheckerContext &C, const Expr *E) {
 1748                                           const Expr *ArgExpr,
 1749                                           const Expr *ParentExpr,
 1864         const Expr *AllocExpr = cast<Expr>(RsBase->getStmt());
 1864         const Expr *AllocExpr = cast<Expr>(RsBase->getStmt());
 2047                                   const Expr *DeallocExpr) const {
 2120                                             const Expr *DeallocExpr,
 2137     const Expr *AllocExpr = cast<Expr>(RS->getStmt());
 2137     const Expr *AllocExpr = cast<Expr>(RS->getStmt());
 2175                                      SourceRange Range, const Expr *DeallocExpr,
 2176                                      const Expr *AllocExpr) const {
 2358                                               const Expr *FreeExpr) const {
 2405   const Expr *arg0Expr = CE->getArg(0);
 2417   const Expr *Arg1 = CE->getArg(1);
 2740   const Expr *E = S->getRetValue();
 2827   for (const Expr *Arg : CE->arguments())
 3019       const Expr *ArgE = Call->getArgExpr(i)->IgnoreParenCasts();
 3043       const Expr *ArgE = Call->getArgExpr(0)->IgnoreParenCasts();
 3385 markReleased(ProgramStateRef State, SymbolRef Sym, const Expr *Origin) {
tools/clang/lib/StaticAnalyzer/Checkers/MallocOverflowSecurityChecker.cpp
   36   const Expr *variable;
   39   MallocOverflowCheck(const BinaryOperator *m, const Expr *v, APSInt val)
   50     const Expr *TheArgument, ASTContext &Context) const;
   66   const Expr *TheArgument,
   74   const Expr *e = TheArgument;
   89       const Expr *lhs = binop->getLHS();
   90       const Expr *rhs = binop->getRHS();
  134     bool isIntZeroExpr(const Expr *E) const {
  137       Expr::EvalResult Result;
  160     void CheckExpr(const Expr *E_p) {
  162       const Expr *E = E_p->IgnoreParenImpCasts();
  182       const Expr *rhs = AssignEx->getRHS();
  189       const Expr *rhse = rhs->IgnoreParenImpCasts();
  192           const Expr *denom = BOp->getRHS()->IgnoreParenImpCasts();
  193           Expr::EvalResult Result;
  198           const Expr *numerator = BOp->getLHS()->IgnoreParenImpCasts();
  211       const Expr *lhs = AssignEx->getLHS();
  212       const Expr *E = lhs->IgnoreParenImpCasts();
  229         const Expr * lhs = E->getLHS();
  230         const Expr * rhs = E->getRHS();
tools/clang/lib/StaticAnalyzer/Checkers/MallocSizeofChecker.cpp
   40     const Expr *CastedExpr;
   44     CallRecord(ExprParent CastedExprParent, const Expr *CastedExpr,
   62       Calls.push_back(CallRecord(Parent, cast<Expr>(S), AllocCall.first,
  104         if (const Expr *Init = VD->getInit())
tools/clang/lib/StaticAnalyzer/Checkers/NoReturnFunctionChecker.cpp
   47   const Expr *Callee = CE.getOriginExpr();
tools/clang/lib/StaticAnalyzer/Checkers/NonNullParamChecker.cpp
   40                            const Expr *ArgE,
   44                                   const Expr *ArgE) const;
   97     const Expr *ArgE = Call.getArgExpr(idx);
  134           ArgE = dyn_cast<Expr>(*(IE->begin()));
  184                                               const Expr *ArgE,
  209     const ExplodedNode *ErrorNode, const Expr *ArgE) const {
  216     const Expr *ArgEDeref = bugreporter::getDerefExpr(ArgE);
tools/clang/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp
  176         if (const auto *Ex = dyn_cast<Expr>(ValueExpr))
  176         if (const auto *Ex = dyn_cast<Expr>(ValueExpr))
  510 static const Expr *lookThroughImplicitCasts(const Expr *E) {
  510 static const Expr *lookThroughImplicitCasts(const Expr *E) {
  659     const Expr *ArgExpr = Call.getArgExpr(Idx);
  987 static const Expr * matchValueExprForBind(const Stmt *S) {
 1001       if (const Expr *Init = VD->getInit())
 1041   const Expr *Init = VD->getInit();
 1083   const Expr *ValueExpr = matchValueExprForBind(S);
tools/clang/lib/StaticAnalyzer/Checkers/NumberObjectConversionChecker.cpp
   72   if (const Expr *CheckIfNull =
   73           Result.Nodes.getNodeAs<Expr>("check_if_null")) {
   89       Expr::EvalResult EVResult;
   91               EVResult, ACtx, Expr::SE_AllowSideEffects)) {
  105   const Expr *ConvertedCObject = Result.Nodes.getNodeAs<Expr>("c_object");
  105   const Expr *ConvertedCObject = Result.Nodes.getNodeAs<Expr>("c_object");
  106   const Expr *ConvertedCppObject = Result.Nodes.getNodeAs<Expr>("cpp_object");
  106   const Expr *ConvertedCppObject = Result.Nodes.getNodeAs<Expr>("cpp_object");
  107   const Expr *ConvertedObjCObject = Result.Nodes.getNodeAs<Expr>("objc_object");
  107   const Expr *ConvertedObjCObject = Result.Nodes.getNodeAs<Expr>("objc_object");
  110   const Expr *Obj = IsObjC ? ConvertedObjCObject
tools/clang/lib/StaticAnalyzer/Checkers/ObjCAtSyncChecker.cpp
   39   const Expr *Ex = S->getSynchExpr();
tools/clang/lib/StaticAnalyzer/Checkers/ObjCAutoreleaseWriteChecker.cpp
  118   const auto *MarkedStmt = Match.getNodeAs<Expr>(ProblematicWriteBind);
  118   const auto *MarkedStmt = Match.getNodeAs<Expr>(ProblematicWriteBind);
  123     MarkedStmt = Match.getNodeAs<Expr>(CapturedBind);
tools/clang/lib/StaticAnalyzer/Checkers/ObjCContainersASTChecker.cpp
   44   inline bool hasPointerToPointerSizedType(const Expr *E) {
   69         E->isNullPointerConstant(ASTC, Expr::NPC_ValueDependentIsNull));
  101   const Expr *Arg = nullptr;
tools/clang/lib/StaticAnalyzer/Checkers/ObjCContainersChecker.cpp
   40   inline SymbolRef getArraySym(const Expr *E, CheckerContext &C) const {
   46   void addSizeInfo(const Expr *Array, const Expr *Size,
   46   void addSizeInfo(const Expr *Array, const Expr *Size,
   68 void ObjCContainersChecker::addSizeInfo(const Expr *Array, const Expr *Size,
   68 void ObjCContainersChecker::addSizeInfo(const Expr *Array, const Expr *Size,
  121     const Expr *ArrayExpr = CE->getArg(0);
  132     const Expr *IdxExpr = CE->getArg(1);
tools/clang/lib/StaticAnalyzer/Checkers/ObjCSelfInitChecker.cpp
   66   void checkForInvalidSelf(const Expr *E, CheckerContext &C,
  133 static bool isInvalidSelf(const Expr *E, CheckerContext &C) {
  143 void ObjCSelfInitChecker::checkForInvalidSelf(const Expr *E, CheckerContext &C,
tools/clang/lib/StaticAnalyzer/Checkers/ObjCUnusedIVarsChecker.cpp
   53       const Expr *sub = *i;
tools/clang/lib/StaticAnalyzer/Checkers/PointerArithChecker.cpp
   54   void reportPointerArithMisuse(const Expr *E, CheckerContext &C,
  148 void PointerArithChecker::reportPointerArithMisuse(const Expr *E,
  262   const Expr *CastedExpr = CE->getSubExpr();
  280   const Expr *CastedExpr = CE->getSubExpr();
  323   const Expr *Lhs = BOp->getLHS();
  324   const Expr *Rhs = BOp->getRHS();
tools/clang/lib/StaticAnalyzer/Checkers/RetainCountChecker/RetainCountChecker.cpp
  230                                              const Expr *Ex) const {
  355   const Expr *CE = Call.getOriginExpr();
  394 static QualType GetReturnType(const Expr *RetE, ASTContext &Ctx) {
  691       const Expr *Ex = CallOrMsg.getOriginExpr();
  922     const Expr *BindReturnTo =
  978   const Expr *RetE = S->getRetValue();
tools/clang/lib/StaticAnalyzer/Checkers/RetainCountChecker/RetainCountChecker.h
  345   void processObjCLiterals(CheckerContext &C, const Expr *Ex) const;
tools/clang/lib/StaticAnalyzer/Checkers/RetainCountChecker/RetainCountDiagnostics.cpp
   71 static bool isNumericLiteralExpression(const Expr *E) {
  185 static Optional<std::string> findMetaClassAlloc(const Expr *Callee) {
  189     const Expr *This = ME->getBase()->IgnoreParenImpCasts();
  573       if (const Expr *receiver = ME->getInstanceReceiver()) {
  597     if (const Expr *Exp = dyn_cast_or_null<Expr>(Child))
  597     if (const Expr *Exp = dyn_cast_or_null<Expr>(Child))
tools/clang/lib/StaticAnalyzer/Checkers/ReturnPointerRangeChecker.cpp
   38   const Expr *RetE = RS->getRetValue();
tools/clang/lib/StaticAnalyzer/Checkers/ReturnUndefChecker.cpp
   30   void emitUndef(CheckerContext &C, const Expr *RetE) const;
   31   void checkReference(CheckerContext &C, const Expr *RetE,
   40   const Expr *RetE = RS->getRetValue();
   80 static void emitBug(CheckerContext &C, BuiltinBug &BT, const Expr *RetE,
   81                     const Expr *TrackingE = nullptr) {
   95 void ReturnUndefChecker::emitUndef(CheckerContext &C, const Expr *RetE) const {
  103 void ReturnUndefChecker::checkReference(CheckerContext &C, const Expr *RetE,
tools/clang/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp
   57                       const Expr *RetE) const;
   84     const Expr *ARE = AR->getExpr();
  153                                             const Expr *RetE) const {
  253   const Expr *RetE = RS->getRetValue();
tools/clang/lib/StaticAnalyzer/Checkers/TaintTesterChecker.cpp
   25 class TaintTesterChecker : public Checker< check::PostStmt<Expr> > {
   33                                const Expr* Arg,
   37   void checkPostStmt(const Expr *E, CheckerContext &C) const;
   46 void TaintTesterChecker::checkPostStmt(const Expr *E,
tools/clang/lib/StaticAnalyzer/Checkers/TestAfterDivZeroChecker.cpp
  101   const Expr *E = nullptr;
tools/clang/lib/StaticAnalyzer/Checkers/TraversalChecker.cpp
   96   const Expr *CallE = Call.getOriginExpr();
tools/clang/lib/StaticAnalyzer/Checkers/UndefBranchChecker.cpp
   36     const Expr *FindExpr(const Expr *Ex) {
   36     const Expr *FindExpr(const Expr *Ex) {
   41         if (const Expr *ExI = dyn_cast_or_null<Expr>(SubStmt))
   41         if (const Expr *ExI = dyn_cast_or_null<Expr>(SubStmt))
   42           if (const Expr *E2 = FindExpr(ExI))
   48     bool MatchesCriteria(const Expr *Ex) {
   86       const Expr *Ex = cast<Expr>(Condition);
   86       const Expr *Ex = cast<Expr>(Condition);
tools/clang/lib/StaticAnalyzer/Checkers/UndefCapturedBlockVarChecker.cpp
   87         if (const Expr *Ex = FindBlockDeclRefExpr(BE->getBody(), VD))
tools/clang/lib/StaticAnalyzer/Checkers/UndefResultChecker.cpp
   37 static bool isArrayIndexOutOfBounds(CheckerContext &C, const Expr *Ex) {
   98     const Expr *Ex = nullptr;
tools/clang/lib/StaticAnalyzer/Checkers/UndefinedArraySubscriptChecker.cpp
   37   const Expr *Index = A->getIdx();
tools/clang/lib/StaticAnalyzer/Checkers/UndefinedAssignmentChecker.cpp
   62   const Expr *ex = nullptr;
tools/clang/lib/StaticAnalyzer/Checkers/UnixAPIChecker.cpp
   80                                 const Expr *arg,
  188     const Expr *Arg = CE->getArg(CreateModeArgIndex);
  230   const Expr *oflagsEx = CE->getArg(FlagsArgIndex);
  339                                                     const Expr *arg,
  375   const Expr *arg = CE->getArg(sizeArg);
  403     const Expr *arg = CE->getArg(i);
tools/clang/lib/StaticAnalyzer/Checkers/VLASizeChecker.cpp
   36   void reportBug(VLASize_Kind Kind, const Expr *SizeE, ProgramStateRef State,
   46     VLASize_Kind Kind, const Expr *SizeE, ProgramStateRef State,
   96   const Expr *SE = VLA->getSizeExpr();
tools/clang/lib/StaticAnalyzer/Checkers/ValistChecker.cpp
   56   const MemRegion *getVAListAsRegion(SVal SV, const Expr *VAExpr,
  163 const MemRegion *ValistChecker::getVAListAsRegion(SVal SV, const Expr *E,
  189   const Expr *VASubExpr = VAA->getSubExpr();
tools/clang/lib/StaticAnalyzer/Checkers/VirtualCallChecker.cpp
   71     if (const Expr *Base = CME->getBase()) {
tools/clang/lib/StaticAnalyzer/Core/BugReporter.cpp
  328 std::string StackHintGeneratorForSymbol::getMessageForArg(const Expr *ArgE,
  614   if (isa<Expr>(S) && PM.isConsumedExpr(cast<Expr>(S)))
  614   if (isa<Expr>(S) && PM.isConsumedExpr(cast<Expr>(S)))
  764       const Expr *LHS = Case->getLHS()->IgnoreParenCasts();
 1845         if (isa<Expr>(s1End) && PM.isConsumedExpr(cast<Expr>(s1End))) {
 1845         if (isa<Expr>(s1End) && PM.isConsumedExpr(cast<Expr>(s1End))) {
 2331   if (Ranges.empty() && isa_and_nonnull<Expr>(getStmt()))
tools/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp
   74 static const Expr *peelOffPointerArithmetic(const BinaryOperator *B) {
   97 const Expr *bugreporter::getDerefExpr(const Stmt *S) {
   98   const auto *E = dyn_cast<Expr>(S);
   98   const auto *E = dyn_cast<Expr>(S);
  111       if (const Expr *Inner = peelOffPointerArithmetic(B)) {
  183 static Optional<SVal> getSValForVar(const Expr *CondVarExpr,
  208 getConcreteIntegerValue(const Expr *CondVarExpr, const ExplodedNode *N) {
  216 static bool isVarAnInterestingCondition(const Expr *CondVarExpr,
  232 static bool isInterestingExpr(const Expr *E, const ExplodedNode *N,
  453     const Expr *Base = IvarRef->getBase();
  861         if (const Expr *RHS = VD->getInit())
  867       const Expr *RHS = BO->getRHS();
  985     if (cast<Expr>(S)->isGLValue())
 1028     const Expr *RetE = Ret->getRetValue();
 1158       const Expr *ArgE = Call->getArgExpr(I);
 1369   const Expr *InitE = nullptr;
 1734 constructDebugPieceForTrackedCondition(const Expr *Cond,
 1814     if (const Expr *Condition = NB->getLastCondition()) {
 1834 static const MemRegion *getLocationRegionIfReference(const Expr *E,
 1857 static const Expr *peelOffOuterExpr(const Expr *Ex,
 1857 static const Expr *peelOffOuterExpr(const Expr *Ex,
 1867       const Expr *GetterMessageSend =
 1898     if (const Expr *SubEx = peelOffPointerArithmetic(BO))
 1914       if (const Expr *DerefEx = bugreporter::getDerefExpr(UO->getSubExpr()))
 1924                                                  const Expr *Inner) {
 1934                                        const Expr *E,
 1942   const Expr *Inner = peelOffOuterExpr(E, InputNode);
 1962   if (const Expr *Receiver = NilReceiverBRVisitor::getNilReceiver(Inner, LVNode))
 2080 const Expr *NilReceiverBRVisitor::getNilReceiver(const Stmt *S,
 2085   if (const Expr *Receiver = ME->getInstanceReceiver()) {
 2102   const Expr *Receiver = getNilReceiver(S, N);
 2184     return VisitTrueTest(cast<Expr>(PS->getStmt()), BRC, BR, N, TookTrue);
 2194   const Expr *Cond = nullptr;
 2249 ConditionBRVisitor::VisitTrueTest(const Expr *Cond, BugReporterContext &BRC,
 2266   const Expr *CondTmp = Cond;
 2317 bool ConditionBRVisitor::patternMatch(const Expr *Ex,
 2318                                       const Expr *ParentEx,
 2325   const Expr *OriginalExpr = Ex;
 2405     const Expr *Cond, const BinaryOperator *BExpr, BugReporterContext &BRC,
 2525     StringRef LhsString, const Expr *CondVarExpr, BugReporterContext &BRC,
 2552     const Expr *Cond, const DeclRefExpr *DRE, BugReporterContext &BRC,
 2588     const Expr *Cond, const MemberExpr *ME, BugReporterContext &BRC,
 2625 bool ConditionBRVisitor::printValue(const Expr *CondVarExpr, raw_ostream &Out,
tools/clang/lib/StaticAnalyzer/Core/CallEvent.cpp
   71   const Expr *E = getOriginExpr();
  200   const Expr *E = getOriginExpr();
  342   if (const Expr *E = getOriginExpr()) {
  416   const Expr *ArgE = getArgExpr(Index);
  423   const Expr *ArgE = getArgExpr(Index);
  430   const Expr *E = getOriginExpr();
  440   if (const Expr *E = getOriginExpr()) {
  694     const Expr *Ex = getCXXThisExpr()->ignoreParenBaseCasts();
  713   const Expr *Base = getCXXThisExpr();
  827 const Expr *CXXMemberCall::getCXXThisExpr() const {
  843 const Expr *CXXMemberOperatorCall::getCXXThisExpr() const {
  848   const Expr *Callee = getOriginExpr()->getCallee();
  982   if (const Expr *RecE = getOriginExpr()->getInstanceReceiver())
 1025 static const Expr *
 1027   const Expr *Syntactic = POE->getSyntacticForm();
 1045       const Expr *Syntactic = getSyntacticFromForPseudoObjectExpr(POE);
 1087     const Expr *Syntactic = getSyntacticFromForPseudoObjectExpr(POE);
 1171   const Expr* InstRec = ME->getInstanceReceiver();
tools/clang/lib/StaticAnalyzer/Core/CheckerContext.cpp
   22   const Expr *Callee = CE->getCallee();
  123 bool CheckerContext::isGreaterOrEqual(const Expr *E, unsigned long long Val) {
  128 bool CheckerContext::isNegative(const Expr *E) {
tools/clang/lib/StaticAnalyzer/Core/CheckerHelpers.cpp
   79 std::pair<const clang::VarDecl *, const clang::Expr *>
   82   const Expr *RHS = nullptr;
tools/clang/lib/StaticAnalyzer/Core/Environment.cpp
   37 static const Expr *ignoreTransparentExprs(const Expr *E) {
   37 static const Expr *ignoreTransparentExprs(const Expr *E) {
   65   if (const auto *E = dyn_cast<Expr>(S))
   65   if (const auto *E = dyn_cast<Expr>(S))
  113     return svalBuilder.getConstantVal(cast<Expr>(S)).getValue();
  117     if (const Expr *RE = RS->getRetValue())
tools/clang/lib/StaticAnalyzer/Core/ExplodedGraph.cpp
   50 bool ExplodedGraph::isInterestingLValueExpr(const Expr *Ex) {
  124   const Expr *Ex = dyn_cast<Expr>(progPoint.castAs<PostStmt>().getStmt());
  124   const Expr *Ex = dyn_cast<Expr>(progPoint.castAs<PostStmt>().getStmt());
tools/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
  311     const Expr *InitWithAdjustments, const Expr *Result,
  311     const Expr *InitWithAdjustments, const Expr *Result,
  361   SmallVector<const Expr *, 2> CommaLHSs;
  364   const Expr *Init = InitWithAdjustments->skipRValueSubobjectAdjustments(
  676   if (!isa<Expr>(S))
  686   return !PM.isConsumedExpr(cast<Expr>(S));
  819   const Expr *Init = BMI->getInit()->IgnoreImplicit();
 1207     case Expr::ObjCIndirectCopyRestoreExprClass:
 1314     case Expr::MSDependentExistsStmtClass:
 1336     case Expr::ConstantExprClass:
 1419       const Expr *ArgE;
 1443                                                 cast<Expr>(S),
 1444                                                 cast<Expr>(S));
 1455     case Expr::ObjCArrayLiteralClass:
 1456     case Expr::ObjCDictionaryLiteralClass:
 1457     case Expr::ObjCBoxedExprClass: {
 1466       const auto *Ex = cast<Expr>(S);
 1466       const auto *Ex = cast<Expr>(S);
 1553         evalEagerlyAssumeBinOpBifurcation(Dst, Tmp, cast<Expr>(S));
 1707     case Expr::MaterializeTemporaryExprClass: {
 1800       if (const auto *LastExpr =
 1801               dyn_cast<Expr>(*SE->getSubStmt()->body_rbegin())) {
 1829       if (const Expr *Result = PE->getResultExpr()) {
 1995   const auto *Ex = dyn_cast<Expr>(Condition);
 1995   const auto *Ex = dyn_cast<Expr>(Condition);
 2056   if (const auto *Ex = dyn_cast<Expr>(Condition))
 2056   if (const auto *Ex = dyn_cast<Expr>(Condition))
 2107   if (const auto *Ex = dyn_cast<Expr>(Condition))
 2107   if (const auto *Ex = dyn_cast<Expr>(Condition))
 2132       if (const auto *Ex = dyn_cast<Expr>(Condition)) {
 2132       if (const auto *Ex = dyn_cast<Expr>(Condition)) {
 2340   const Expr *CondE = builder.getCondition();
 2370     if (const Expr *E = Case->getRHS())
 2406   const Expr *CondExpr = SS->getCond()->IgnoreParenImpCasts();
 2419 void ExprEngine::VisitCommonDeclRefExpr(const Expr *Ex, const NamedDecl *D,
 2513   const Expr *Base = A->getBase()->IgnoreParens();
 2514   const Expr *Idx  = A->getIdx()->IgnoreParens();
 2582       Expr *BaseExpr = M->getBase();
 2658       const Expr *SubExpr = AE->getSubExprs()[SI];
 2816 void ExprEngine::evalStore(ExplodedNodeSet &Dst, const Expr *AssignE,
 2817                              const Expr *LocationE,
 2823   const Expr *StoreE = AssignE ? AssignE : LocationE;
 2840                           const Expr *NodeEx,
 2841                           const Expr *BoundEx,
 2925                                                    const Expr *Ex) {
 2976   for (const Expr *O : A->outputs()) {
tools/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp
   29     SVal Symbol, SVal Other, Expr* Expression, SValBuilder &svalBuilder,
   44   Expr *LHS = B->getLHS()->IgnoreParens();
   45   Expr *RHS = B->getRHS()->IgnoreParens();
  229       const Expr *copyExpr = nullptr;
  260     ProgramStateRef state, const Expr* Ex, const LocationContext* LCtx,
  301 void ExprEngine::VisitCast(const CastExpr *CastE, const Expr *Ex,
  557   const Expr *Init = CL->getInitializer();
  598     if (const Expr *InitEx = VD->getInit()) {
  714     const Expr *RHS = cast<Expr>(Elem.getStmt());
  714     const Expr *RHS = cast<Expr>(Elem.getStmt());
  757       SVal V = state->getSVal(cast<Expr>(*it), LCtx);
  781 void ExprEngine::VisitGuardedExpr(const Expr *Ex,
  782                                   const Expr *L,
  783                                   const Expr *R,
  819       const Expr *ValEx = cast<Expr>(CS->getStmt());
  819       const Expr *ValEx = cast<Expr>(CS->getStmt());
  849   Expr::EvalResult Result;
  917   const Expr *Ex = U->getSubExpr()->IgnoreParens();
  944       const Expr *Ex = U->getSubExpr()->IgnoreParens();
  962       const Expr *Ex = U->getSubExpr()->IgnoreParens();
  978       const Expr *Ex = U->getSubExpr()->IgnoreParens();
 1007       const Expr *Ex = U->getSubExpr()->IgnoreParens();
 1065   const Expr *Ex = U->getSubExpr()->IgnoreParens();
tools/clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp
   30   const Expr *tempExpr = ME->GetTemporaryExpr()->IgnoreParens();
   82   const Expr *CallExpr = Call.getOriginExpr();
  113     const Expr *E, ProgramStateRef State, const LocationContext *LCtx,
  206             cast<Expr>(SFC->getCallSite()), State, CallerLCtx,
  222         const Expr *RetE = RCC->getReturnStmt()->getRetValue();
  319       const Expr *E = ACC->getCallLikeExpr();
  635     if (const Expr *E = dyn_cast_or_null<Expr>(S)) {
  635     if (const Expr *E = dyn_cast_or_null<Expr>(S)) {
  837   if (const Expr *Init = CNE->getInitializer()) {
  911       Expr *InitExpr = *i;
  918       Expr *SizeExpr = FieldForCapture->getCapturedVLAType()->getSizeExpr();
tools/clang/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp
  237           if (const Expr *Ex = dyn_cast<Expr>(CE)) {
  237           if (const Expr *Ex = dyn_cast<Expr>(CE)) {
  449   const Expr *CallE = Call.getOriginExpr();
  526   const Expr *E = Call.getOriginExpr();
  559   const Expr *E = Call.getOriginExpr();
  603   const Expr *E = Call.getOriginExpr();
 1018   const Expr *E = Call->getOriginExpr();
tools/clang/lib/StaticAnalyzer/Core/LoopWidening.cpp
   28 static const Expr *getLoopCondition(const Stmt *LoopStmt) {
tools/clang/lib/StaticAnalyzer/Core/MemRegion.cpp
  266                                  const Expr *Ex, unsigned cnt,
  387                                         Expr const *Ex,
  967 MemRegionManager::getCXXStaticTempObjectRegion(const Expr *Ex) {
 1044 MemRegionManager::getCXXTempObjectRegion(Expr const *E,
 1121 MemRegionManager::getAllocaRegion(const Expr *E, unsigned cnt,
tools/clang/lib/StaticAnalyzer/Core/ProgramState.cpp
  157                              const Expr *E, unsigned Count,
  174                              const Expr *E, unsigned Count,
  187                                     const Expr *E, unsigned Count,
tools/clang/lib/StaticAnalyzer/Core/RegionStore.cpp
  419                                            const Expr *Ex,
  427                              const Expr *E, unsigned Count,
  996   const Expr *Ex;
 1007                           const Expr *ex, unsigned count,
 1281                                            const Expr *Ex,
 1337                                      const Expr *Ex, unsigned Count,
 1711       if (const Expr *Init = VD->getAnyInitializer()) {
 1729             if (const Expr *ElemInit = InitList->getInit(i))
 1789     if (const Expr *Init = FD->getInClassInitializer())
 1804       if (const Expr *Init = VD->getAnyInitializer())
 1807             if (const Expr *FieldInit = InitList->getInit(Index))
 2002     if (const Expr *Init = VD->getAnyInitializer()) {
 2023       if (const Expr *Init = VD->getAnyInitializer())
tools/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
  136                                                    const Expr *Ex,
  154                                                    const Expr *expr,
  191 SValBuilder::getConjuredHeapSymbolVal(const Expr *E,
  206                                               const Expr *expr, QualType type,
  285 Optional<SVal> SValBuilder::getConstantVal(const Expr *E) {
  346       const Expr *SE = CE->getSubExpr();
  364     Expr::EvalResult Result;
  369       if (E->isNullPointerConstant(Ctx, Expr::NPC_ValueDependentIsNotNull))
tools/clang/lib/Tooling/ASTDiff/ASTDiff.cpp
  240     if (auto *E = dyn_cast_or_null<Expr>(S))
  240     if (auto *E = dyn_cast_or_null<Expr>(S))
tools/clang/lib/Tooling/Refactoring/Extract/Extract.cpp
   30 bool isSimpleExpression(const Expr *E) {
   81     if (isSimpleExpression(dyn_cast<Expr>(Code[0])))
  119   bool IsExpr = Code.size() == 1 && isa<Expr>(Code[0]);
  122     ReturnType = cast<Expr>(Code[0])->getType();
tools/clang/lib/Tooling/Refactoring/Extract/SourceExtraction.cpp
   85   if (isa<Expr>(S))
tools/clang/lib/Tooling/Transformer/RangeSelector.cpp
  134     return Node->get<Stmt>() != nullptr && Node->get<Expr>() == nullptr
tools/clang/lib/Tooling/Transformer/SourceCodeBuilders.cpp
   20 const Expr *tooling::reallyIgnoreImplicit(const Expr &E) {
   20 const Expr *tooling::reallyIgnoreImplicit(const Expr &E) {
   21   const Expr *Expr = E.IgnoreImplicit();
   30 bool tooling::mayEverNeedParens(const Expr &E) {
   31   const Expr *Expr = reallyIgnoreImplicit(E);
   50 bool tooling::needParensAfterUnaryOperator(const Expr &E) {
   51   const Expr *Expr = reallyIgnoreImplicit(E);
   63 llvm::Optional<std::string> tooling::buildParens(const Expr &E,
   74 tooling::buildDereference(const Expr &E, const ASTContext &Context) {
   94 llvm::Optional<std::string> tooling::buildAddressOf(const Expr &E,
  115 llvm::Optional<std::string> tooling::buildDot(const Expr &E,
  120       const Expr *SubExpr = Op->getSubExpr()->IgnoreParenImpCasts();
  139 llvm::Optional<std::string> tooling::buildArrow(const Expr &E,
  144       const Expr *SubExpr = Op->getSubExpr()->IgnoreParenImpCasts();
tools/clang/lib/Tooling/Transformer/Stencil.cpp
  167   const auto *E = Match.Nodes.getNodeAs<Expr>(Data.Id);
  167   const auto *E = Match.Nodes.getNodeAs<Expr>(Data.Id);
  202   const auto *E = Match.Nodes.getNodeAs<Expr>(Data.BaseId);
  202   const auto *E = Match.Nodes.getNodeAs<Expr>(Data.BaseId);
tools/clang/tools/clang-extdef-mapping/ClangExtDefMapGen.cpp
   68       if (const Expr *Init = VD->getInit())
tools/clang/tools/extra/clang-tidy/abseil/DurationConversionCastCheck.cpp
   44   const auto *Arg = Result.Nodes.getNodeAs<Expr>("arg");
   44   const auto *Arg = Result.Nodes.getNodeAs<Expr>("arg");
tools/clang/tools/extra/clang-tidy/abseil/DurationFactoryFloatCheck.cpp
   51   const Expr *Arg = MatchedCall->getArg(0)->IgnoreImpCasts();
tools/clang/tools/extra/clang-tidy/abseil/DurationFactoryScaleCheck.cpp
  147   const Expr *Arg = Call->getArg(0)->IgnoreParenImpCasts();
  168   const Expr *Remainder;
  205       const Expr *Remainder = DivBinOp->getLHS();
tools/clang/tools/extra/clang-tidy/abseil/DurationRewriter.cpp
   72                            DurationScale Scale, const Expr &Node) {
   75   if (const auto *MaybeCallArg = selectFirst<const Expr>(
   75   if (const auto *MaybeCallArg = selectFirst<const Expr>(
   91                        DurationScale Scale, const Expr &Node) {
   93   if (const auto *MaybeCallArg = selectFirst<const Expr>(
   93   if (const auto *MaybeCallArg = selectFirst<const Expr>(
  160 bool IsLiteralZero(const MatchFinder::MatchResult &Result, const Expr &Node) {
  165   if (selectFirst<const clang::Expr>(
  172   if (selectFirst<const clang::Expr>(
  187                const Expr &Node) {
  188   if (const Expr *MaybeCastArg = selectFirst<const Expr>(
  188   if (const Expr *MaybeCastArg = selectFirst<const Expr>(
  207                           const Expr &Node) {
  217                                        const Expr &Node) {
  271     const Expr *Node) {
  272   const Expr &RootNode = *Node->IgnoreParenImpCasts();
  289     const Expr *Node) {
  290   const Expr &RootNode = *Node->IgnoreParenImpCasts();
  305 bool isInMacro(const MatchFinder::MatchResult &Result, const Expr *E) {
tools/clang/tools/extra/clang-tidy/abseil/DurationRewriter.h
   40                    const Expr &Node);
   48                const Expr &Node);
   56                           const Expr &Node);
   63                            const Expr &Node);
   86     const Expr *Node);
   92     const Expr *Node);
   97                const Expr *E);
tools/clang/tools/extra/clang-tidy/abseil/DurationSubtractionCheck.cpp
   48   const Expr *LhsArg = Result.Nodes.getNodeAs<Expr>("lhs_arg");
   48   const Expr *LhsArg = Result.Nodes.getNodeAs<Expr>("lhs_arg");
tools/clang/tools/extra/clang-tidy/abseil/DurationUnnecessaryConversionCheck.cpp
   66   const auto *OuterCall = Result.Nodes.getNodeAs<Expr>("call");
   66   const auto *OuterCall = Result.Nodes.getNodeAs<Expr>("call");
   67   const auto *Arg = Result.Nodes.getNodeAs<Expr>("arg");
   67   const auto *Arg = Result.Nodes.getNodeAs<Expr>("arg");
tools/clang/tools/extra/clang-tidy/abseil/FasterStrsplitDelimiterCheck.cpp
  114   if (const auto *ByAnyChar = Result.Nodes.getNodeAs<Expr>("ByAnyChar"))
  114   if (const auto *ByAnyChar = Result.Nodes.getNodeAs<Expr>("ByAnyChar"))
tools/clang/tools/extra/clang-tidy/abseil/RedundantStrcatCallsCheck.cpp
   62 const clang::CallExpr* ProcessArgument(const Expr* Arg,
   93     for (const auto *Arg : CallExpr->arguments()) {
tools/clang/tools/extra/clang-tidy/abseil/StringFindStartswithCheck.cpp
   67   const auto *Needle = Result.Nodes.getNodeAs<Expr>("needle");
   67   const auto *Needle = Result.Nodes.getNodeAs<Expr>("needle");
   69   const Expr *Haystack = Result.Nodes.getNodeAs<CXXMemberCallExpr>("findexpr")
tools/clang/tools/extra/clang-tidy/abseil/TimeSubtractionCheck.cpp
   31                                     const Expr *Node) {
   36   return selectFirst<const Expr>(
   48                        const Expr *Node) {
   51   return selectFirst<const Expr>(
   66 static bool isReturn(const MatchFinder::MatchResult &Result, const Expr *Node) {
   69   return selectFirst<const Expr>(
   81                            const Expr *Node) {
   88 void TimeSubtractionCheck::emitDiagnostic(const Expr *Node,
tools/clang/tools/extra/clang-tidy/abseil/TimeSubtractionCheck.h
   31   void emitDiagnostic(const Expr* Node, llvm::StringRef Replacement);
tools/clang/tools/extra/clang-tidy/abseil/UpgradeDurationConversionsCheck.cpp
  122   const auto *ArgExpr = Result.Nodes.getNodeAs<Expr>("arg");
  122   const auto *ArgExpr = Result.Nodes.getNodeAs<Expr>("arg");
  125   const auto *OuterExpr = Result.Nodes.getNodeAs<Expr>("OuterExpr");
  125   const auto *OuterExpr = Result.Nodes.getNodeAs<Expr>("OuterExpr");
tools/clang/tools/extra/clang-tidy/android/CloexecCheck.cpp
   25 std::string buildFixMsgForStringFlag(const Expr *Arg, const SourceManager &SM,
   56   const auto *FlagArg = MatchedCall->getArg(ArgPos);
   86   const auto *ModeArg = MatchedCall->getArg(ArgPos);
tools/clang/tools/extra/clang-tidy/bugprone/ArgumentCommentCheck.cpp
  229 bool ArgumentCommentCheck::shouldAddComment(const Expr *Arg) const {
  247                                          llvm::ArrayRef<const Expr *> Args) {
  330   const auto *E = Result.Nodes.getNodeAs<Expr>("expr");
  330   const auto *E = Result.Nodes.getNodeAs<Expr>("expr");
tools/clang/tools/extra/clang-tidy/bugprone/ArgumentCommentCheck.h
   56                      llvm::ArrayRef<const Expr *> Args);
   58   bool shouldAddComment(const Expr *Arg) const;
tools/clang/tools/extra/clang-tidy/bugprone/AssertSideEffectCheck.cpp
   29   const Expr *E = &Node;
tools/clang/tools/extra/clang-tidy/bugprone/DanglingHandleCheck.cpp
   26            const ast_matchers::internal::Matcher<Expr> &Arg) {
tools/clang/tools/extra/clang-tidy/bugprone/DynamicStaticInitializersCheck.cpp
   20   const Expr *Init = Node.getInit();
tools/clang/tools/extra/clang-tidy/bugprone/InfiniteLoopCheck.cpp
  169   const auto *Cond = Result.Nodes.getNodeAs<Expr>("condition");
  169   const auto *Cond = Result.Nodes.getNodeAs<Expr>("condition");
tools/clang/tools/extra/clang-tidy/bugprone/MisplacedOperatorInStrlenInAllocCheck.cpp
   74   const Expr *Alloc = Result.Nodes.getNodeAs<CallExpr>("Alloc");
tools/clang/tools/extra/clang-tidy/bugprone/MisplacedWideningCastCheck.cpp
   56                                        const Expr *E) {
   67       Expr::EvalResult Result;
   71       Expr::EvalResult Result;
  190   const auto *Calc = Result.Nodes.getNodeAs<Expr>("Calc");
  190   const auto *Calc = Result.Nodes.getNodeAs<Expr>("Calc");
tools/clang/tools/extra/clang-tidy/bugprone/MultipleStatementMacroCheck.cpp
   69   const auto *Inner = Result.Nodes.getNodeAs<Expr>("inner");
   69   const auto *Inner = Result.Nodes.getNodeAs<Expr>("inner");
tools/clang/tools/extra/clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp
   44 static const Expr *getDestCapacityExpr(const MatchFinder::MatchResult &Result) {
   45   if (const auto *DestMalloc = Result.Nodes.getNodeAs<Expr>(DestMallocExprName))
   45   if (const auto *DestMalloc = Result.Nodes.getNodeAs<Expr>(DestMallocExprName))
   62 static unsigned getLength(const Expr *E,
   67   Expr::EvalResult Length;
   73         if (const Expr *LengthInit = LengthVD->getInit())
   82       if (const Expr *StrInit = StrVD->getInit())
   96   if (const auto *DestCapacityExpr = getDestCapacityExpr(Result))
  118   if (Result.Nodes.getNodeAs<Expr>(UnknownLengthName))
  122           getLength(Result.Nodes.getNodeAs<Expr>(WrongLengthExprName), Result))
  126           getLength(Result.Nodes.getNodeAs<Expr>(LengthExprName), Result))
  131     if (const Expr *Arg = StrlenCE->getArg(0)->IgnoreImpCasts())
  139 static StringRef exprToStr(const Expr *E,
  150 static SourceLocation exprLocEnd(const Expr *E,
  169   return !Result.Nodes.getNodeAs<Expr>(UnknownDestName);
  178       exprToStr(Result.Nodes.getNodeAs<Expr>(LengthExprName), Result).trim();
  221   if (Result.Nodes.getNodeAs<Expr>(UnknownLengthName))
  228   int SrcLength = getLength(Result.Nodes.getNodeAs<Expr>(SrcExprName), Result);
  233   if (const auto *LengthExpr = Result.Nodes.getNodeAs<Expr>(LengthExprName))
  233   if (const auto *LengthExpr = Result.Nodes.getNodeAs<Expr>(LengthExprName))
  248   if (Result.Nodes.getNodeAs<Expr>(UnknownLengthName))
  261   const Expr *DestCapacityExpr = getDestCapacityExpr(Result);
  280     return !getLength(Result.Nodes.getNodeAs<Expr>(SrcExprName), Result);
  290 static void lengthExprHandle(const Expr *LengthExpr,
  327     const Expr *LhsExpr = BO->getLHS()->IgnoreImpCasts();
  328     const Expr *RhsExpr = BO->getRHS()->IgnoreImpCasts();
  367   const auto *LengthExpr = Result.Nodes.getNodeAs<Expr>(LengthExprName);
  367   const auto *LengthExpr = Result.Nodes.getNodeAs<Expr>(LengthExprName);
  382   const auto *Dest = Result.Nodes.getNodeAs<Expr>(DestExprName);
  382   const auto *Dest = Result.Nodes.getNodeAs<Expr>(DestExprName);
  401     if (const Expr *CapacityExpr = getDestCapacityExpr(Result))
  414   const Expr *ArgToRemove = FunctionExpr->getArg(ArgPos);
  415   const Expr *LHSArg = FunctionExpr->getArg(ArgPos - 1);
  484        exprToStr(Result.Nodes.getNodeAs<Expr>(DestExprName), Result) + "[" +
  485        exprToStr(Result.Nodes.getNodeAs<Expr>(LengthExprName), Result) +
  517   const Expr *SimpleNode = &Node;
  923   if (const auto *CastExpr = Result.Nodes.getNodeAs<Expr>(CastExprName)) {
  923   if (const auto *CastExpr = Result.Nodes.getNodeAs<Expr>(CastExprName)) {
  962   const Expr *FirstArgExpr = FunctionExpr->getArg(0)->IgnoreImpCasts();
  963   const Expr *SecondArgExpr = FunctionExpr->getArg(1)->IgnoreImpCasts();
  967     const Expr *LengthExprArg = StrlenExpr->getArg(0);
  975         getLength(Result.Nodes.getNodeAs<Expr>(SrcExprName), Result);
tools/clang/tools/extra/clang-tidy/bugprone/ParentVirtualCallCheck.cpp
   73 static std::string getExprAsString(const clang::Expr &E,
tools/clang/tools/extra/clang-tidy/bugprone/SizeofExpressionCheck.cpp
   31   const Expr *E = Node.IgnoreParenImpCasts();
  257   if (const auto *E = Result.Nodes.getNodeAs<Expr>("sizeof-constant")) {
  257   if (const auto *E = Result.Nodes.getNodeAs<Expr>("sizeof-constant")) {
  260   } else if (const auto *E =
  261                  Result.Nodes.getNodeAs<Expr>("sizeof-integer-call")) {
  264   } else if (const auto *E = Result.Nodes.getNodeAs<Expr>("sizeof-this")) {
  264   } else if (const auto *E = Result.Nodes.getNodeAs<Expr>("sizeof-this")) {
  267   } else if (const auto *E = Result.Nodes.getNodeAs<Expr>("sizeof-charp")) {
  267   } else if (const auto *E = Result.Nodes.getNodeAs<Expr>("sizeof-charp")) {
  270   } else if (const auto *E =
  271                  Result.Nodes.getNodeAs<Expr>("sizeof-pointer-to-aggregate")) {
  274   } else if (const auto *E =
  275                  Result.Nodes.getNodeAs<Expr>("sizeof-compare-constant")) {
  278   } else if (const auto *E =
  279                  Result.Nodes.getNodeAs<Expr>("sizeof-comma-expr")) {
  281   } else if (const auto *E =
  282                  Result.Nodes.getNodeAs<Expr>("sizeof-divide-expr")) {
  312   } else if (const auto *E =
  313                  Result.Nodes.getNodeAs<Expr>("sizeof-sizeof-expr")) {
  315   } else if (const auto *E =
  316                  Result.Nodes.getNodeAs<Expr>("sizeof-multiply-sizeof")) {
  318   } else if (const auto *E =
  319                  Result.Nodes.getNodeAs<Expr>("sizeof-in-ptr-arithmetic-mul")) {
  328   } else if (const auto *E =
  329                  Result.Nodes.getNodeAs<Expr>("sizeof-in-ptr-arithmetic-div")) {
tools/clang/tools/extra/clang-tidy/bugprone/StringConstructorCheck.cpp
  119   if (Result.Nodes.getNodeAs<Expr>("swapped-parameter")) {
  120     const Expr *P0 = E->getArg(0);
  121     const Expr *P1 = E->getArg(1);
  126   } else if (Result.Nodes.getNodeAs<Expr>("empty-string")) {
  128   } else if (Result.Nodes.getNodeAs<Expr>("negative-length")) {
  130   } else if (Result.Nodes.getNodeAs<Expr>("large-length")) {
  133   } else if (Result.Nodes.getNodeAs<Expr>("literal-with-length")) {
  139   } else if (const auto *Ptr = Result.Nodes.getNodeAs<Expr>("from-ptr")) {
  139   } else if (const auto *Ptr = Result.Nodes.getNodeAs<Expr>("from-ptr")) {
  140     Expr::EvalResult ConstPtr;
tools/clang/tools/extra/clang-tidy/bugprone/StringIntegerAssignmentCheck.cpp
   53   bool isLikelyCharExpression(const Expr *E) const {
   58       const auto *LHS = BinOp->getLHS()->IgnoreParenImpCasts();
   59       const auto *RHS = BinOp->getRHS()->IgnoreParenImpCasts();
   81   bool handleBinaryOp(clang::BinaryOperatorKind Opcode, const Expr *const LHS,
   82                       const Expr *const RHS) const {
  108   bool isCharConstant(const Expr *E) const {
  113   bool isCharValuedConstant(const Expr *E) const {
  116     Expr::EvalResult EvalResult;
  117     if (!E->EvaluateAsInt(EvalResult, Ctx, Expr::SE_AllowSideEffects))
  123   bool isCharTyped(const Expr *E) const {
  134   const auto *Argument = Result.Nodes.getNodeAs<Expr>("expr");
  134   const auto *Argument = Result.Nodes.getNodeAs<Expr>("expr");
tools/clang/tools/extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp
   68   const Expr *InitExpr = EnumConst->getInitExpr();
   81   if (const Expr *InitExpr = EnumConst->getInitExpr()) {
  155     const Expr *NodeExpr, const EnumDecl *EnumDec) {
  202   if (const auto *EnumExpr = Result.Nodes.getNodeAs<Expr>("enumExpr")) {
  202   if (const auto *EnumExpr = Result.Nodes.getNodeAs<Expr>("enumExpr")) {
  209   const auto *LhsExpr = Result.Nodes.getNodeAs<Expr>("lhsExpr");
  209   const auto *LhsExpr = Result.Nodes.getNodeAs<Expr>("lhsExpr");
  212   const auto *RhsExpr = Result.Nodes.getNodeAs<Expr>("rhsExpr");
  212   const auto *RhsExpr = Result.Nodes.getNodeAs<Expr>("rhsExpr");
tools/clang/tools/extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.h
   30   void checkSuspiciousBitmaskUsage(const Expr*, const EnumDecl*);
tools/clang/tools/extra/clang-tidy/bugprone/SuspiciousMemsetUsageCheck.cpp
   79     Expr::EvalResult EVResult;
   95     const Expr *FillChar = Call->getArg(1);
   96     const Expr *ByteCount = Call->getArg(2);
   99     Expr::EvalResult Value2;
  108     Expr::EvalResult EVResult;
tools/clang/tools/extra/clang-tidy/bugprone/SuspiciousMissingCommaCheck.cpp
  110     const Expr *Child = InitializerList->getInit(i)->IgnoreImpCasts();
tools/clang/tools/extra/clang-tidy/bugprone/SuspiciousStringCompareCheck.cpp
  184   if (const auto *E = Result.Nodes.getNodeAs<Expr>("logical-not-comparison")) {
  184   if (const auto *E = Result.Nodes.getNodeAs<Expr>("logical-not-comparison")) {
tools/clang/tools/extra/clang-tidy/bugprone/SwappedArgumentsCheck.cpp
   28 static const Expr *ignoreNoOpCasts(const Expr *E) {
   28 static const Expr *ignoreNoOpCasts(const Expr *E) {
   53   llvm::SmallPtrSet<const Expr *, 4> UsedArgs;
   55     const Expr *LHS = Call->getArg(I - 1);
   56     const Expr *RHS = Call->getArg(I);
   78     const Expr *LHSFrom = ignoreNoOpCasts(LHSCast->getSubExpr());
   79     const Expr *RHSFrom = ignoreNoOpCasts(RHSCast->getSubExpr());
tools/clang/tools/extra/clang-tidy/bugprone/ThrowKeywordMissingCheck.cpp
   41   const auto *TemporaryExpr =
   42       Result.Nodes.getNodeAs<Expr>("temporary-exception-not-thrown");
tools/clang/tools/extra/clang-tidy/bugprone/TooSmallLoopVariableCheck.cpp
  111                                             const Expr *UpperBound,
  116     const Expr *RHSE = BinOperator->getRHS()->IgnoreParenImpCasts();
  117     const Expr *LHSE = BinOperator->getLHS()->IgnoreParenImpCasts();
  148   const auto *LoopVar = Result.Nodes.getNodeAs<Expr>(LoopVarName);
  148   const auto *LoopVar = Result.Nodes.getNodeAs<Expr>(LoopVarName);
  149   const auto *UpperBound =
  150       Result.Nodes.getNodeAs<Expr>(LoopUpperBoundName)->IgnoreParenImpCasts();
  151   const auto *LoopIncrement =
  152       Result.Nodes.getNodeAs<Expr>(LoopIncrementName)->IgnoreParenImpCasts();
tools/clang/tools/extra/clang-tidy/bugprone/UnusedRaiiCheck.cpp
   50   const auto *E = Result.Nodes.getNodeAs<Expr>("expr");
   50   const auto *E = Result.Nodes.getNodeAs<Expr>("expr");
tools/clang/tools/extra/clang-tidy/bugprone/UseAfterMoveCheck.cpp
   45   bool find(Stmt *FunctionBody, const Expr *MovingCall,
   49   bool findInternal(const CFGBlock *Block, const Expr *MovingCall,
   86 bool UseAfterMoveFinder::find(Stmt *FunctionBody, const Expr *MovingCall,
  117                                       const Expr *MovingCall,
  355 static void emitDiagnostic(const Expr *MovingCall, const DeclRefExpr *MoveArg,
  411   const auto *MovingCall = Result.Nodes.getNodeAs<Expr>("moving-call");
  411   const auto *MovingCall = Result.Nodes.getNodeAs<Expr>("moving-call");
tools/clang/tools/extra/clang-tidy/cert/ProperlySeededRandomGeneratorCheck.cpp
  103   Expr::EvalResult EVResult;
tools/clang/tools/extra/clang-tidy/cert/StrToNumCheck.cpp
  204     if (const Expr *Arg = Call->getArg(Idx)->IgnoreParenImpCasts()) {
tools/clang/tools/extra/clang-tidy/cert/ThrownExceptionTypeCheck.cpp
   33   const auto *E = Result.Nodes.getNodeAs<Expr>("expr");
   33   const auto *E = Result.Nodes.getNodeAs<Expr>("expr");
tools/clang/tools/extra/clang-tidy/cppcoreguidelines/NarrowingConversionsCheck.cpp
   64 static const BuiltinType *getBuiltinType(const Expr &E) {
   68 static QualType getUnqualifiedType(const Expr &E) {
   72 static APValue getConstantExprValue(const ASTContext &Ctx, const Expr &E) {
   83                                         const Expr &E, llvm::APSInt &Value) {
   92                                          const Expr &E, llvm::APFloat &Value) {
  179                                                const Expr &Lhs,
  180                                                const Expr &Rhs) {
  186     SourceLocation SourceLoc, const Expr &Lhs, const Expr &Rhs) {
  186     SourceLocation SourceLoc, const Expr &Lhs, const Expr &Rhs) {
  193     SourceLocation SourceLoc, const Expr &Lhs, const Expr &Rhs,
  193     SourceLocation SourceLoc, const Expr &Lhs, const Expr &Rhs,
  202     SourceLocation SourceLoc, const Expr &Lhs, const Expr &Rhs,
  202     SourceLocation SourceLoc, const Expr &Lhs, const Expr &Rhs,
  211                                                    const Expr &Lhs,
  212                                                    const Expr &Rhs) {
  218                                                  const Expr &Lhs,
  219                                                  const Expr &Rhs) {
  225     const ASTContext &Context, SourceLocation SourceLoc, const Expr &Lhs,
  226     const Expr &Rhs) {
  237                                                    const Expr &Lhs,
  238                                                    const Expr &Rhs) {
  260     const ASTContext &Context, SourceLocation SourceLoc, const Expr &Lhs,
  261     const Expr &Rhs) {
  270     const ASTContext &Context, SourceLocation SourceLoc, const Expr &Lhs,
  271     const Expr &Rhs) {
  285     const ASTContext &Context, SourceLocation SourceLoc, const Expr &Lhs,
  286     const Expr &Rhs) {
  310     const ASTContext &Context, SourceLocation SourceLoc, const Expr &Lhs,
  311     const Expr &Rhs) {
  316     const ASTContext &Context, SourceLocation SourceLoc, const Expr &Lhs,
  317     const Expr &Rhs) {
  327                                                    const Expr &Lhs,
  328                                                    const Expr &Rhs) {
  353                                                      const Expr &Lhs,
  354                                                      const Expr &Rhs) {
  378     const ASTContext &Context, const Expr &Lhs, const Expr &Rhs) {
  378     const ASTContext &Context, const Expr &Lhs, const Expr &Rhs) {
  396   const Expr &Lhs = Cast;
  397   const Expr &Rhs = *Cast.getSubExpr();
  427   const Expr &Lhs = *Op.getLHS();
  428   const Expr &Rhs = *Op.getRHS();
tools/clang/tools/extra/clang-tidy/cppcoreguidelines/NarrowingConversionsCheck.h
   32   void diagNarrowType(SourceLocation SourceLoc, const Expr &Lhs,
   33                       const Expr &Rhs);
   35   void diagNarrowTypeToSignedInt(SourceLocation SourceLoc, const Expr &Lhs,
   36                                  const Expr &Rhs);
   38   void diagNarrowIntegerConstant(SourceLocation SourceLoc, const Expr &Lhs,
   39                                  const Expr &Rhs, const llvm::APSInt &Value);
   42                                             const Expr &Lhs, const Expr &Rhs,
   42                                             const Expr &Lhs, const Expr &Rhs,
   46   void diagNarrowConstant(SourceLocation SourceLoc, const Expr &Lhs,
   47                           const Expr &Rhs);
   49   void diagConstantCast(SourceLocation SourceLoc, const Expr &Lhs,
   50                         const Expr &Rhs);
   53                                 SourceLocation SourceLoc, const Expr &Lhs,
   54                                 const Expr &Rhs);
   57                           const Expr &Lhs, const Expr &Rhs);
   57                           const Expr &Lhs, const Expr &Rhs);
   60                                SourceLocation SourceLoc, const Expr &Lhs,
   61                                const Expr &Rhs);
   64                                 SourceLocation SourceLoc, const Expr &Lhs,
   65                                 const Expr &Rhs);
   68                                 SourceLocation SourceLoc, const Expr &Lhs,
   69                                 const Expr &Rhs);
   72                                SourceLocation SourceLoc, const Expr &Lhs,
   73                                const Expr &Rhs);
   76                                      SourceLocation SourceLoc, const Expr &Lhs,
   77                                      const Expr &Rhs);
   80                           const Expr &Lhs, const Expr &Rhs);
   80                           const Expr &Lhs, const Expr &Rhs);
   83                             const Expr &Lhs, const Expr &Rhs);
   83                             const Expr &Lhs, const Expr &Rhs);
   85   bool handleConditionalOperator(const ASTContext &Context, const Expr &Lhs,
   86                                  const Expr &Rhs);
tools/clang/tools/extra/clang-tidy/cppcoreguidelines/OwningMemoryCheck.cpp
  236   const auto *ExpectedOwner = Nodes.getNodeAs<Expr>("expected_owner_argument");
  236   const auto *ExpectedOwner = Nodes.getNodeAs<Expr>("expected_owner_argument");
  297   const auto *BadOwnerArgument =
  298       Nodes.getNodeAs<Expr>("bad_owner_creation_argument");
tools/clang/tools/extra/clang-tidy/cppcoreguidelines/ProBoundsArrayToPointerDecayCheck.cpp
   36   const Expr *E = &Node;
   42     E = Parents[0].get<Expr>();
tools/clang/tools/extra/clang-tidy/cppcoreguidelines/ProBoundsConstantArrayIndexCheck.cpp
   68   const auto *Matched = Result.Nodes.getNodeAs<Expr>("expr");
   68   const auto *Matched = Result.Nodes.getNodeAs<Expr>("expr");
   69   const auto *IndexExpr = Result.Nodes.getNodeAs<Expr>("index");
   69   const auto *IndexExpr = Result.Nodes.getNodeAs<Expr>("index");
tools/clang/tools/extra/clang-tidy/cppcoreguidelines/ProBoundsPointerArithmeticCheck.cpp
   55   const auto *MatchedExpr = Result.Nodes.getNodeAs<Expr>("expr");
   55   const auto *MatchedExpr = Result.Nodes.getNodeAs<Expr>("expr");
tools/clang/tools/extra/clang-tidy/cppcoreguidelines/ProTypeCstyleCastCheck.cpp
   77       const Expr *SubExpr =
tools/clang/tools/extra/clang-tidy/cppcoreguidelines/ProTypeVarargCheck.cpp
   58   if (const auto *Matched = Result.Nodes.getNodeAs<Expr>("va_use")) {
   58   if (const auto *Matched = Result.Nodes.getNodeAs<Expr>("va_use")) {
tools/clang/tools/extra/clang-tidy/cppcoreguidelines/SlicingCheck.cpp
   74     const Expr &Call, const CXXRecordDecl &DerivedDecl,
  103   const auto *Call = Result.Nodes.getNodeAs<Expr>("Call");
  103   const auto *Call = Result.Nodes.getNodeAs<Expr>("Call");
tools/clang/tools/extra/clang-tidy/cppcoreguidelines/SlicingCheck.h
   35   void DiagnoseSlicedOverriddenMethods(const Expr &call,
tools/clang/tools/extra/clang-tidy/google/AvoidCStyleCastsCheck.cpp
  137     const Expr *SubExpr = CastExpr->getSubExprAsWritten()->IgnoreImpCasts();
tools/clang/tools/extra/clang-tidy/google/ExplicitMakePairCheck.cpp
   54   const Expr *Arg0 = Call->getArg(0)->IgnoreParenImpCasts();
   55   const Expr *Arg1 = Call->getArg(1)->IgnoreParenImpCasts();
tools/clang/tools/extra/clang-tidy/hicpp/SignedBitwiseCheck.cpp
   66   const auto *SignedOperand = N.getNodeAs<Expr>("signed-operand");
   66   const auto *SignedOperand = N.getNodeAs<Expr>("signed-operand");
tools/clang/tools/extra/clang-tidy/llvm/PreferIsaOrDynCastInConditionalsCheck.cpp
   98     const auto *Arg = Result.Nodes.getNodeAs<Expr>("arg");
   98     const auto *Arg = Result.Nodes.getNodeAs<Expr>("arg");
tools/clang/tools/extra/clang-tidy/llvm/TwineLocalCheck.cpp
   35     const Expr *C = VD->getInit()->IgnoreImplicit();
tools/clang/tools/extra/clang-tidy/misc/NonCopyableObjects.cpp
   57   const auto *E = Result.Nodes.getNodeAs<Expr>("expr");
   57   const auto *E = Result.Nodes.getNodeAs<Expr>("expr");
tools/clang/tools/extra/clang-tidy/misc/RedundantExpressionCheck.cpp
   58 static bool areEquivalentExpr(const Expr *Left, const Expr *Right) {
   58 static bool areEquivalentExpr(const Expr *Left, const Expr *Right) {
   70   Expr::const_child_iterator LeftIter = Left->child_begin();
   71   Expr::const_child_iterator RightIter = Right->child_begin();
   73     if (!areEquivalentExpr(dyn_cast<Expr>(*LeftIter),
   74                            dyn_cast<Expr>(*RightIter)))
  336 static ast_matchers::internal::Matcher<Expr>
  347                                         const Expr *&ConstExpr) {
  349   ConstExpr = Result.Nodes.getNodeAs<Expr>(CstId);
  356   const Expr *ConstExpr = nullptr;
  362 static ast_matchers::internal::Matcher<Expr> matchSymbolicExpr(StringRef Id) {
  371                                  StringRef Id, const Expr *&SymExpr) {
  373   if (const auto *Node = Result.Nodes.getNodeAs<Expr>(SymId)) {
  373   if (const auto *Node = Result.Nodes.getNodeAs<Expr>(SymId)) {
  382 static ast_matchers::internal::Matcher<Expr>
  402                                  const Expr *&Symbol, APSInt &Value) {
  412 static ast_matchers::internal::Matcher<Expr>
  495     const Expr *&OperandExpr, BinaryOperatorKind &Opcode, const Expr *&Symbol,
  495     const Expr *&OperandExpr, BinaryOperatorKind &Opcode, const Expr *&Symbol,
  496     APSInt &Value, const Expr *&ConstExpr) {
  526     if (const auto *Arg = OverloadedOperatorExpr->getArg(1)) {
  543   if (Result.Nodes.getNodeAs<Expr>(SwapId))
  545   if (Result.Nodes.getNodeAs<Expr>(NegateId))
  576                                            const Expr *&LhsConst,
  577                                            const Expr *&RhsConst,
  607 static bool areExprsFromDifferentMacros(const Expr *LhsExpr,
  608                                         const Expr *RhsExpr,
  626 static bool areExprsMacroAndNonMacro(const Expr *&LhsExpr,
  627                                      const Expr *&RhsExpr) {
  770   const Expr *LhsSymbol = nullptr, *RhsSymbol = nullptr;
  847     const Expr *LhsSymbol = nullptr;
  877     const Expr *Sym = nullptr, *ConstExpr = nullptr;
  921     const Expr *LhsExpr = nullptr, *RhsExpr = nullptr;
  922     const Expr *LhsSymbol = nullptr, *RhsSymbol = nullptr;
  923     const Expr *LhsConst = nullptr, *RhsConst = nullptr;
  983       const Expr *LhsConst = nullptr, *RhsConst = nullptr;
 1000     const Expr *TrueExpr = CondOp->getTrueExpr();
 1001     const Expr *FalseExpr = CondOp->getFalseExpr();
 1038     const auto *ShiftingConst = Result.Nodes.getNodeAs<Expr>("shift-const");
 1038     const auto *ShiftingConst = Result.Nodes.getNodeAs<Expr>("shift-const");
 1045     const auto *AndConst = Result.Nodes.getNodeAs<Expr>("and-const");
 1045     const auto *AndConst = Result.Nodes.getNodeAs<Expr>("and-const");
tools/clang/tools/extra/clang-tidy/misc/StaticAssertCheck.cpp
   84   const auto *Condition = Result.Nodes.getNodeAs<Expr>("condition");
   84   const auto *Condition = Result.Nodes.getNodeAs<Expr>("condition");
   85   const auto *IsAlwaysFalse = Result.Nodes.getNodeAs<Expr>("isAlwaysFalse");
   85   const auto *IsAlwaysFalse = Result.Nodes.getNodeAs<Expr>("isAlwaysFalse");
tools/clang/tools/extra/clang-tidy/misc/UniqueptrResetReleaseCheck.cpp
  102   const auto *Right = Result.Nodes.getNodeAs<Expr>("right");
  102   const auto *Right = Result.Nodes.getNodeAs<Expr>("right");
  103   const auto *Left = Result.Nodes.getNodeAs<Expr>("left");
  103   const auto *Left = Result.Nodes.getNodeAs<Expr>("left");
tools/clang/tools/extra/clang-tidy/misc/UnusedParametersCheck.cpp
   40                                   const T *PrevNode, const T *Node,
   40                                   const T *PrevNode, const T *Node,
   41                                   const T *NextNode) {
tools/clang/tools/extra/clang-tidy/modernize/AvoidBindCheck.cpp
   53     const Expr *E = C->getArg(I);
   56       const auto *TE = M->GetTemporaryExpr();
tools/clang/tools/extra/clang-tidy/modernize/LoopConvertCheck.cpp
  304 static const Expr *getContainerFromBeginEndCall(const Expr *Init, bool IsBegin,
  304 static const Expr *getContainerFromBeginEndCall(const Expr *Init, bool IsBegin,
  321   const Expr *SourceExpr = Member->getBase();
  334 static const Expr *findContainer(ASTContext *Context, const Expr *BeginExpr,
  334 static const Expr *findContainer(ASTContext *Context, const Expr *BeginExpr,
  335                                  const Expr *EndExpr,
  341   const Expr *BeginContainerExpr =
  346   const Expr *EndContainerExpr =
  373 static const ValueDecl *getReferencedVariable(const Expr *E) {
  383 static bool isDirectMemberExpr(const Expr *E) {
  392 static bool canBeModified(ASTContext *Context, const Expr *E) {
  436 static bool containerIsConst(const Expr *ContainerExpr, bool Dereference) {
  656                                                const Expr *ContainerExpr) {
  673                                               const Expr *ContainerExpr,
  749     LoopFixerKind FixerKind, const Expr *ContainerExpr,
  841   const auto *BoundExpr = Nodes.getNodeAs<Expr>(ConditionBoundName);
  841   const auto *BoundExpr = Nodes.getNodeAs<Expr>(ConditionBoundName);
  847   const Expr *ContainerExpr = nullptr;
tools/clang/tools/extra/clang-tidy/modernize/LoopConvertCheck.h
   45                                const Expr *ContainerExpr);
   49                               const Expr *ContainerExpr,
   60                                 const Expr *ContainerExpr,
tools/clang/tools/extra/clang-tidy/modernize/LoopConvertUtils.cpp
  168 const Expr *digThroughConstructors(const Expr *E) {
  168 const Expr *digThroughConstructors(const Expr *E) {
  187 bool areSameExpr(ASTContext *Context, const Expr *First, const Expr *Second) {
  187 bool areSameExpr(ASTContext *Context, const Expr *First, const Expr *Second) {
  198 const DeclRefExpr *getDeclRef(const Expr *E) {
  210 static bool exprReferencesVariable(const ValueDecl *Target, const Expr *E) {
  219 static const Expr *getDereferenceOperand(const Expr *E) {
  219 static const Expr *getDereferenceOperand(const Expr *E) {
  235                          const Expr *E) {
  253 static bool isIndexInSubscriptExpr(const Expr *IndexExpr,
  287 static bool isIndexInSubscriptExpr(ASTContext *Context, const Expr *IndexExpr,
  288                                    const VarDecl *IndexVar, const Expr *Obj,
  289                                    const Expr *SourceExpr, bool PermitDeref) {
  297   if (const Expr *InnerObj = getDereferenceOperand(Obj->IgnoreParenImpCasts()))
  358   const Expr *Init = VDecl->getInit()->IgnoreParenImpCasts();
  434                                   const Expr *ConditionExpr) {
  451                                                const Expr *ContainerExpr,
  452                                                const Expr *ArrayBoundExpr,
  476 void ForLoopIndexUseVisitor::addComponent(const Expr *E) {
  478   const Expr *Node = E->IgnoreParenImpCasts();
  540   const Expr *Base = Member->getBase();
  542   const Expr *ResultExpr = Member;
  690   Expr *Arr = E->getBase();
  779                                                    Expr *Init) {
tools/clang/tools/extra/clang-tidy/modernize/LoopConvertUtils.h
   49 typedef llvm::SmallVector<const clang::Expr *, 16> ComponentVector;
   91   void findExprComponents(const clang::Expr *SourceExpr) {
  228   const Expr *Expression;
  235   explicit Usage(const Expr *E)
  237   Usage(const Expr *E, UsageKind Kind, SourceRange Range)
  273 const Expr *digThroughConstructors(const Expr *E);
  273 const Expr *digThroughConstructors(const Expr *E);
  274 bool areSameExpr(ASTContext *Context, const Expr *First, const Expr *Second);
  274 bool areSameExpr(ASTContext *Context, const Expr *First, const Expr *Second);
  275 const DeclRefExpr *getDeclRef(const Expr *E);
  287                          const VarDecl *EndVar, const Expr *ContainerExpr,
  288                          const Expr *ArrayBoundExpr,
  315   const Expr *getContainerIndexed() const { return ContainerExpr; }
  347                              Expr *Init);
  356   void addComponent(const Expr *E);
  365   const Expr *ContainerExpr;
  367   const Expr *ArrayBoundExpr;
  383   llvm::SmallVector<std::pair<const Expr *, llvm::FoldingSetNodeID>, 16>
tools/clang/tools/extra/clang-tidy/modernize/MakeSmartPtrCheck.cpp
  260     for (const Expr *OldE = nullptr; E != OldE;) {
  263         if (const Expr *Parent = Node.get<ParenExpr>()) {
  281   if (const auto* ArraySize = New->getArraySize().getValueOr(nullptr)) {
  294     for (const auto *Arg : CE->arguments()) {
  306           if (const auto *TempExp = CEArg->getArg(0)) {
tools/clang/tools/extra/clang-tidy/modernize/ReplaceAutoPtrCheck.cpp
  150   if (const auto *E =
  151           Result.Nodes.getNodeAs<Expr>(AutoPtrOwnershipTransferId)) {
tools/clang/tools/extra/clang-tidy/modernize/ReplaceRandomShuffleCheck.cpp
   60   const auto *MatchedArgumentThree = Result.Nodes.getNodeAs<Expr>("randomFunc");
   60   const auto *MatchedArgumentThree = Result.Nodes.getNodeAs<Expr>("randomFunc");
tools/clang/tools/extra/clang-tidy/modernize/ShrinkToFitCheck.cpp
   58   const auto *Container = Result.Nodes.getNodeAs<Expr>("ContainerToShrink");
   58   const auto *Container = Result.Nodes.getNodeAs<Expr>("ContainerToShrink");
tools/clang/tools/extra/clang-tidy/modernize/UseAutoCheck.cpp
   72   const Expr *Init = Node.getAnyInitializer();
  338     const Expr *ExprInit = V->getInit();
  353     const Expr *E = (*Construct->arg_begin())->IgnoreParenImpCasts();
  388     llvm::function_ref<QualType(const Expr *)> GetType, StringRef Message) {
  403     const auto *Expr = V->getInit()->IgnoreParenImpCasts();
tools/clang/tools/extra/clang-tidy/modernize/UseAutoCheck.h
   28                    llvm::function_ref<QualType(const Expr *)> GetType,
tools/clang/tools/extra/clang-tidy/modernize/UseBoolLiteralsCheck.cpp
   51   const auto *Cast = Result.Nodes.getNodeAs<Expr>("cast");
   51   const auto *Cast = Result.Nodes.getNodeAs<Expr>("cast");
   57   const Expr *Expression = Cast ? Cast : Literal;
tools/clang/tools/extra/clang-tidy/modernize/UseDefaultMemberInitCheck.cpp
  108 static bool isZero(const Expr *E) {
  130 static const Expr *ignoreUnaryPlus(const Expr *E) {
  130 static const Expr *ignoreUnaryPlus(const Expr *E) {
  137 static const Expr *getInitializer(const Expr *E) {
  137 static const Expr *getInitializer(const Expr *E) {
  144 static bool sameValue(const Expr *E1, const Expr *E2) {
  144 static bool sameValue(const Expr *E1, const Expr *E2) {
tools/clang/tools/extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp
   50 internal::Matcher<Expr> accessToFieldInVar(const FieldDecl *Field,
tools/clang/tools/extra/clang-tidy/modernize/UseNullptrCheck.cpp
  202     auto* CastSubExpr = C->getSubExpr()->IgnoreParens();
  459   Expr *FirstSubExpr;
tools/clang/tools/extra/clang-tidy/mpi/BufferDerefCheck.cpp
   37   SmallVector<const Expr *, 1> BufferExprs;
   45             *Result.Context, Expr::NPC_ValueDependentIsNull) ||
   50     const Expr *ArgExpr = CE->getArg(BufferIdx);
   83                                     ArrayRef<const Expr *> BufferExprs) {
tools/clang/tools/extra/clang-tidy/mpi/BufferDerefCheck.h
   41                     ArrayRef<const Expr *> BufferExprs);
tools/clang/tools/extra/clang-tidy/mpi/TypeMismatchCheck.cpp
  255   SmallVector<const Expr *, 1> BufferExprs;
  264             *Result.Context, Expr::NPC_ValueDependentIsNull) ||
  302                                        ArrayRef<const Expr *> BufferExprs,
tools/clang/tools/extra/clang-tidy/mpi/TypeMismatchCheck.h
   42                       ArrayRef<const Expr *> BufferExprs,
tools/clang/tools/extra/clang-tidy/performance/ImplicitConversionInLoopCheck.cpp
   66   const auto *Init = Result.Nodes.getNodeAs<Expr>("init");
   66   const auto *Init = Result.Nodes.getNodeAs<Expr>("init");
   67   const auto *OperatorCall =
   68       Result.Nodes.getNodeAs<Expr>("operator-call");
   87     const Expr *OperatorCall) {
tools/clang/tools/extra/clang-tidy/performance/ImplicitConversionInLoopCheck.h
   30                     const Expr *OperatorCall);
tools/clang/tools/extra/clang-tidy/performance/InefficientAlgorithmCheck.cpp
   91     const Expr *Arg = AlgCall->getArg(3);
  114   const auto *AlgParam = Result.Nodes.getNodeAs<Expr>("AlgParam");
  114   const auto *AlgParam = Result.Nodes.getNodeAs<Expr>("AlgParam");
  115   const auto *IneffContExpr = Result.Nodes.getNodeAs<Expr>("IneffContExpr");
  115   const auto *IneffContExpr = Result.Nodes.getNodeAs<Expr>("IneffContExpr");
tools/clang/tools/extra/clang-tidy/performance/InefficientVectorOperationCheck.cpp
   65 ast_matchers::internal::Matcher<Expr> supportedContainerTypesMatcher() {
  193   const auto *LoopEndExpr = Result.Nodes.getNodeAs<Expr>(LoopEndExprName);
  193   const auto *LoopEndExpr = Result.Nodes.getNodeAs<Expr>(LoopEndExprName);
tools/clang/tools/extra/clang-tidy/performance/MoveConstArgCheck.cpp
   22   const Expr *Arg = Call->getArg(0);
   63   const auto *ReceivingExpr = Result.Nodes.getNodeAs<Expr>("receiving-expr");
   63   const auto *ReceivingExpr = Result.Nodes.getNodeAs<Expr>("receiving-expr");
   64   const Expr *Arg = CallMove->getArg(0);
tools/clang/tools/extra/clang-tidy/performance/NoexceptMoveConstructorCheck.cpp
   71       Expr *E = ProtoType->getNoexceptExpr();
tools/clang/tools/extra/clang-tidy/readability/ContainerSizeEmptyCheck.cpp
  108   const auto *Pointee = Result.Nodes.getNodeAs<Expr>("Pointee");
  108   const auto *Pointee = Result.Nodes.getNodeAs<Expr>("Pointee");
  109   const auto *E =
  112           : (Pointee ? Pointee : Result.Nodes.getNodeAs<Expr>("STLObject"));
tools/clang/tools/extra/clang-tidy/readability/ImplicitBoolConversionCheck.cpp
  108   const Expr *SubExpr = Cast->getSubExpr();
  151 StringRef getEquivalentBoolLiteralForExpr(const Expr *Expression,
  181   const Expr *SubExpr = Cast->getSubExpr();
tools/clang/tools/extra/clang-tidy/readability/MagicNumbersCheck.cpp
  111                                    const Expr &ExprResult) const {
tools/clang/tools/extra/clang-tidy/readability/MagicNumbersCheck.h
   34                   const clang::Expr &ExprResult) const;
tools/clang/tools/extra/clang-tidy/readability/MisplacedArrayIndexCheck.cpp
   38   const Expr *RHSE = ArraySubscriptE->getRHS()->IgnoreParenImpCasts();
tools/clang/tools/extra/clang-tidy/readability/NonConstParameterCheck.cpp
   65       for (const auto *Arg : CE->arguments()) {
   75           const Expr *Arg = CE->getArg(ArgNr++);
   84       for (const auto *Arg : CE->arguments()) {
  155 void NonConstParameterCheck::markCanNotBeConst(const Expr *E,
  203     for (const auto *Arg : Constr->arguments()) {
  205         markCanNotBeConst(cast<Expr>(M->getTemporary()), CanNotBeConst);
tools/clang/tools/extra/clang-tidy/readability/NonConstParameterCheck.h
   53   void markCanNotBeConst(const Expr *E, bool CanNotBeConst);
tools/clang/tools/extra/clang-tidy/readability/RedundantSmartptrGetCheck.cpp
   20 internal::Matcher<Expr> callToGet(const internal::Matcher<Decl> &OnClass) {
  134   bool IsMemberExpr = Result.Nodes.getNodeAs<Expr>("memberExpr") != nullptr;
  135   const auto *GetCall = Result.Nodes.getNodeAs<Expr>("redundant_get");
  135   const auto *GetCall = Result.Nodes.getNodeAs<Expr>("redundant_get");
  139   const auto *Smartptr = Result.Nodes.getNodeAs<Expr>("smart_pointer");
  139   const auto *Smartptr = Result.Nodes.getNodeAs<Expr>("smart_pointer");
tools/clang/tools/extra/clang-tidy/readability/RedundantStringCStrCheck.cpp
   28 bool needParensAfterUnaryOperator(const Expr &ExprNode) {
   45                   const Expr &ExprNode) {
  176   const auto *Arg = Result.Nodes.getNodeAs<Expr>("arg");
  176   const auto *Arg = Result.Nodes.getNodeAs<Expr>("arg");
tools/clang/tools/extra/clang-tidy/readability/RedundantStringInitCheck.cpp
   61   const auto *CtorExpr = Result.Nodes.getNodeAs<Expr>("expr");
   61   const auto *CtorExpr = Result.Nodes.getNodeAs<Expr>("expr");
tools/clang/tools/extra/clang-tidy/readability/SimplifyBooleanExprCheck.cpp
   75 bool needsParensAfterUnaryNegation(const Expr *E) {
  137 bool needsNullPtrComparison(const Expr *E) {
  145 bool needsZeroComparison(const Expr *E) {
  152 bool needsStaticCast(const Expr *E) {
  172                                         const Expr *E, bool Negated,
  183                                        const Expr *E, bool Negated) {
  190                                     const Expr *E, bool Negated) {
  195                                   bool Negated, const Expr *E) {
  221     const Expr *LHS = nullptr;
  222     const Expr *RHS = nullptr;
  344 bool containsBoolLiteral(const Expr *E) {
  360   const auto *LHS = Op->getLHS()->IgnoreParenImpCasts();
  361   const auto *RHS = Op->getRHS()->IgnoreParenImpCasts();
  364   const Expr *Other = nullptr;
  635           const Expr *Condition = If->getCond();
  657       getText(Result, *Result.Nodes.getNodeAs<Expr>(IfAssignVariableId));
tools/clang/tools/extra/clang-tidy/readability/StaticAccessedThroughInstanceCheck.cpp
   56   const Expr *BaseExpr = MemberExpression->getBase();
tools/clang/tools/extra/clang-tidy/readability/UniqueptrDeleteReleaseCheck.cpp
   41   const auto *PtrExpr = Result.Nodes.getNodeAs<Expr>("uptr");
   41   const auto *PtrExpr = Result.Nodes.getNodeAs<Expr>("uptr");
   42   const auto *DeleteExpr = Result.Nodes.getNodeAs<Expr>("delete");
   42   const auto *DeleteExpr = Result.Nodes.getNodeAs<Expr>("delete");
tools/clang/tools/extra/clang-tidy/readability/UppercaseLiteralSuffixCheck.cpp
  107 shouldReplaceLiteralSuffix(const Expr &Literal,
tools/clang/tools/extra/clang-tidy/utils/ASTUtils.cpp
   27 bool IsBinaryOrTernary(const Expr *E) {
   28   const Expr *E_base = E->IgnoreImpCasts();
   42 bool exprHasBitFlagWithSpelling(const Expr *Flags, const SourceManager &SM,
tools/clang/tools/extra/clang-tidy/utils/ASTUtils.h
   21 bool IsBinaryOrTernary(const Expr *E);
   26 bool exprHasBitFlagWithSpelling(const Expr *Flags, const SourceManager &SM,
tools/clang/tools/extra/clang-tidy/utils/ExceptionAnalyzer.cpp
  144     if (const auto *ThrownExpr = Throw->getSubExpr()) {
tools/clang/tools/extra/clang-tidy/utils/ExprSequence.cpp
  130       const Expr *PreviousInit = nullptr;
  133           if (const Expr *Init = TheVarDecl->getInit()) {
tools/clang/tools/extra/clangd/FindTarget.cpp
  602   bool VisitExpr(Expr *E) {
  675     if (auto *E = N.get<Expr>())
tools/clang/tools/extra/clangd/XRefs.cpp
  695     if (const Expr *Init = Var->getInit()) {
  696       Expr::EvalResult Result;
tools/clang/tools/extra/clangd/refactor/tweaks/ExtractFunction.cpp
  234   if (Child->ASTNode.get<Expr>())
tools/clang/tools/extra/clangd/refactor/tweaks/ExtractVariable.cpp
   40   const clang::Expr *getExpr() const { return Expr; }
   54   const clang::Expr *Expr;
   70 computeReferencedDecls(const clang::Expr *Expr) {
   90   Expr = Node->ASTNode.get<clang::Expr>();
  126       if (isa<clang::Expr>(Stmt))
  212         llvm::dyn_cast_or_null<BinaryOperator>(N.ASTNode.get<Expr>())) {
  220                 N.ASTNode.get<Expr>())) {
  228         const Expr *E = Child->ASTNode.get<Expr>();
  228         const Expr *E = Child->ASTNode.get<Expr>();
  257       if (SM.getFileID(Child->ASTNode.get<Expr>()->getExprLoc()) != F)
  329       llvm::dyn_cast_or_null<CallExpr>(MaybeCall->ASTNode.get<Expr>());
  332   if (CE->getCallee() != MaybeCallee.ASTNode.get<Expr>())
  339 bool childExprIsStmt(const Stmt *Outer, const Expr *Inner) {
  365   const Expr *E = N->ASTNode.get<Expr>();
  365   const Expr *E = N->ASTNode.get<Expr>();
  392                       OuterImplicit.ASTNode.get<Expr>()))
  407   const clang::Expr *SelectedExpr = N->ASTNode.get<clang::Expr>();
  407   const clang::Expr *SelectedExpr = N->ASTNode.get<clang::Expr>();
tools/clang/tools/extra/modularize/Modularize.cpp
  572                              Expr *Init) {
  763                              Expr *Init) {
tools/clang/tools/libclang/CIndex.cpp
  514     if (const Expr *E = getCursorExpr(Cursor))
  765   if (Expr *Init = D->getInitExpr())
  880         if (Expr *Initializer = Init->getInit())
  897   if (Expr *BitWidth = D->getBitWidth())
  900   if (Expr *Init = D->getInClassInitializer())
  910   if (Expr *Init = D->getInit())
  921     if (Expr *DefArg = D->getDefaultArgument())
 1475     if (Expr *E = TAL.getSourceDeclExpression())
 1480     if (Expr *E = TAL.getSourceNullPtrExpression())
 1485     if (Expr *E = TAL.getSourceExpression())
 1670   if (Expr *Size = TL.getSizeExpr())
 1757   if (Expr *E = TL.getUnderlyingExpr())
 2277   for (const auto *I : Node->varlists()) {
 2288   for (const auto *E : C->private_copies()) {
 2296   for (const auto *E : C->private_copies()) {
 2299   for (const auto *E : C->inits()) {
 2378   for (const auto *E : C->privates()) {
 2381   for (const auto *E : C->inits()) {
 2384   for (const auto *E : C->updates()) {
 2387   for (const auto *E : C->finals()) {
 2735   if (Expr *SourceExpr = E->getSourceExpr())
 2832   if (const Expr *E = D->getReductionRef())
 3707   auto *arg = callExpr->getArg(0);
 3710     auto *subExpr = I->getSubExprAsWritten();
 3796 static const ExprEvalResult* evaluateExpr(Expr *expr, CXCursor C) {
 3797   Expr::EvalResult ER;
 3947 static const Expr *evaluateDeclExpr(const Decl *D) {
 3957 static const Expr *evaluateCompoundStmtExpr(const CompoundStmt *CS) {
 3960     if (const auto *E = dyn_cast<Expr>(bodyIterator))
 3960     if (const auto *E = dyn_cast<Expr>(bodyIterator))
 3967   if (const Expr *E =
 4356     if (Expr *Src = OVE->getSourceExpr())
 4383 static SourceLocation getLocationFromExpr(const Expr *E) {
 4574     const Expr *E = getCursorExpr(C);
 6143     const Expr *E = getCursorExpr(C);
 6577       const Expr *Callee = OCE->getCallee();
 6975   const Expr *E = getCursorExpr(Cursor);
 6996     const Expr *Callee = OCE->getCallee();
 6998       const Expr *SubExpr = ICE->getSubExpr();
 7222     const Expr *E = getCursorExpr(cursor);
tools/clang/tools/libclang/CXCursor.cpp
  298     if (Expr *Src = cast<OpaqueValueExpr>(S)->getSourceExpr())
 1018 const Expr *cxcursor::getCursorExpr(CXCursor Cursor) {
 1019   return dyn_cast_or_null<Expr>(getCursorStmt(Cursor));
 1115   const Expr *E = getCursorExpr(cursor);
 1183     const Expr *E = cxcursor::getCursorExpr(C);
 1210     const Expr *E = cxcursor::getCursorExpr(C);
 1561   const Expr *E = nullptr;
 1601   const Expr *E = nullptr;
tools/clang/tools/libclang/CXCursor.h
  241 const Expr *getCursorExpr(CXCursor Cursor);
tools/clang/tools/libclang/CXIndexDataConsumer.cpp
  889                                       const Expr *E,
tools/clang/tools/libclang/CXIndexDataConsumer.h
  416                        const Expr *E = nullptr,
tools/clang/unittests/AST/ASTImporterTest.cpp
  742 const internal::VariadicDynCastAllOfMatcher<Expr, VAArgExpr> vaArgExpr;
 1011 const internal::VariadicDynCastAllOfMatcher<Expr, CXXPseudoDestructorExpr>
 2935 const internal::VariadicDynCastAllOfMatcher<Expr, DependentScopeDeclRefExpr>
tools/clang/unittests/AST/ASTTypeTraitsTest.cpp
   25   return ASTNodeKind::getFromNodeKind<T>();
tools/clang/unittests/AST/EvaluateAsRValueTest.cpp
   43     if (const clang::Expr *Init = VD->getInit()) {
   44       clang::Expr::EvalResult Result;
tools/clang/unittests/ASTMatchers/ASTMatchersTest.h
  421     if (Nodes->getNodeAs<T>(Id)) {
tools/clang/unittests/Analysis/ExprMutationAnalyzerTest.cpp
   29 using ExprMatcher = internal::Matcher<Expr>;
   56   const auto *const E = selectFirst<Expr>("expr", Results);
   56   const auto *const E = selectFirst<Expr>("expr", Results);
   65   for (const auto *E = selectFirst<Expr>("expr", Results); E != nullptr;) {
   65   for (const auto *E = selectFirst<Expr>("expr", Results); E != nullptr;) {
tools/clang/unittests/Tooling/FixItTest.cpp
   41     Expr *P0 = CE->getArg(0);
   42     Expr *P1 = CE->getArg(1);
   60     Expr *P0 = CE->getArg(0);
   61     Expr *P1 = CE->getArg(1);
   71     Expr *P0 = CE->getArg(0);
   72     Expr *P1 = CE->getArg(1);
   89     Expr *P0 = CE->getArg(0);
   95     Expr *P1 = CE->getArg(1);
  104     Expr *P0 = CE->getArg(0);
  108     Expr *P1 = CE->getArg(1);
  124     Expr *P0 = CE->getArg(0);
  133     Expr *P1 = CE->getArg(1);
  162     Expr *P0 = CE->getArg(0);
  163     Expr *P1 = CE->getArg(1);
  192     Expr *P0 = CE->getArg(0);
  193     Expr *P1 = CE->getArg(1);
  207     Expr *P0 = CE->getArg(0);
  208     Expr *P1 = CE->getArg(1);
  221     Expr *P0 = CE->getArg(0);
  222     Expr *P1 = CE->getArg(1);
tools/clang/unittests/Tooling/RangeSelectorTest.cpp
  136   const auto* E = Match.Result.Nodes.getNodeAs<Expr>(Call);
  136   const auto* E = Match.Result.Nodes.getNodeAs<Expr>(Call);
  152   const auto* E = Match.Result.Nodes.getNodeAs<Expr>(Call);
  152   const auto* E = Match.Result.Nodes.getNodeAs<Expr>(Call);
tools/clang/unittests/Tooling/SourceCodeBuildersTest.cpp
   69 static void testPredicate(bool (*Pred)(const Expr &), StringRef Snippet,
   79 static void testPredicateOnArg(bool (*Pred)(const Expr &), StringRef Snippet,
  130     llvm::Optional<std::string> (*Builder)(const Expr &, const ASTContext &),
tools/clang/unittests/Tooling/SourceCodeTest.cpp
   77     Expr *P0 = CE->getArg(0);
   78     Expr *P1 = CE->getArg(1);
   88     Expr *P0 = CE->getArg(0);
   89     Expr *P1 = CE->getArg(1);
  104     Expr *P0 = CE->getArg(0);
  105     Expr *P1 = CE->getArg(1);
tools/lldb/source/Plugins/ExpressionParser/Clang/ASTResultSynthesizer.cpp
  223   Expr *last_expr = dyn_cast<Expr>(last_stmt);
  223   Expr *last_expr = dyn_cast<Expr>(last_stmt);
tools/lldb/source/Symbol/ClangASTContext.cpp
 1479   clang::Expr *const requires_clause = nullptr; // TODO: Concepts
 1715     Expr *bit_width_expr = field->getBitWidth();
 5939               clang::Expr *bitfield_bit_size_expr = ivar_pos->getBitWidth();
 5940               clang::Expr::EvalResult result;
 5999               clang::Expr *bitfield_bit_size_expr = field->getBitWidth();
 6000               clang::Expr::EvalResult result;
 7882   clang::Expr *bit_width = nullptr;
tools/lldb/tools/lldb-instr/Instrument.cpp
  140     Expr *E = Stmt->getRetValue();
usr/include/c++/7.4.0/type_traits
  215     : public __is_void_helper<typename remove_cv<_Tp>::type>::type
  326     : public __is_integral_helper<typename remove_cv<_Tp>::type>::type
  354     : public __is_floating_point_helper<typename remove_cv<_Tp>::type>::type
  381     : public __is_pointer_helper<typename remove_cv<_Tp>::type>::type
  567     : public __is_null_pointer_helper<typename remove_cv<_Tp>::type>::type
  581     : public __or_<is_lvalue_reference<_Tp>,
  582                    is_rvalue_reference<_Tp>>::type
  588     : public __or_<is_integral<_Tp>, is_floating_point<_Tp>>::type
  588     : public __or_<is_integral<_Tp>, is_floating_point<_Tp>>::type
  601     : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>,
  601     : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>,
  602                           is_void<_Tp>>>::type
  611     : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
  611     : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
  611     : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
  612                    is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
  612                    is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
  631     : public __is_member_pointer_helper<typename remove_cv<_Tp>::type>::type
  638     : public __or_<is_object<_Tp>, is_reference<_Tp>>::type
  638     : public __or_<is_object<_Tp>, is_reference<_Tp>>::type
  777     : public __and_<is_array<_Tp>, __not_<extent<_Tp>>>
  777     : public __and_<is_array<_Tp>, __not_<extent<_Tp>>>
  798       typedef decltype(__test<_Tp>(0)) type;
  811                remove_all_extents<_Tp>::type>::type
  825     : public __is_destructible_safe<_Tp>::type
 1447     : public __and_<is_destructible<_Tp>, integral_constant<bool,
 1554     { typedef _Tp     type; };
 1558     { typedef _Tp     type; };
 1563     { typedef _Tp     type; };
 1574       remove_const<typename remove_volatile<_Tp>::type>::type     type;
 1580     { typedef _Tp const     type; };
 1629     { typedef _Tp   type; };
 1659     { typedef _Tp&&   type; };
 1955     { typedef _Tp     type; };
 1983     { typedef _Up     type; };
 1999     { typedef typename remove_reference<_Tp>::type*     type; };
 2003     : public __add_pointer_helper<_Tp>