aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CodeGen/CGExprScalar.cpp3
-rw-r--r--CodeGen/CodeGenFunction.h2
-rw-r--r--CodeGen/CodeGenModule.cpp2
-rw-r--r--Driver/SerializationTest.cpp47
-rw-r--r--include/clang/Basic/IdentifierTable.h10
-rw-r--r--win32/clangDriver/clangDriver.vcproj8
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>