mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-30 09:01:19 +00:00
Remove Expr.h include from ASTContext.h, NFC
ASTContext.h is popular, prune its includes. Expr.h brings in Attr.h, which is also expensive. Move BlockVarCopyInit to Expr.h to accomplish this.
This commit is contained in:
parent
6555995a6d
commit
60573ae6fe
@ -19,6 +19,7 @@
|
||||
#include "ClangTidyOptions.h"
|
||||
#include "GlobList.h"
|
||||
#include "clang/AST/ASTDiagnostic.h"
|
||||
#include "clang/AST/Attr.h"
|
||||
#include "clang/Basic/Diagnostic.h"
|
||||
#include "clang/Basic/DiagnosticOptions.h"
|
||||
#include "clang/Frontend/DiagnosticRenderer.h"
|
||||
|
@ -22,7 +22,6 @@
|
||||
#include "clang/AST/Decl.h"
|
||||
#include "clang/AST/DeclBase.h"
|
||||
#include "clang/AST/DeclarationName.h"
|
||||
#include "clang/AST/Expr.h"
|
||||
#include "clang/AST/ExternalASTSource.h"
|
||||
#include "clang/AST/NestedNameSpecifier.h"
|
||||
#include "clang/AST/PrettyPrinter.h"
|
||||
@ -124,6 +123,7 @@ class UnresolvedSetIterator;
|
||||
class UsingShadowDecl;
|
||||
class VarTemplateDecl;
|
||||
class VTableContextBase;
|
||||
struct BlockVarCopyInit;
|
||||
|
||||
namespace Builtin {
|
||||
|
||||
@ -158,22 +158,6 @@ struct TypeInfo {
|
||||
/// Holds long-lived AST nodes (such as types and decls) that can be
|
||||
/// referred to throughout the semantic analysis of a file.
|
||||
class ASTContext : public RefCountedBase<ASTContext> {
|
||||
public:
|
||||
/// Copy initialization expr of a __block variable and a boolean flag that
|
||||
/// indicates whether the expression can throw.
|
||||
struct BlockVarCopyInit {
|
||||
BlockVarCopyInit() = default;
|
||||
BlockVarCopyInit(Expr *CopyExpr, bool CanThrow)
|
||||
: ExprAndFlag(CopyExpr, CanThrow) {}
|
||||
void setExprAndFlag(Expr *CopyExpr, bool CanThrow) {
|
||||
ExprAndFlag.setPointerAndInt(CopyExpr, CanThrow);
|
||||
}
|
||||
Expr *getCopyExpr() const { return ExprAndFlag.getPointer(); }
|
||||
bool canThrow() const { return ExprAndFlag.getInt(); }
|
||||
llvm::PointerIntPair<Expr *, 1, bool> ExprAndFlag;
|
||||
};
|
||||
|
||||
private:
|
||||
friend class NestedNameSpecifier;
|
||||
|
||||
mutable SmallVector<Type *, 0> Types;
|
||||
|
@ -26,6 +26,10 @@ class Type;
|
||||
#define TYPE(DERIVED, BASE) class DERIVED##Type;
|
||||
#include "clang/AST/TypeNodes.inc"
|
||||
class CXXCtorInitializer;
|
||||
class OMPClause;
|
||||
#define OPENMP_CLAUSE(KIND, CLASSNAME) class CLASSNAME;
|
||||
#include "clang/Basic/OpenMPKinds.def"
|
||||
|
||||
|
||||
} // end namespace clang
|
||||
|
||||
|
@ -16,10 +16,7 @@
|
||||
#define LLVM_CLANG_AST_ASTTYPETRAITS_H
|
||||
|
||||
#include "clang/AST/ASTFwd.h"
|
||||
#include "clang/AST/Decl.h"
|
||||
#include "clang/AST/NestedNameSpecifier.h"
|
||||
#include "clang/AST/OpenMPClause.h"
|
||||
#include "clang/AST/Stmt.h"
|
||||
#include "clang/AST/TemplateBase.h"
|
||||
#include "clang/AST/TypeLoc.h"
|
||||
#include "clang/Basic/LLVM.h"
|
||||
|
@ -5610,6 +5610,20 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
/// Copy initialization expr of a __block variable and a boolean flag that
|
||||
/// indicates whether the expression can throw.
|
||||
struct BlockVarCopyInit {
|
||||
BlockVarCopyInit() = default;
|
||||
BlockVarCopyInit(Expr *CopyExpr, bool CanThrow)
|
||||
: ExprAndFlag(CopyExpr, CanThrow) {}
|
||||
void setExprAndFlag(Expr *CopyExpr, bool CanThrow) {
|
||||
ExprAndFlag.setPointerAndInt(CopyExpr, CanThrow);
|
||||
}
|
||||
Expr *getCopyExpr() const { return ExprAndFlag.getPointer(); }
|
||||
bool canThrow() const { return ExprAndFlag.getInt(); }
|
||||
llvm::PointerIntPair<Expr *, 1, bool> ExprAndFlag;
|
||||
};
|
||||
|
||||
/// AsTypeExpr - Clang builtin function __builtin_astype [OpenCL 6.2.4.2]
|
||||
/// This AST node provides support for reinterpreting a type to another
|
||||
/// type of the same size.
|
||||
|
@ -14,7 +14,6 @@
|
||||
#ifndef LLVM_CLANG_AST_TYPELOC_H
|
||||
#define LLVM_CLANG_AST_TYPELOC_H
|
||||
|
||||
#include "clang/AST/Attr.h"
|
||||
#include "clang/AST/Decl.h"
|
||||
#include "clang/AST/NestedNameSpecifier.h"
|
||||
#include "clang/AST/TemplateBase.h"
|
||||
@ -33,6 +32,7 @@
|
||||
|
||||
namespace clang {
|
||||
|
||||
class Attr;
|
||||
class ASTContext;
|
||||
class CXXRecordDecl;
|
||||
class Expr;
|
||||
@ -878,18 +878,7 @@ public:
|
||||
return dyn_cast_or_null<T>(getAttr());
|
||||
}
|
||||
|
||||
SourceRange getLocalSourceRange() const {
|
||||
// Note that this does *not* include the range of the attribute
|
||||
// enclosure, e.g.:
|
||||
// __attribute__((foo(bar)))
|
||||
// ^~~~~~~~~~~~~~~ ~~
|
||||
// or
|
||||
// [[foo(bar)]]
|
||||
// ^~ ~~
|
||||
// That enclosure doesn't necessarily belong to a single attribute
|
||||
// anyway.
|
||||
return getAttr() ? getAttr()->getRange() : SourceRange();
|
||||
}
|
||||
SourceRange getLocalSourceRange() const;
|
||||
|
||||
void initializeLocal(ASTContext &Context, SourceLocation loc) {
|
||||
setAttr(nullptr);
|
||||
|
@ -15,6 +15,7 @@
|
||||
#ifndef LLVM_CLANG_STATICANALYZER_CHECKERS_SVALEXPLAINER_H
|
||||
#define LLVM_CLANG_STATICANALYZER_CHECKERS_SVALEXPLAINER_H
|
||||
|
||||
#include "clang/AST/Attr.h"
|
||||
#include "clang/AST/DeclCXX.h"
|
||||
#include "clang/StaticAnalyzer/Core/PathSensitive/SValVisitor.h"
|
||||
|
||||
|
@ -2678,8 +2678,7 @@ const ObjCInterfaceDecl *ASTContext::getObjContainingInterface(
|
||||
|
||||
/// Get the copy initialization expression of VarDecl, or nullptr if
|
||||
/// none exists.
|
||||
ASTContext::BlockVarCopyInit
|
||||
ASTContext::getBlockVarCopyInit(const VarDecl*VD) const {
|
||||
BlockVarCopyInit ASTContext::getBlockVarCopyInit(const VarDecl *VD) const {
|
||||
assert(VD && "Passed null params");
|
||||
assert(VD->hasAttr<BlocksAttr>() &&
|
||||
"getBlockVarCopyInits - not __block var");
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/DeclCXX.h"
|
||||
#include "clang/AST/NestedNameSpecifier.h"
|
||||
#include "clang/AST/OpenMPClause.h"
|
||||
|
||||
namespace clang {
|
||||
namespace ast_type_traits {
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include "clang/AST/ASTDiagnostic.h"
|
||||
#include "clang/AST/ASTLambda.h"
|
||||
#include "clang/AST/ASTMutationListener.h"
|
||||
#include "clang/AST/Attr.h"
|
||||
#include "clang/AST/CanonicalType.h"
|
||||
#include "clang/AST/DeclBase.h"
|
||||
#include "clang/AST/DeclCXX.h"
|
||||
@ -55,8 +56,8 @@
|
||||
#include "llvm/ADT/Optional.h"
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/ADT/StringSwitch.h"
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
#include "llvm/ADT/StringSwitch.h"
|
||||
#include "llvm/ADT/Triple.h"
|
||||
#include "llvm/Support/Casting.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include "clang/AST/ASTLambda.h"
|
||||
#include "clang/AST/ASTMutationListener.h"
|
||||
#include "clang/AST/ASTUnresolvedSet.h"
|
||||
#include "clang/AST/Attr.h"
|
||||
#include "clang/AST/CXXInheritance.h"
|
||||
#include "clang/AST/DeclBase.h"
|
||||
#include "clang/AST/DeclTemplate.h"
|
||||
|
@ -32,8 +32,6 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include <cstring>
|
||||
#include <functional>
|
||||
#include "Interp/Context.h"
|
||||
#include "Interp/Frame.h"
|
||||
#include "Interp/State.h"
|
||||
@ -41,6 +39,7 @@
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/ASTDiagnostic.h"
|
||||
#include "clang/AST/ASTLambda.h"
|
||||
#include "clang/AST/Attr.h"
|
||||
#include "clang/AST/CXXInheritance.h"
|
||||
#include "clang/AST/CharUnits.h"
|
||||
#include "clang/AST/CurrentSourceLocExprScope.h"
|
||||
@ -57,6 +56,8 @@
|
||||
#include "llvm/ADT/SmallBitVector.h"
|
||||
#include "llvm/Support/SaveAndRestore.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include <cstring>
|
||||
#include <functional>
|
||||
|
||||
#define DEBUG_TYPE "exprconstant"
|
||||
|
||||
|
@ -12,6 +12,7 @@
|
||||
|
||||
#include "clang/AST/TypeLoc.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/Attr.h"
|
||||
#include "clang/AST/Expr.h"
|
||||
#include "clang/AST/NestedNameSpecifier.h"
|
||||
#include "clang/AST/TemplateBase.h"
|
||||
@ -467,6 +468,19 @@ void ObjCObjectTypeLoc::initializeLocal(ASTContext &Context,
|
||||
setProtocolLoc(i, Loc);
|
||||
}
|
||||
|
||||
SourceRange AttributedTypeLoc::getLocalSourceRange() const {
|
||||
// Note that this does *not* include the range of the attribute
|
||||
// enclosure, e.g.:
|
||||
// __attribute__((foo(bar)))
|
||||
// ^~~~~~~~~~~~~~~ ~~
|
||||
// or
|
||||
// [[foo(bar)]]
|
||||
// ^~ ~~
|
||||
// That enclosure doesn't necessarily belong to a single attribute
|
||||
// anyway.
|
||||
return getAttr() ? getAttr()->getRange() : SourceRange();
|
||||
}
|
||||
|
||||
void TypeOfTypeLoc::initializeLocal(ASTContext &Context,
|
||||
SourceLocation Loc) {
|
||||
TypeofLikeTypeLoc<TypeOfTypeLoc, TypeOfType, TypeOfTypeLocInfo>
|
||||
|
@ -11,7 +11,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/Analysis/CloneDetection.h"
|
||||
|
||||
#include "clang/AST/Attr.h"
|
||||
#include "clang/AST/DataCollection.h"
|
||||
#include "clang/AST/DeclTemplate.h"
|
||||
#include "llvm/Support/MD5.h"
|
||||
|
@ -7,8 +7,9 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "IndexingContext.h"
|
||||
#include "clang/Index/IndexDataConsumer.h"
|
||||
#include "clang/AST/Attr.h"
|
||||
#include "clang/AST/DeclVisitor.h"
|
||||
#include "clang/Index/IndexDataConsumer.h"
|
||||
|
||||
using namespace clang;
|
||||
using namespace index;
|
||||
|
@ -7,6 +7,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/Index/IndexSymbol.h"
|
||||
#include "clang/AST/Attr.h"
|
||||
#include "clang/AST/DeclCXX.h"
|
||||
#include "clang/AST/DeclObjC.h"
|
||||
#include "clang/AST/DeclTemplate.h"
|
||||
|
@ -7,12 +7,13 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "IndexingContext.h"
|
||||
#include "clang/Basic/SourceLocation.h"
|
||||
#include "clang/Index/IndexDataConsumer.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/DeclTemplate.h"
|
||||
#include "clang/AST/Attr.h"
|
||||
#include "clang/AST/DeclObjC.h"
|
||||
#include "clang/AST/DeclTemplate.h"
|
||||
#include "clang/Basic/SourceLocation.h"
|
||||
#include "clang/Basic/SourceManager.h"
|
||||
#include "clang/Index/IndexDataConsumer.h"
|
||||
|
||||
using namespace clang;
|
||||
using namespace index;
|
||||
|
@ -8,6 +8,7 @@
|
||||
|
||||
#include "clang/Index/USRGeneration.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/Attr.h"
|
||||
#include "clang/AST/DeclTemplate.h"
|
||||
#include "clang/AST/DeclVisitor.h"
|
||||
#include "clang/Lex/PreprocessingRecord.h"
|
||||
|
@ -11,6 +11,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "ASTCommon.h"
|
||||
#include "clang/AST/Attr.h"
|
||||
#include "clang/AST/DeclCXX.h"
|
||||
#include "clang/AST/DeclContextInternals.h"
|
||||
#include "clang/AST/DeclTemplate.h"
|
||||
@ -986,7 +987,7 @@ void ASTDeclWriter::VisitVarDecl(VarDecl *D) {
|
||||
}
|
||||
|
||||
if (D->hasAttr<BlocksAttr>() && D->getType()->getAsCXXRecordDecl()) {
|
||||
ASTContext::BlockVarCopyInit Init = Writer.Context->getBlockVarCopyInit(D);
|
||||
BlockVarCopyInit Init = Writer.Context->getBlockVarCopyInit(D);
|
||||
Record.AddStmt(Init.getCopyExpr());
|
||||
if (Init.getCopyExpr())
|
||||
Record.push_back(Init.canThrow());
|
||||
|
@ -21,6 +21,7 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/AST/Attr.h"
|
||||
#include "clang/Analysis/AnyCall.h"
|
||||
#include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h"
|
||||
#include "clang/StaticAnalyzer/Core/BugReporter/BugType.h"
|
||||
|
@ -14,8 +14,9 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h"
|
||||
#include "clang/AST/Attr.h"
|
||||
#include "clang/Basic/TargetInfo.h"
|
||||
#include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h"
|
||||
#include "clang/StaticAnalyzer/Core/BugReporter/BugType.h"
|
||||
#include "clang/StaticAnalyzer/Core/Checker.h"
|
||||
#include "clang/StaticAnalyzer/Core/CheckerManager.h"
|
||||
|
@ -12,6 +12,7 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/AST/Attr.h"
|
||||
#include "clang/AST/ExprCXX.h"
|
||||
#include "clang/Driver/DriverDiagnostic.h"
|
||||
#include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h"
|
||||
|
@ -11,8 +11,9 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h"
|
||||
#include "clang/AST/Attr.h"
|
||||
#include "clang/AST/DeclCXX.h"
|
||||
#include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h"
|
||||
#include "clang/StaticAnalyzer/Core/BugReporter/BugReporter.h"
|
||||
#include "clang/StaticAnalyzer/Core/BugReporter/BugType.h"
|
||||
#include "clang/StaticAnalyzer/Core/Checker.h"
|
||||
|
@ -14,6 +14,7 @@
|
||||
|
||||
#include "clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/Attr.h"
|
||||
#include "clang/AST/Decl.h"
|
||||
#include "clang/AST/DeclBase.h"
|
||||
#include "clang/AST/DeclCXX.h"
|
||||
@ -29,20 +30,20 @@
|
||||
#include "clang/Analysis/CFGStmtMap.h"
|
||||
#include "clang/Analysis/PathDiagnostic.h"
|
||||
#include "clang/Analysis/ProgramPoint.h"
|
||||
#include "clang/CrossTU/CrossTranslationUnit.h"
|
||||
#include "clang/Basic/IdentifierTable.h"
|
||||
#include "clang/Basic/LLVM.h"
|
||||
#include "clang/Basic/SourceLocation.h"
|
||||
#include "clang/Basic/SourceManager.h"
|
||||
#include "clang/Basic/Specifiers.h"
|
||||
#include "clang/CrossTU/CrossTranslationUnit.h"
|
||||
#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"
|
||||
#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeInfo.h"
|
||||
#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicType.h"
|
||||
#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeInfo.h"
|
||||
#include "clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h"
|
||||
#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h"
|
||||
#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState_Fwd.h"
|
||||
#include "clang/StaticAnalyzer/Core/PathSensitive/SVals.h"
|
||||
#include "clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h"
|
||||
#include "clang/StaticAnalyzer/Core/PathSensitive/SVals.h"
|
||||
#include "clang/StaticAnalyzer/Core/PathSensitive/Store.h"
|
||||
#include "llvm/ADT/ArrayRef.h"
|
||||
#include "llvm/ADT/DenseMap.h"
|
||||
|
@ -7,6 +7,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/Tooling/Refactoring/RefactoringActionRuleRequirements.h"
|
||||
#include "clang/AST/Attr.h"
|
||||
|
||||
using namespace clang;
|
||||
using namespace tooling;
|
||||
|
Loading…
Reference in New Issue
Block a user