|
clang
3.8.0
|
Retains information about a function, method, or block that is currently being parsed. More...
#include <ScopeInfo.h>
Classes | |
| class | WeakObjectProfileTy |
| Represents a simple identification of a weak object. More... | |
| class | WeakUseTy |
| Represents a single use of a weak object. More... | |
Public Types | |
| typedef SmallVector< WeakUseTy, 4 > | WeakUseVector |
| Used to collect uses of a particular weak object in a function body. More... | |
| typedef llvm::SmallDenseMap < WeakObjectProfileTy, WeakUseVector, 8, WeakObjectProfileTy::DenseMapInfo > | WeakObjectUseMap |
| Used to collect all uses of weak objects in a function body. More... | |
Public Member Functions | |
| template<typename ExprT > | |
| void | recordUseOfWeak (const ExprT *E, bool IsRead=true) |
| Record that a weak object was accessed. More... | |
| void | recordUseOfWeak (const ObjCMessageExpr *Msg, const ObjCPropertyDecl *Prop) |
| void | markSafeWeakUse (const Expr *E) |
| Record that a given expression is a "safe" access of a weak object (e.g. More... | |
| const WeakObjectUseMap & | getWeakObjectUses () const |
| void | setHasBranchIntoScope () |
| void | setHasBranchProtectedScope () |
| void | setHasIndirectGoto () |
| void | setHasDroppedStmt () |
| void | setHasCXXTry (SourceLocation TryLoc) |
| void | setHasSEHTry (SourceLocation TryLoc) |
| bool | NeedsScopeChecking () const |
| FunctionScopeInfo (DiagnosticsEngine &Diag) | |
| virtual | ~FunctionScopeInfo () |
| void | Clear () |
| Clear out the information in this function scope, making it suitable for reuse. More... | |
Public Attributes | |
| ScopeKind | Kind: 3 |
| What kind of scope we are describing. More... | |
| bool | HasBranchProtectedScope: 1 |
| Whether this function contains a VLA, @try, try, C++ initializer, or anything else that can't be jumped past. More... | |
| bool | HasBranchIntoScope: 1 |
| Whether this function contains any switches or direct gotos. More... | |
| bool | HasIndirectGoto: 1 |
| Whether this function contains any indirect gotos. More... | |
| bool | HasDroppedStmt: 1 |
| Whether a statement was dropped because it was invalid. More... | |
| bool | ObjCShouldCallSuper: 1 |
A flag that is set when parsing a method that must call super's implementation, such as -dealloc, -finalize, or any method marked with attribute((objc_requires_super)). More... | |
| bool | ObjCIsDesignatedInit: 1 |
| True when this is a method marked as a designated initializer. More... | |
| bool | ObjCWarnForNoDesignatedInitChain: 1 |
| This starts true for a method marked as designated initializer and will be set to false if there is an invocation to a designated initializer of the super class. More... | |
| bool | ObjCIsSecondaryInit: 1 |
| True when this is an initializer method not marked as a designated initializer within a class that has at least one initializer marked as a designated initializer. More... | |
| bool | ObjCWarnForNoInitDelegation: 1 |
| This starts true for a secondary initializer method and will be set to false if there is an invocation of an initializer on 'self'. More... | |
| SourceLocation | FirstReturnLoc |
| First 'return' statement in the current function. More... | |
| SourceLocation | FirstCXXTryLoc |
| First C++ 'try' statement in the current function. More... | |
| SourceLocation | FirstSEHTryLoc |
| First SEH '__try' statement in the current function. More... | |
| DiagnosticErrorTrap | ErrorTrap |
| Used to determine if errors occurred in this function or block. More... | |
| SmallVector< SwitchStmt *, 8 > | SwitchStack |
| SwitchStack - This is the current set of active switch statements in the block. More... | |
| SmallVector< ReturnStmt *, 4 > | Returns |
| The list of return statements that occur within the function or block, if there is any chance of applying the named return value optimization, or if we need to infer a return type. More... | |
| VarDecl * | CoroutinePromise |
| The promise object for this coroutine, if any. More... | |
| SmallVector< Stmt *, 4 > | CoroutineStmts |
| The list of coroutine control flow constructs (co_await, co_yield, co_return) that occur within the function or block. More... | |
| SmallVector< CompoundScopeInfo, 4 > | CompoundScopes |
| The stack of currently active compound stamement scopes in the function. More... | |
| SmallVector < PossiblyUnreachableDiag, 4 > | PossiblyUnreachableDiags |
| A list of PartialDiagnostics created but delayed within the current function scope. More... | |
| llvm::SmallPtrSet< const ParmVarDecl *, 8 > | ModifiedNonNullParams |
| A list of parameters which have the nonnull attribute and are modified in the function. More... | |
Protected Types | |
| enum | ScopeKind { SK_Function, SK_Block, SK_Lambda, SK_CapturedRegion } |
Protected Member Functions | |
| FunctionScopeInfo (const FunctionScopeInfo &)=default | |
Retains information about a function, method, or block that is currently being parsed.
Definition at line 80 of file ScopeInfo.h.
| typedef llvm::SmallDenseMap<WeakObjectProfileTy, WeakUseVector, 8, WeakObjectProfileTy::DenseMapInfo> clang::sema::FunctionScopeInfo::WeakObjectUseMap |
Used to collect all uses of weak objects in a function body.
Part of the implementation of -Wrepeated-use-of-weak.
Definition at line 297 of file ScopeInfo.h.
Used to collect uses of a particular weak object in a function body.
Part of the implementation of -Wrepeated-use-of-weak.
Definition at line 290 of file ScopeInfo.h.
|
protected |
| Enumerator | |
|---|---|
| SK_Function | |
| SK_Block | |
| SK_Lambda | |
| SK_CapturedRegion | |
Definition at line 82 of file ScopeInfo.h.
|
protecteddefault |
|
inline |
Definition at line 360 of file ScopeInfo.h.
|
virtual |
Definition at line 238 of file ScopeInfo.cpp.
| void FunctionScopeInfo::Clear | ( | ) |
Clear out the information in this function scope, making it suitable for reuse.
Definition at line 26 of file ScopeInfo.cpp.
References CoroutinePromise, CoroutineStmts, ErrorTrap, FirstCXXTryLoc, FirstReturnLoc, FirstSEHTryLoc, HasBranchIntoScope, HasBranchProtectedScope, HasDroppedStmt, HasIndirectGoto, ModifiedNonNullParams, ObjCIsDesignatedInit, ObjCIsSecondaryInit, ObjCShouldCallSuper, ObjCWarnForNoDesignatedInitChain, ObjCWarnForNoInitDelegation, PossiblyUnreachableDiags, clang::DiagnosticErrorTrap::reset(), Returns, and SwitchStack.
|
inline |
Definition at line 324 of file ScopeInfo.h.
Referenced by diagnoseRepeatedUseOfWeak().
| void FunctionScopeInfo::markSafeWeakUse | ( | const Expr * | E | ) |
Record that a given expression is a "safe" access of a weak object (e.g.
assigning it to a strong variable.)
Part of the implementation of -Wrepeated-use-of-weak.
Definition at line 160 of file ScopeInfo.cpp.
References clang::ObjCPropertyDecl::findPropertyDecl(), clang::PseudoObjectExpr::getSyntacticForm(), and clang::Expr::IgnoreParenCasts().
|
inline |
Definition at line 354 of file ScopeInfo.h.
References HasBranchIntoScope, HasBranchProtectedScope, HasDroppedStmt, and HasIndirectGoto.
|
inline |
Record that a weak object was accessed.
Part of the implementation of -Wrepeated-use-of-weak.
Definition at line 841 of file ScopeInfo.h.
Referenced by clang::Sema::BuildInstanceMessage(), and clang::Sema::recordUseOfEvaluatedWeak().
| void FunctionScopeInfo::recordUseOfWeak | ( | const ObjCMessageExpr * | Msg, |
| const ObjCPropertyDecl * | Prop | ||
| ) |
Definition at line 152 of file ScopeInfo.cpp.
References clang::ObjCMessageExpr::getInstanceReceiver(), and clang::ObjCMessageExpr::getNumArgs().
|
inline |
Definition at line 328 of file ScopeInfo.h.
References HasBranchIntoScope.
|
inline |
Definition at line 332 of file ScopeInfo.h.
References HasBranchProtectedScope.
Referenced by clang::Sema::ActOnOpenMPAtomicDirective(), clang::Sema::ActOnOpenMPCriticalDirective(), clang::Sema::ActOnOpenMPDistributeDirective(), clang::Sema::ActOnOpenMPForDirective(), clang::Sema::ActOnOpenMPForSimdDirective(), clang::Sema::ActOnOpenMPMasterDirective(), clang::Sema::ActOnOpenMPOrderedDirective(), clang::Sema::ActOnOpenMPParallelDirective(), clang::Sema::ActOnOpenMPParallelForDirective(), clang::Sema::ActOnOpenMPParallelForSimdDirective(), clang::Sema::ActOnOpenMPParallelSectionsDirective(), clang::Sema::ActOnOpenMPSectionDirective(), clang::Sema::ActOnOpenMPSectionsDirective(), clang::Sema::ActOnOpenMPSimdDirective(), clang::Sema::ActOnOpenMPSingleDirective(), clang::Sema::ActOnOpenMPTargetDataDirective(), clang::Sema::ActOnOpenMPTargetDirective(), clang::Sema::ActOnOpenMPTaskDirective(), clang::Sema::ActOnOpenMPTaskgroupDirective(), clang::Sema::ActOnOpenMPTaskLoopDirective(), clang::Sema::ActOnOpenMPTaskLoopSimdDirective(), clang::Sema::ActOnOpenMPTeamsDirective(), setHasCXXTry(), and setHasSEHTry().
|
inline |
Definition at line 344 of file ScopeInfo.h.
References FirstCXXTryLoc, and setHasBranchProtectedScope().
Referenced by clang::Sema::ActOnCXXTryBlock().
|
inline |
Definition at line 340 of file ScopeInfo.h.
References HasDroppedStmt.
|
inline |
Definition at line 336 of file ScopeInfo.h.
References HasIndirectGoto.
|
inline |
Definition at line 349 of file ScopeInfo.h.
References FirstSEHTryLoc, and setHasBranchProtectedScope().
Referenced by clang::Sema::ActOnSEHTryBlock().
| SmallVector<CompoundScopeInfo, 4> clang::sema::FunctionScopeInfo::CompoundScopes |
The stack of currently active compound stamement scopes in the function.
Definition at line 158 of file ScopeInfo.h.
Referenced by clang::Sema::PopCompoundScope(), and clang::Sema::PushCompoundScope().
| VarDecl* clang::sema::FunctionScopeInfo::CoroutinePromise |
The promise object for this coroutine, if any.
Definition at line 149 of file ScopeInfo.h.
Referenced by buildPromiseCall(), clang::Sema::CheckCompletedCoroutineBody(), and Clear().
| SmallVector<Stmt*, 4> clang::sema::FunctionScopeInfo::CoroutineStmts |
The list of coroutine control flow constructs (co_await, co_yield, co_return) that occur within the function or block.
Empty if and only if this function or block is not (yet known to be) a coroutine.
Definition at line 154 of file ScopeInfo.h.
Referenced by clang::Sema::CheckCompletedCoroutineBody(), and Clear().
| DiagnosticErrorTrap clang::sema::FunctionScopeInfo::ErrorTrap |
Used to determine if errors occurred in this function or block.
Definition at line 137 of file ScopeInfo.h.
Referenced by Clear(), and clang::Sema::hasAnyUnrecoverableErrorsInThisFunction().
| SourceLocation clang::sema::FunctionScopeInfo::FirstCXXTryLoc |
First C++ 'try' statement in the current function.
Definition at line 131 of file ScopeInfo.h.
Referenced by clang::Sema::ActOnSEHTryBlock(), Clear(), and setHasCXXTry().
| SourceLocation clang::sema::FunctionScopeInfo::FirstReturnLoc |
First 'return' statement in the current function.
Definition at line 128 of file ScopeInfo.h.
Referenced by clang::Sema::CheckCompletedCoroutineBody(), and Clear().
| SourceLocation clang::sema::FunctionScopeInfo::FirstSEHTryLoc |
First SEH '__try' statement in the current function.
Definition at line 134 of file ScopeInfo.h.
Referenced by clang::Sema::ActOnCXXTryBlock(), Clear(), and setHasSEHTry().
| bool clang::sema::FunctionScopeInfo::HasBranchIntoScope |
Whether this function contains any switches or direct gotos.
Definition at line 99 of file ScopeInfo.h.
Referenced by Clear(), NeedsScopeChecking(), and setHasBranchIntoScope().
| bool clang::sema::FunctionScopeInfo::HasBranchProtectedScope |
Whether this function contains a VLA, @try, try, C++ initializer, or anything else that can't be jumped past.
Definition at line 96 of file ScopeInfo.h.
Referenced by Clear(), NeedsScopeChecking(), and setHasBranchProtectedScope().
| bool clang::sema::FunctionScopeInfo::HasDroppedStmt |
Whether a statement was dropped because it was invalid.
Definition at line 105 of file ScopeInfo.h.
Referenced by Clear(), NeedsScopeChecking(), and setHasDroppedStmt().
| bool clang::sema::FunctionScopeInfo::HasIndirectGoto |
Whether this function contains any indirect gotos.
Definition at line 102 of file ScopeInfo.h.
Referenced by Clear(), NeedsScopeChecking(), and setHasIndirectGoto().
| ScopeKind clang::sema::FunctionScopeInfo::Kind |
What kind of scope we are describing.
Definition at line 92 of file ScopeInfo.h.
Referenced by clang::sema::CapturingScopeInfo::classof(), clang::sema::BlockScopeInfo::classof(), clang::sema::CapturedRegionScopeInfo::classof(), and clang::sema::LambdaScopeInfo::classof().
| llvm::SmallPtrSet<const ParmVarDecl*, 8> clang::sema::FunctionScopeInfo::ModifiedNonNullParams |
A list of parameters which have the nonnull attribute and are modified in the function.
Definition at line 167 of file ScopeInfo.h.
Referenced by Clear().
| bool clang::sema::FunctionScopeInfo::ObjCIsDesignatedInit |
True when this is a method marked as a designated initializer.
Definition at line 113 of file ScopeInfo.h.
Referenced by clang::Sema::ActOnStartOfObjCMethodDef(), clang::Sema::BuildInstanceMessage(), and Clear().
| bool clang::sema::FunctionScopeInfo::ObjCIsSecondaryInit |
True when this is an initializer method not marked as a designated initializer within a class that has at least one initializer marked as a designated initializer.
Definition at line 122 of file ScopeInfo.h.
Referenced by clang::Sema::ActOnStartOfObjCMethodDef(), clang::Sema::BuildInstanceMessage(), and Clear().
| bool clang::sema::FunctionScopeInfo::ObjCShouldCallSuper |
A flag that is set when parsing a method that must call super's implementation, such as -dealloc, -finalize, or any method marked with attribute((objc_requires_super)).
Definition at line 110 of file ScopeInfo.h.
Referenced by clang::Sema::ActOnStartOfObjCMethodDef(), clang::Sema::ActOnSuperMessage(), and Clear().
| bool clang::sema::FunctionScopeInfo::ObjCWarnForNoDesignatedInitChain |
This starts true for a method marked as designated initializer and will be set to false if there is an invocation to a designated initializer of the super class.
Definition at line 117 of file ScopeInfo.h.
Referenced by clang::Sema::ActOnStartOfObjCMethodDef(), clang::Sema::BuildInstanceMessage(), and Clear().
| bool clang::sema::FunctionScopeInfo::ObjCWarnForNoInitDelegation |
This starts true for a secondary initializer method and will be set to false if there is an invocation of an initializer on 'self'.
Definition at line 125 of file ScopeInfo.h.
Referenced by clang::Sema::ActOnStartOfObjCMethodDef(), clang::Sema::BuildInstanceMessage(), and Clear().
| SmallVector<PossiblyUnreachableDiag, 4> clang::sema::FunctionScopeInfo::PossiblyUnreachableDiags |
A list of PartialDiagnostics created but delayed within the current function scope.
These diagnostics are vetted for reachability prior to being emitted.
Definition at line 163 of file ScopeInfo.h.
Referenced by Clear(), flushDiagnostics(), clang::sema::AnalysisBasedWarnings::IssueWarnings(), and clang::Sema::PopFunctionScopeInfo().
| SmallVector<ReturnStmt*, 4> clang::sema::FunctionScopeInfo::Returns |
The list of return statements that occur within the function or block, if there is any chance of applying the named return value optimization, or if we need to infer a return type.
Definition at line 146 of file ScopeInfo.h.
Referenced by Clear(), clang::Sema::computeNRVO(), and clang::Sema::deduceClosureReturnType().
| SmallVector<SwitchStmt*, 8> clang::sema::FunctionScopeInfo::SwitchStack |
SwitchStack - This is the current set of active switch statements in the block.
Definition at line 141 of file ScopeInfo.h.
Referenced by AddKeywordsToConsumer(), AddOrdinaryNameResults(), Clear(), and handleFallThroughAttr().
1.8.6