forked from OSchip/llvm-project
Updated VC++ build system.
Silenced some VC++ warnings. Had to rephrase a partial specialization of the IntrospectionTrait struct in SerializationTest.cpp, please review. Added a compiler specific workaround in IdentifierTable.h. Is that the way to fix this kind of issues? llvm-svn: 43074
This commit is contained in:
parent
ec8a8d1f51
commit
7078da8e58
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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<>
|
||||
|
|
|
@ -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);
|
||||
};
|
||||
|
|
|
@ -205,6 +205,14 @@
|
|||
RelativePath="..\..\Driver\PrintPreprocessedOutput.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Driver\RewriteTest.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Driver\SerializationTest.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Driver\Targets.cpp"
|
||||
>
|
||||
|
|
Loading…
Reference in New Issue