diff options
-rw-r--r-- | CodeGen/CGExprScalar.cpp | 3 | ||||
-rw-r--r-- | CodeGen/CodeGenFunction.h | 2 | ||||
-rw-r--r-- | CodeGen/CodeGenModule.cpp | 2 | ||||
-rw-r--r-- | Driver/SerializationTest.cpp | 47 | ||||
-rw-r--r-- | include/clang/Basic/IdentifierTable.h | 10 | ||||
-rw-r--r-- | win32/clangDriver/clangDriver.vcproj | 8 |
6 files changed, 46 insertions, 26 deletions
diff --git a/CodeGen/CGExprScalar.cpp b/CodeGen/CGExprScalar.cpp index a72a4e98cf..012cb69c32 100644 --- a/CodeGen/CGExprScalar.cpp +++ b/CodeGen/CGExprScalar.cpp @@ -536,7 +536,8 @@ Value *ScalarExprEmitter::EmitSizeAlignOf(QualType TypeToSize, assert(RetType->isIntegerType() && "Result type must be an integer!"); - unsigned ResultWidth = static_cast<unsigned>(CGF.getContext().getTypeSize(RetType,SourceLocation())); + uint32_t ResultWidth = static_cast<uint32_t>( + CGF.getContext().getTypeSize(RetType, SourceLocation())); return llvm::ConstantInt::get(llvm::APInt(ResultWidth, Val)); } diff --git a/CodeGen/CodeGenFunction.h b/CodeGen/CodeGenFunction.h index abb03ab9c0..3e08461efa 100644 --- a/CodeGen/CodeGenFunction.h +++ b/CodeGen/CodeGenFunction.h @@ -219,7 +219,7 @@ public: llvm::Instruction *AllocaInsertPt; const llvm::Type *LLVMIntTy; - unsigned LLVMPointerWidth; + uint32_t LLVMPointerWidth; private: /// LocalDeclMap - This keeps track of the LLVM allocas or globals for local C diff --git a/CodeGen/CodeGenModule.cpp b/CodeGen/CodeGenModule.cpp index e14b738a31..8cb138ebff 100644 --- a/CodeGen/CodeGenModule.cpp +++ b/CodeGen/CodeGenModule.cpp @@ -67,7 +67,7 @@ void CodeGenModule::EmitGlobalVar(const FileVarDecl *D) { if (D->getInit() == 0) { Init = llvm::Constant::getNullValue(GV->getType()->getElementType()); } else if (D->getType()->isIntegerType()) { - llvm::APSInt Value(static_cast<unsigned>( + llvm::APSInt Value(static_cast<uint32_t>( getContext().getTypeSize(D->getInit()->getType(), SourceLocation()))); if (D->getInit()->isIntegerConstantExpr(Value, Context)) Init = llvm::ConstantInt::get(Value); diff --git a/Driver/SerializationTest.cpp b/Driver/SerializationTest.cpp index a18bd222f8..1901591420 100644 --- a/Driver/SerializationTest.cpp +++ b/Driver/SerializationTest.cpp @@ -196,29 +196,32 @@ IntrospectionTrait<short>::Flags : public IntrospectionPrimitivesFlags {}; template<> -struct IntrospectionTrait<clang::IdentifierInfo>::Flags { - enum { isPod = false, // Cannot copy via memcpy. Must use copy-ctor. - hasUniqueInstances = true, // Two pointers with different - // addreses point to objects - // that are not equal to each other. - hasUniqueReferences = true // Two (non-temporary) pointers - // will point to distinct instances. +struct IntrospectionTrait<clang::IdentifierInfo> { + + struct Flags { + enum { isPod = false, // Cannot copy via memcpy. Must use copy-ctor. + hasUniqueInstances = true, // Two pointers with different + // addreses point to objects + // that are not equal to each other. + hasUniqueReferences = true // Two (non-temporary) pointers + // will point to distinct instances. + }; + }; + + template<typename Introspector> + struct Ops { + static void Introspect(clang::IdentifierInfo& X, Introspector& I) { + // I(X.getTokenID()); + I(X.getBuiltinID(),9); // FIXME: do 9 bit specialization. + // I(X.getObjCKeywordID()); + I(X.hasMacroDefinition()); + I(X.isExtensionToken()); + I(X.isPoisoned()); + I(X.isOtherTargetMacro()); + I(X.isCPlusPlusOperatorKeyword()); + I(X.isNonPortableBuiltin()); + } }; -}; - -template<> template<typename Introspector> -struct IntrospectionTrait<clang::IdentifierInfo>::Ops<Introspector> { - static void Introspect(clang::IdentifierInfo& X, Introspector& I) { -// I(X.getTokenID()); - I(X.getBuiltinID(),9); // FIXME: do 9 bit specialization. -// I(X.getObjCKeywordID()); - I(X.hasMacroDefinition()); - I(X.isExtensionToken()); - I(X.isPoisoned()); - I(X.isOtherTargetMacro()); - I(X.isCPlusPlusOperatorKeyword()); - I(X.isNonPortableBuiltin()); - } }; template<> template<> diff --git a/include/clang/Basic/IdentifierTable.h b/include/clang/Basic/IdentifierTable.h index 25a6b94e72..e94d50519f 100644 --- a/include/clang/Basic/IdentifierTable.h +++ b/include/clang/Basic/IdentifierTable.h @@ -23,7 +23,7 @@ namespace llvm { - template<typename T> class IntrospectionTrait; + template <typename T> struct IntrospectionTrait; template <typename T> struct DenseMapInfo; } @@ -140,7 +140,11 @@ public: void setFETokenInfo(void *T) { FETokenInfo = T; } // For serialization and profiling. +#if defined(_MSC_VER) && _MSC_VER <= 1400 // workaround for VC++ upto V8.0 + template<typename T> friend class /*llvm::*/IntrospectionTrait; +#else template<typename T> friend class llvm::IntrospectionTrait; +#endif }; /// IdentifierTable - This table implements an efficient mapping from strings to @@ -183,7 +187,11 @@ public: void PrintStats() const; // For serialization and profiling. +#if defined(_MSC_VER) && _MSC_VER <= 1400 // workaround for VC++ upto V8.0 + template<typename T> friend class /*llvm::*/IntrospectionTrait; +#else template<typename T> friend class llvm::IntrospectionTrait; +#endif private: void AddKeywords(const LangOptions &LangOpts); }; diff --git a/win32/clangDriver/clangDriver.vcproj b/win32/clangDriver/clangDriver.vcproj index 957d2f6a35..af35f28ae1 100644 --- a/win32/clangDriver/clangDriver.vcproj +++ b/win32/clangDriver/clangDriver.vcproj @@ -206,6 +206,14 @@ >
</File>
<File
+ RelativePath="..\..\Driver\RewriteTest.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Driver\SerializationTest.cpp"
+ >
+ </File>
+ <File
RelativePath="..\..\Driver\Targets.cpp"
>
</File>
|