Skip to content

Commit

Permalink
Drop the ASTContext.h include from Stmt.h and fix up transitive users.
Browse files Browse the repository at this point in the history
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
  • Loading branch information
d0k committed Jul 4, 2012
1 parent 3a2d0fb commit 478851c
Show file tree
Hide file tree
Showing 27 changed files with 69 additions and 36 deletions.
4 changes: 2 additions & 2 deletions include/clang/AST/ASTVector.h
Expand Up @@ -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) {
Expand All @@ -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;
Expand Down
1 change: 1 addition & 0 deletions include/clang/AST/DeclCXX.h
Expand Up @@ -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.
Expand Down
1 change: 1 addition & 0 deletions include/clang/AST/DeclFriend.h
Expand Up @@ -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"

Expand Down
1 change: 1 addition & 0 deletions include/clang/AST/DeclTemplate.h
Expand Up @@ -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"
Expand Down
29 changes: 5 additions & 24 deletions include/clang/AST/Expr.h
Expand Up @@ -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"
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down
1 change: 1 addition & 0 deletions include/clang/AST/ExprCXX.h
Expand Up @@ -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"
Expand Down
4 changes: 2 additions & 2 deletions include/clang/AST/RecordLayout.h
Expand Up @@ -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;
Expand Down
3 changes: 2 additions & 1 deletion include/clang/AST/Stmt.h
Expand Up @@ -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"
Expand All @@ -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
Expand Down
1 change: 1 addition & 0 deletions include/clang/Frontend/ASTUnit.h
Expand Up @@ -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"
Expand Down
8 changes: 4 additions & 4 deletions include/clang/Sema/DelayedDiagnostic.h
Expand Up @@ -40,25 +40,25 @@ class AccessedEntity {

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,
AccessSpecifier Access)
: Access(Access), IsMember(false),
Target(BaseClass),
NamingClass(DerivedClass),
Diag(0, Context.getDiagAllocator()) {
Diag(0, Allocator) {
}

bool isQuiet() const { return Diag.getDiagID() == 0; }
Expand Down
3 changes: 2 additions & 1 deletion include/clang/Sema/Sema.h
Expand Up @@ -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"
Expand Down Expand Up @@ -3302,7 +3303,7 @@ class Sema {
public:
explicit ImplicitExceptionSpecification(Sema &Self)
: Self(&Self), ComputedEST(EST_BasicNoexcept) {
if (!Self.Context.getLangOpts().CPlusPlus0x)
if (!Self.getLangOpts().CPlusPlus0x)
ComputedEST = EST_DynamicNone;
}

Expand Down
Expand Up @@ -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"
Expand Down
Expand Up @@ -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"
Expand Down
1 change: 1 addition & 0 deletions lib/ARCMigrate/TransformActions.cpp
Expand Up @@ -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"
Expand Down
28 changes: 28 additions & 0 deletions lib/AST/Expr.cpp
Expand Up @@ -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) {
Expand All @@ -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) {
Expand Down
2 changes: 2 additions & 0 deletions lib/AST/LambdaMangleContext.cpp
Expand Up @@ -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;
Expand Down
1 change: 1 addition & 0 deletions lib/AST/StmtDumper.cpp
Expand Up @@ -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"
Expand Down
1 change: 1 addition & 0 deletions lib/AST/TypeLoc.cpp
Expand Up @@ -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;
Expand Down
1 change: 1 addition & 0 deletions lib/Analysis/CFG.cpp
Expand Up @@ -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"
Expand Down
1 change: 1 addition & 0 deletions lib/Analysis/PseudoConstantAnalysis.cpp
Expand Up @@ -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;
Expand Down
1 change: 1 addition & 0 deletions lib/CodeGen/CGDebugInfo.h
Expand Up @@ -30,6 +30,7 @@ namespace llvm {
}

namespace clang {
class CXXMethodDecl;
class VarDecl;
class ObjCInterfaceDecl;
class ClassTemplateSpecializationDecl;
Expand Down
1 change: 1 addition & 0 deletions lib/Edit/RewriteObjCFoundationAPI.cpp
Expand Up @@ -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"
Expand Down
1 change: 1 addition & 0 deletions lib/Parse/ParseAST.cpp
Expand Up @@ -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"
Expand Down
1 change: 1 addition & 0 deletions lib/Sema/AttributeList.cpp
Expand Up @@ -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"
Expand Down
6 changes: 4 additions & 2 deletions lib/Sema/SemaAccess.cpp
Expand Up @@ -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();
}

Expand All @@ -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();
}

Expand Down
1 change: 1 addition & 0 deletions lib/Sema/SemaFixItUtils.cpp
Expand Up @@ -11,6 +11,7 @@
//
//===----------------------------------------------------------------------===//

#include "clang/AST/ASTContext.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/ExprObjC.h"
#include "clang/Lex/Preprocessor.h"
Expand Down
1 change: 1 addition & 0 deletions lib/StaticAnalyzer/Core/BasicValueFactory.cpp
Expand Up @@ -13,6 +13,7 @@
//
//===----------------------------------------------------------------------===//

#include "clang/AST/ASTContext.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/BasicValueFactory.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/Store.h"

Expand Down

0 comments on commit 478851c

Please sign in to comment.