aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/AST/ASTConsumer.cpp28
-rw-r--r--lib/AST/ASTContext.cpp1853
-rw-r--r--lib/AST/Builtins.cpp195
-rw-r--r--lib/AST/CFG.cpp1509
-rw-r--r--lib/AST/Decl.cpp652
-rw-r--r--lib/AST/DeclSerialization.cpp463
-rw-r--r--lib/AST/Expr.cpp1391
-rw-r--r--lib/AST/ExprCXX.cpp47
-rw-r--r--lib/AST/Makefile22
-rw-r--r--lib/AST/Stmt.cpp293
-rw-r--r--lib/AST/StmtDumper.cpp486
-rw-r--r--lib/AST/StmtIterator.cpp118
-rw-r--r--lib/AST/StmtPrinter.cpp854
-rw-r--r--lib/AST/StmtSerialization.cpp1001
-rw-r--r--lib/AST/StmtViz.cpp59
-rw-r--r--lib/AST/TranslationUnit.cpp225
-rw-r--r--lib/AST/Type.cpp978
-rw-r--r--lib/AST/TypeSerialization.cpp293
-rw-r--r--lib/Analysis/BasicValueFactory.cpp167
-rw-r--r--lib/Analysis/CFRefCount.cpp796
-rw-r--r--lib/Analysis/DeadStores.cpp87
-rw-r--r--lib/Analysis/ExplodedGraph.cpp227
-rw-r--r--lib/Analysis/GRBlockCounter.cpp54
-rw-r--r--lib/Analysis/GRCoreEngine.cpp444
-rw-r--r--lib/Analysis/GRExprEngine.cpp1941
-rw-r--r--lib/Analysis/GRSimpleVals.cpp462
-rw-r--r--lib/Analysis/GRSimpleVals.h71
-rw-r--r--lib/Analysis/LiveVariables.cpp246
-rw-r--r--lib/Analysis/Makefile22
-rw-r--r--lib/Analysis/ProgramPoint.cpp65
-rw-r--r--lib/Analysis/RValues.cpp389
-rw-r--r--lib/Analysis/SymbolManager.cpp124
-rw-r--r--lib/Analysis/UninitializedValues.cpp277
-rw-r--r--lib/Analysis/ValueState.cpp595
-rw-r--r--lib/Basic/Diagnostic.cpp232
-rw-r--r--lib/Basic/FileManager.cpp275
-rw-r--r--lib/Basic/IdentifierTable.cpp551
-rw-r--r--lib/Basic/LangOptions.cpp58
-rw-r--r--lib/Basic/Makefile22
-rw-r--r--lib/Basic/SourceLocation.cpp79
-rw-r--r--lib/Basic/SourceManager.cpp574
-rw-r--r--lib/Basic/TargetInfo.cpp210
-rw-r--r--lib/Basic/Targets.cpp757
-rw-r--r--lib/Basic/TokenKinds.cpp29
-rw-r--r--lib/CodeGen/CGBuiltin.cpp486
-rw-r--r--lib/CodeGen/CGDecl.cpp163
-rw-r--r--lib/CodeGen/CGExpr.cpp615
-rw-r--r--lib/CodeGen/CGExprAgg.cpp337
-rw-r--r--lib/CodeGen/CGExprComplex.cpp542
-rw-r--r--lib/CodeGen/CGExprConstant.cpp627
-rw-r--r--lib/CodeGen/CGExprScalar.cpp1185
-rw-r--r--lib/CodeGen/CGObjC.cpp25
-rw-r--r--lib/CodeGen/CGObjCGNU.cpp97
-rw-r--r--lib/CodeGen/CGObjCRuntime.h47
-rw-r--r--lib/CodeGen/CGStmt.cpp776
-rw-r--r--lib/CodeGen/CodeGenFunction.cpp182
-rw-r--r--lib/CodeGen/CodeGenFunction.h486
-rw-r--r--lib/CodeGen/CodeGenModule.cpp509
-rw-r--r--lib/CodeGen/CodeGenModule.h129
-rw-r--r--lib/CodeGen/CodeGenTypes.cpp580
-rw-r--r--lib/CodeGen/CodeGenTypes.h165
-rw-r--r--lib/CodeGen/Makefile23
-rw-r--r--lib/CodeGen/ModuleBuilder.cpp104
-rw-r--r--lib/Headers/Makefile39
-rw-r--r--lib/Headers/mmintrin.devel.h377
-rw-r--r--lib/Headers/stdbool.h38
-rw-r--r--lib/Lex/HeaderMap.cpp242
-rw-r--r--lib/Lex/HeaderSearch.cpp425
-rw-r--r--lib/Lex/Lexer.cpp1661
-rw-r--r--lib/Lex/LiteralSupport.cpp691
-rw-r--r--lib/Lex/MacroArgs.cpp225
-rw-r--r--lib/Lex/MacroArgs.h109
-rw-r--r--lib/Lex/MacroInfo.cpp70
-rw-r--r--lib/Lex/Makefile28
-rw-r--r--lib/Lex/PPDirectives.cpp1153
-rw-r--r--lib/Lex/PPExpressions.cpp639
-rw-r--r--lib/Lex/PPLexerChange.cpp401
-rw-r--r--lib/Lex/PPMacroExpansion.cpp523
-rw-r--r--lib/Lex/Pragma.cpp386
-rw-r--r--lib/Lex/Preprocessor.cpp560
-rw-r--r--lib/Lex/ScratchBuffer.cpp72
-rw-r--r--lib/Lex/TokenLexer.cpp488
-rwxr-xr-xlib/Makefile14
-rw-r--r--lib/Parse/AttributeList.cpp98
-rw-r--r--lib/Parse/DeclSpec.cpp287
-rw-r--r--lib/Parse/Makefile22
-rw-r--r--lib/Parse/MinimalAction.cpp136
-rw-r--r--lib/Parse/ParseDecl.cpp1540
-rw-r--r--lib/Parse/ParseDeclCXX.cpp119
-rw-r--r--lib/Parse/ParseExpr.cpp1081
-rw-r--r--lib/Parse/ParseExprCXX.cpp99
-rw-r--r--lib/Parse/ParseInit.cpp227
-rw-r--r--lib/Parse/ParseObjc.cpp1578
-rw-r--r--lib/Parse/ParseStmt.cpp1159
-rw-r--r--lib/Parse/Parser.cpp647
-rw-r--r--lib/Rewrite/Makefile22
-rw-r--r--lib/Rewrite/Rewriter.cpp258
-rw-r--r--lib/Sema/Makefile23
-rw-r--r--lib/Sema/ParseAST.cpp69
-rw-r--r--lib/Sema/Sema.cpp222
-rw-r--r--lib/Sema/Sema.h823
-rw-r--r--lib/Sema/SemaChecking.cpp802
-rw-r--r--lib/Sema/SemaDecl.cpp2297
-rw-r--r--lib/Sema/SemaDeclObjC.cpp927
-rw-r--r--lib/Sema/SemaExpr.cpp2286
-rw-r--r--lib/Sema/SemaExprCXX.cpp51
-rw-r--r--lib/Sema/SemaExprObjC.cpp297
-rw-r--r--lib/Sema/SemaStmt.cpp821
-rw-r--r--lib/Sema/SemaType.cpp498
-rw-r--r--lib/Sema/SemaUtil.h35
110 files changed, 50864 insertions, 0 deletions
diff --git a/lib/AST/ASTConsumer.cpp b/lib/AST/ASTConsumer.cpp
new file mode 100644
index 0000000000..b3d1271092
--- /dev/null
+++ b/lib/AST/ASTConsumer.cpp
@@ -0,0 +1,28 @@
+//===--- ASTConsumer.cpp - Abstract interface for reading ASTs --*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines the ASTConsumer class.
+//
+//===----------------------------------------------------------------------===//
+
+#include "clang/AST/ASTConsumer.h"
+#include "clang/AST/Decl.h"
+using namespace clang;
+
+ASTConsumer::~ASTConsumer() {}
+
+void ASTConsumer::HandleTopLevelDeclaration(Decl* d) {
+ if (ScopedDecl* sd = dyn_cast<ScopedDecl>(d))
+ while (sd) {
+ HandleTopLevelDecl(sd);
+ sd = sd->getNextDeclarator();
+ }
+ else
+ HandleTopLevelDecl(d);
+}
diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp
new file mode 100644
index 0000000000..db4d53aa48
--- /dev/null
+++ b/lib/AST/ASTContext.cpp
@@ -0,0 +1,1853 @@
+//===--- ASTContext.cpp - Context to hold long-lived AST nodes ------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements the ASTContext interface.
+//
+//===----------------------------------------------------------------------===//
+
+#include "clang/AST/ASTContext.h"
+#include "clang/AST/Decl.h"
+#include "clang/AST/DeclObjC.h"
+#include "clang/Basic/TargetInfo.h"
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/ADT/StringExtras.h"
+#include "llvm/Bitcode/Serialize.h"
+#include "llvm/Bitcode/Deserialize.h"
+
+using namespace clang;
+
+enum FloatingRank {
+ FloatRank, DoubleRank, LongDoubleRank
+};
+
+ASTContext::~ASTContext() {
+ // Deallocate all the types.
+ while (!Types.empty()) {
+ if (FunctionTypeProto *FT = dyn_cast<FunctionTypeProto>(Types.back())) {
+ // Destroy the object, but don't call delete. These are malloc'd.
+ FT->~FunctionTypeProto();
+ free(FT);
+ } else {
+ delete Types.back();
+ }
+ Types.pop_back();
+ }
+}
+
+void ASTContext::PrintStats() const {
+ fprintf(stderr, "*** AST Context Stats:\n");
+ fprintf(stderr, " %d types total.\n", (int)Types.size());
+ unsigned NumBuiltin = 0, NumPointer = 0, NumArray = 0, NumFunctionP = 0;
+ unsigned NumVector = 0, NumComplex = 0;
+ unsigned NumFunctionNP = 0, NumTypeName = 0, NumTagged = 0, NumReference = 0;
+
+ unsigned NumTagStruct = 0, NumTagUnion = 0, NumTagEnum = 0, NumTagClass = 0;
+ unsigned NumObjCInterfaces = 0, NumObjCQualifiedInterfaces = 0;
+ unsigned NumObjCQualifiedIds = 0;
+
+ for (unsigned i = 0, e = Types.size(); i != e; ++i) {
+ Type *T = Types[i];
+ if (isa<BuiltinType>(T))
+ ++NumBuiltin;
+ else if (isa<PointerType>(T))
+ ++NumPointer;
+ else if (isa<ReferenceType>(T))
+ ++NumReference;
+ else if (isa<ComplexType>(T))
+ ++NumComplex;
+ else if (isa<ArrayType>(T))
+ ++NumArray;
+ else if (isa<VectorType>(T))
+ ++NumVector;
+ else if (isa<FunctionTypeNoProto>(T))
+ ++NumFunctionNP;
+ else if (isa<FunctionTypeProto>(T))
+ ++NumFunctionP;
+ else if (isa<TypedefType>(T))
+ ++NumTypeName;
+ else if (TagType *TT = dyn_cast<TagType>(T)) {
+ ++NumTagged;
+ switch (TT->getDecl()->getKind()) {
+ default: assert(0 && "Unknown tagged type!");
+ case Decl::Struct: ++NumTagStruct; break;
+ case Decl::Union: ++NumTagUnion; break;
+ case Decl::Class: ++NumTagClass; break;
+ case Decl::Enum: ++NumTagEnum; break;
+ }
+ } else if (isa<ObjCInterfaceType>(T))
+ ++NumObjCInterfaces;
+ else if (isa<ObjCQualifiedInterfaceType>(T))
+ ++NumObjCQualifiedInterfaces;
+ else if (isa<ObjCQualifiedIdType>(T))
+ ++NumObjCQualifiedIds;
+ else {
+ QualType(T, 0).dump();
+ assert(0 && "Unknown type!");
+ }
+ }
+
+ fprintf(stderr, " %d builtin types\n", NumBuiltin);
+ fprintf(stderr, " %d pointer types\n", NumPointer);
+ fprintf(stderr, " %d reference types\n", NumReference);
+ fprintf(stderr, " %d complex types\n", NumComplex);
+ fprintf(stderr, " %d array types\n", NumArray);
+ fprintf(stderr, " %d vector types\n", NumVector);
+ fprintf(stderr, " %d function types with proto\n", NumFunctionP);
+ fprintf(stderr, " %d function types with no proto\n", NumFunctionNP);
+ fprintf(stderr, " %d typename (typedef) types\n", NumTypeName);
+ fprintf(stderr, " %d tagged types\n", NumTagged);
+ fprintf(stderr, " %d struct types\n", NumTagStruct);
+ fprintf(stderr, " %d union types\n", NumTagUnion);
+ fprintf(stderr, " %d class types\n", NumTagClass);
+ fprintf(stderr, " %d enum types\n", NumTagEnum);
+ fprintf(stderr, " %d interface types\n", NumObjCInterfaces);
+ fprintf(stderr, " %d protocol qualified interface types\n",
+ NumObjCQualifiedInterfaces);
+ fprintf(stderr, " %d protocol qualified id types\n",
+ NumObjCQualifiedIds);
+ fprintf(stderr, "Total bytes = %d\n", int(NumBuiltin*sizeof(BuiltinType)+
+ NumPointer*sizeof(PointerType)+NumArray*sizeof(ArrayType)+
+ NumComplex*sizeof(ComplexType)+NumVector*sizeof(VectorType)+
+ NumFunctionP*sizeof(FunctionTypeProto)+
+ NumFunctionNP*sizeof(FunctionTypeNoProto)+
+ NumTypeName*sizeof(TypedefType)+NumTagged*sizeof(TagType)));
+}
+
+
+void ASTContext::InitBuiltinType(QualType &R, BuiltinType::Kind K) {
+ Types.push_back((R = QualType(new BuiltinType(K),0)).getTypePtr());
+}
+
+void ASTContext::InitBuiltinTypes() {
+ assert(VoidTy.isNull() && "Context reinitialized?");
+
+ // C99 6.2.5p19.
+ InitBuiltinType(VoidTy, BuiltinType::Void);
+
+ // C99 6.2.5p2.
+ InitBuiltinType(BoolTy, BuiltinType::Bool);
+ // C99 6.2.5p3.
+ if (Target.isCharSigned())
+ InitBuiltinType(CharTy, BuiltinType::Char_S);
+ else
+ InitBuiltinType(CharTy, BuiltinType::Char_U);
+ // C99 6.2.5p4.
+ InitBuiltinType(SignedCharTy, BuiltinType::SChar);
+ InitBuiltinType(ShortTy, BuiltinType::Short);
+ InitBuiltinType(IntTy, BuiltinType::Int);
+ InitBuiltinType(LongTy, BuiltinType::Long);
+ InitBuiltinType(LongLongTy, BuiltinType::LongLong);
+
+ // C99 6.2.5p6.
+ InitBuiltinType(UnsignedCharTy, BuiltinType::UChar);
+ InitBuiltinType(UnsignedShortTy, BuiltinType::UShort);
+ InitBuiltinType(UnsignedIntTy, BuiltinType::UInt);
+ InitBuiltinType(UnsignedLongTy, BuiltinType::ULong);
+ InitBuiltinType(UnsignedLongLongTy, BuiltinType::ULongLong);
+
+ // C99 6.2.5p10.
+ InitBuiltinType(FloatTy, BuiltinType::Float);
+ InitBuiltinType(DoubleTy, BuiltinType::Double);
+ InitBuiltinType(LongDoubleTy, BuiltinType::LongDouble);
+
+ // C99 6.2.5p11.
+ FloatComplexTy = getComplexType(FloatTy);
+ DoubleComplexTy = getComplexType(DoubleTy);
+ LongDoubleComplexTy = getComplexType(LongDoubleTy);
+
+ BuiltinVaListType = QualType();
+ ObjCIdType = QualType();
+ IdStructType = 0;
+ ObjCClassType = QualType();
+ ClassStructType = 0;
+
+ ObjCConstantStringType = QualType();
+ <