зеркало из https://github.com/microsoft/clang-1.git
Drop the ASTContext.h include from Stmt.h and fix up transitive users.
This required moving the ctors for IntegerLiteral and FloatingLiteral out of line which shouldn't change anything as they are usually called through Create methods that are already out of line. ASTContext::Deallocate has been a nop for a long time, drop it from ASTVector and make it independent from ASTContext.h Pass the StorageAllocator directly to AccessedEntity so it doesn't need to have a definition of ASTContext around. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159718 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
3a2d0fb726
Коммит
478851c3ed
|
@ -374,7 +374,7 @@ void ASTVector<T>::grow(ASTContext &C, size_t MinSize) {
|
|||
NewCapacity = MinSize;
|
||||
|
||||
// Allocate the memory from the ASTContext.
|
||||
T *NewElts = new (C) T[NewCapacity];
|
||||
T *NewElts = new (C, llvm::alignOf<T>()) T[NewCapacity];
|
||||
|
||||
// Copy the elements over.
|
||||
if (llvm::is_class<T>::value) {
|
||||
|
@ -387,7 +387,7 @@ void ASTVector<T>::grow(ASTContext &C, size_t MinSize) {
|
|||
memcpy(NewElts, Begin, CurSize * sizeof(T));
|
||||
}
|
||||
|
||||
C.Deallocate(Begin);
|
||||
// ASTContext never frees any memory.
|
||||
Begin = NewElts;
|
||||
End = NewElts+CurSize;
|
||||
Capacity = Begin+NewCapacity;
|
||||
|
|
|
@ -41,6 +41,7 @@ class CXXFinalOverriderMap;
|
|||
class CXXIndirectPrimaryBaseSet;
|
||||
class FriendDecl;
|
||||
class LambdaExpr;
|
||||
class UsingDecl;
|
||||
|
||||
/// \brief Represents any kind of function declaration, whether it is a
|
||||
/// concrete function or a function template.
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#ifndef LLVM_CLANG_AST_DECLFRIEND_H
|
||||
#define LLVM_CLANG_AST_DECLFRIEND_H
|
||||
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/DeclCXX.h"
|
||||
#include "llvm/Support/Compiler.h"
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#ifndef LLVM_CLANG_AST_DECLTEMPLATE_H
|
||||
#define LLVM_CLANG_AST_DECLTEMPLATE_H
|
||||
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/DeclCXX.h"
|
||||
#include "clang/AST/Redeclarable.h"
|
||||
#include "clang/AST/TemplateBase.h"
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#define LLVM_CLANG_AST_EXPR_H
|
||||
|
||||
#include "clang/AST/APValue.h"
|
||||
#include "clang/AST/Decl.h"
|
||||
#include "clang/AST/Stmt.h"
|
||||
#include "clang/AST/Type.h"
|
||||
#include "clang/AST/DeclAccessPair.h"
|
||||
|
@ -1163,16 +1164,8 @@ class IntegerLiteral : public Expr, public APIntStorage {
|
|||
public:
|
||||
// type should be IntTy, LongTy, LongLongTy, UnsignedIntTy, UnsignedLongTy,
|
||||
// or UnsignedLongLongTy
|
||||
IntegerLiteral(ASTContext &C, const llvm::APInt &V,
|
||||
QualType type, SourceLocation l)
|
||||
: Expr(IntegerLiteralClass, type, VK_RValue, OK_Ordinary, false, false,
|
||||
false, false),
|
||||
Loc(l) {
|
||||
assert(type->isIntegerType() && "Illegal type in IntegerLiteral");
|
||||
assert(V.getBitWidth() == C.getIntWidth(type) &&
|
||||
"Integer type is not the correct size for constant.");
|
||||
setValue(C, V);
|
||||
}
|
||||
IntegerLiteral(ASTContext &C, const llvm::APInt &V, QualType type,
|
||||
SourceLocation l);
|
||||
|
||||
/// \brief Returns a new integer literal with value 'V' and type 'type'.
|
||||
/// \param type - either IntTy, LongTy, LongLongTy, UnsignedIntTy,
|
||||
|
@ -1250,22 +1243,10 @@ class FloatingLiteral : public Expr, private APFloatStorage {
|
|||
SourceLocation Loc;
|
||||
|
||||
FloatingLiteral(ASTContext &C, const llvm::APFloat &V, bool isexact,
|
||||
QualType Type, SourceLocation L)
|
||||
: Expr(FloatingLiteralClass, Type, VK_RValue, OK_Ordinary, false, false,
|
||||
false, false), Loc(L) {
|
||||
FloatingLiteralBits.IsIEEE =
|
||||
&C.getTargetInfo().getLongDoubleFormat() == &llvm::APFloat::IEEEquad;
|
||||
FloatingLiteralBits.IsExact = isexact;
|
||||
setValue(C, V);
|
||||
}
|
||||
QualType Type, SourceLocation L);
|
||||
|
||||
/// \brief Construct an empty floating-point literal.
|
||||
explicit FloatingLiteral(ASTContext &C, EmptyShell Empty)
|
||||
: Expr(FloatingLiteralClass, Empty) {
|
||||
FloatingLiteralBits.IsIEEE =
|
||||
&C.getTargetInfo().getLongDoubleFormat() == &llvm::APFloat::IEEEquad;
|
||||
FloatingLiteralBits.IsExact = false;
|
||||
}
|
||||
explicit FloatingLiteral(ASTContext &C, EmptyShell Empty);
|
||||
|
||||
public:
|
||||
static FloatingLiteral *Create(ASTContext &C, const llvm::APFloat &V,
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#ifndef LLVM_CLANG_AST_EXPRCXX_H
|
||||
#define LLVM_CLANG_AST_EXPRCXX_H
|
||||
|
||||
#include "clang/AST/Decl.h"
|
||||
#include "clang/AST/Expr.h"
|
||||
#include "clang/AST/UnresolvedSet.h"
|
||||
#include "clang/AST/TemplateBase.h"
|
||||
|
|
|
@ -14,10 +14,10 @@
|
|||
#ifndef LLVM_CLANG_AST_LAYOUTINFO_H
|
||||
#define LLVM_CLANG_AST_LAYOUTINFO_H
|
||||
|
||||
#include "llvm/Support/DataTypes.h"
|
||||
#include "llvm/ADT/DenseMap.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/CharUnits.h"
|
||||
#include "clang/AST/DeclCXX.h"
|
||||
#include "llvm/ADT/DenseMap.h"
|
||||
|
||||
namespace clang {
|
||||
class ASTContext;
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
#include "clang/AST/PrettyPrinter.h"
|
||||
#include "clang/AST/StmtIterator.h"
|
||||
#include "clang/AST/DeclGroup.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/Attr.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/Support/Compiler.h"
|
||||
|
@ -37,9 +36,11 @@ namespace clang {
|
|||
class ParmVarDecl;
|
||||
class QualType;
|
||||
class IdentifierInfo;
|
||||
class LabelDecl;
|
||||
class SourceManager;
|
||||
class StringLiteral;
|
||||
class SwitchStmt;
|
||||
class VarDecl;
|
||||
|
||||
//===--------------------------------------------------------------------===//
|
||||
// ExprIterator - Iterators for iterating over Stmt* arrays that contain
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "clang/Sema/CodeCompleteConsumer.h"
|
||||
#include "clang/Lex/ModuleLoader.h"
|
||||
#include "clang/Lex/PreprocessingRecord.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/Basic/LangOptions.h"
|
||||
#include "clang/Basic/SourceManager.h"
|
||||
#include "clang/Basic/FileManager.h"
|
||||
|
|
|
@ -40,17 +40,17 @@ public:
|
|||
|
||||
bool isMemberAccess() const { return IsMember; }
|
||||
|
||||
AccessedEntity(ASTContext &Context,
|
||||
AccessedEntity(PartialDiagnostic::StorageAllocator &Allocator,
|
||||
MemberNonce _,
|
||||
CXXRecordDecl *NamingClass,
|
||||
DeclAccessPair FoundDecl,
|
||||
QualType BaseObjectType)
|
||||
: Access(FoundDecl.getAccess()), IsMember(true),
|
||||
Target(FoundDecl.getDecl()), NamingClass(NamingClass),
|
||||
BaseObjectType(BaseObjectType), Diag(0, Context.getDiagAllocator()) {
|
||||
BaseObjectType(BaseObjectType), Diag(0, Allocator) {
|
||||
}
|
||||
|
||||
AccessedEntity(ASTContext &Context,
|
||||
AccessedEntity(PartialDiagnostic::StorageAllocator &Allocator,
|
||||
BaseNonce _,
|
||||
CXXRecordDecl *BaseClass,
|
||||
CXXRecordDecl *DerivedClass,
|
||||
|
@ -58,7 +58,7 @@ public:
|
|||
: Access(Access), IsMember(false),
|
||||
Target(BaseClass),
|
||||
NamingClass(DerivedClass),
|
||||
Diag(0, Context.getDiagAllocator()) {
|
||||
Diag(0, Allocator) {
|
||||
}
|
||||
|
||||
bool isQuiet() const { return Diag.getDiagID() == 0; }
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include "clang/AST/ExprObjC.h"
|
||||
#include "clang/AST/DeclarationName.h"
|
||||
#include "clang/AST/ExternalASTSource.h"
|
||||
#include "clang/AST/LambdaMangleContext.h"
|
||||
#include "clang/AST/TypeLoc.h"
|
||||
#include "clang/AST/NSAPI.h"
|
||||
#include "clang/Lex/ModuleLoader.h"
|
||||
|
@ -3302,7 +3303,7 @@ public:
|
|||
public:
|
||||
explicit ImplicitExceptionSpecification(Sema &Self)
|
||||
: Self(&Self), ComputedEST(EST_BasicNoexcept) {
|
||||
if (!Self.Context.getLangOpts().CPlusPlus0x)
|
||||
if (!Self.getLangOpts().CPlusPlus0x)
|
||||
ComputedEST = EST_DynamicNone;
|
||||
}
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#ifndef LLVM_CLANG_GR_MEMREGION_H
|
||||
#define LLVM_CLANG_GR_MEMREGION_H
|
||||
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/CharUnits.h"
|
||||
#include "clang/AST/Decl.h"
|
||||
#include "clang/AST/ExprObjC.h"
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#ifndef LLVM_CLANG_GR_SVALBUILDER
|
||||
#define LLVM_CLANG_GR_SVALBUILDER
|
||||
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/Expr.h"
|
||||
#include "clang/AST/ExprCXX.h"
|
||||
#include "clang/AST/ExprObjC.h"
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "Internals.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/Expr.h"
|
||||
#include "clang/Lex/Preprocessor.h"
|
||||
#include "clang/Basic/SourceManager.h"
|
||||
|
|
|
@ -555,6 +555,17 @@ void APNumericStorage::setIntValue(ASTContext &C, const llvm::APInt &Val) {
|
|||
VAL = 0;
|
||||
}
|
||||
|
||||
IntegerLiteral::IntegerLiteral(ASTContext &C, const llvm::APInt &V,
|
||||
QualType type, SourceLocation l)
|
||||
: Expr(IntegerLiteralClass, type, VK_RValue, OK_Ordinary, false, false,
|
||||
false, false),
|
||||
Loc(l) {
|
||||
assert(type->isIntegerType() && "Illegal type in IntegerLiteral");
|
||||
assert(V.getBitWidth() == C.getIntWidth(type) &&
|
||||
"Integer type is not the correct size for constant.");
|
||||
setValue(C, V);
|
||||
}
|
||||
|
||||
IntegerLiteral *
|
||||
IntegerLiteral::Create(ASTContext &C, const llvm::APInt &V,
|
||||
QualType type, SourceLocation l) {
|
||||
|
@ -566,6 +577,23 @@ IntegerLiteral::Create(ASTContext &C, EmptyShell Empty) {
|
|||
return new (C) IntegerLiteral(Empty);
|
||||
}
|
||||
|
||||
FloatingLiteral::FloatingLiteral(ASTContext &C, const llvm::APFloat &V,
|
||||
bool isexact, QualType Type, SourceLocation L)
|
||||
: Expr(FloatingLiteralClass, Type, VK_RValue, OK_Ordinary, false, false,
|
||||
false, false), Loc(L) {
|
||||
FloatingLiteralBits.IsIEEE =
|
||||
&C.getTargetInfo().getLongDoubleFormat() == &llvm::APFloat::IEEEquad;
|
||||
FloatingLiteralBits.IsExact = isexact;
|
||||
setValue(C, V);
|
||||
}
|
||||
|
||||
FloatingLiteral::FloatingLiteral(ASTContext &C, EmptyShell Empty)
|
||||
: Expr(FloatingLiteralClass, Empty) {
|
||||
FloatingLiteralBits.IsIEEE =
|
||||
&C.getTargetInfo().getLongDoubleFormat() == &llvm::APFloat::IEEEquad;
|
||||
FloatingLiteralBits.IsExact = false;
|
||||
}
|
||||
|
||||
FloatingLiteral *
|
||||
FloatingLiteral::Create(ASTContext &C, const llvm::APFloat &V,
|
||||
bool isexact, QualType Type, SourceLocation L) {
|
||||
|
|
|
@ -11,7 +11,9 @@
|
|||
// the Itanium C++ ABI mangling numbers for lambda expressions.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/AST/LambdaMangleContext.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/DeclCXX.h"
|
||||
|
||||
using namespace clang;
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/AST/StmtVisitor.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/DeclObjC.h"
|
||||
#include "clang/AST/DeclCXX.h"
|
||||
#include "clang/AST/PrettyPrinter.h"
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "clang/AST/TypeLocVisitor.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/Expr.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
using namespace clang;
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
#include "llvm/Support/SaveAndRestore.h"
|
||||
#include "clang/Analysis/CFG.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/DeclCXX.h"
|
||||
#include "clang/AST/StmtVisitor.h"
|
||||
#include "clang/AST/PrettyPrinter.h"
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include "clang/AST/Decl.h"
|
||||
#include "clang/AST/Expr.h"
|
||||
#include "clang/AST/Stmt.h"
|
||||
#include "llvm/ADT/SmallPtrSet.h"
|
||||
#include <deque>
|
||||
|
||||
using namespace clang;
|
||||
|
|
|
@ -30,6 +30,7 @@ namespace llvm {
|
|||
}
|
||||
|
||||
namespace clang {
|
||||
class CXXMethodDecl;
|
||||
class VarDecl;
|
||||
class ObjCInterfaceDecl;
|
||||
class ClassTemplateSpecializationDecl;
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include "clang/Edit/Rewriters.h"
|
||||
#include "clang/Edit/Commit.h"
|
||||
#include "clang/Lex/Lexer.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/ExprObjC.h"
|
||||
#include "clang/AST/ExprCXX.h"
|
||||
#include "clang/AST/NSAPI.h"
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include "clang/Sema/SemaConsumer.h"
|
||||
#include "clang/Sema/ExternalSemaSource.h"
|
||||
#include "clang/AST/ASTConsumer.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/DeclCXX.h"
|
||||
#include "clang/AST/ExternalASTSource.h"
|
||||
#include "clang/AST/Stmt.h"
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/Sema/AttributeList.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/Expr.h"
|
||||
#include "clang/Basic/IdentifierTable.h"
|
||||
#include "llvm/ADT/StringSwitch.h"
|
||||
|
|
|
@ -152,7 +152,8 @@ struct AccessTarget : public AccessedEntity {
|
|||
CXXRecordDecl *NamingClass,
|
||||
DeclAccessPair FoundDecl,
|
||||
QualType BaseObjectType)
|
||||
: AccessedEntity(Context, Member, NamingClass, FoundDecl, BaseObjectType) {
|
||||
: AccessedEntity(Context.getDiagAllocator(), Member, NamingClass,
|
||||
FoundDecl, BaseObjectType) {
|
||||
initialize();
|
||||
}
|
||||
|
||||
|
@ -161,7 +162,8 @@ struct AccessTarget : public AccessedEntity {
|
|||
CXXRecordDecl *BaseClass,
|
||||
CXXRecordDecl *DerivedClass,
|
||||
AccessSpecifier Access)
|
||||
: AccessedEntity(Context, Base, BaseClass, DerivedClass, Access) {
|
||||
: AccessedEntity(Context.getDiagAllocator(), Base, BaseClass, DerivedClass,
|
||||
Access) {
|
||||
initialize();
|
||||
}
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/ExprCXX.h"
|
||||
#include "clang/AST/ExprObjC.h"
|
||||
#include "clang/Lex/Preprocessor.h"
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/StaticAnalyzer/Core/PathSensitive/BasicValueFactory.h"
|
||||
#include "clang/StaticAnalyzer/Core/PathSensitive/Store.h"
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче