aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2007-12-02 00:47:03 +0000
committerChris Lattner <sabre@nondot.org>2007-12-02 00:47:03 +0000
commit2efcd2f04e6151ff3144e697529cfa483ad4cb65 (patch)
treed62de4d3824a2cce2ea3a2c8facd27221baa05ca
parent2824723d6d181d2dfa56e62caabd68b0b18f0b9d (diff)
improve VC++ compatibility, patch by Cédric Venet.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44496 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--Parse/DeclSpec.cpp20
-rw-r--r--Sema/SemaDecl.cpp8
-rw-r--r--include/clang/Parse/DeclSpec.h20
3 files changed, 24 insertions, 24 deletions
diff --git a/Parse/DeclSpec.cpp b/Parse/DeclSpec.cpp
index 31338d81df..19e643d27c 100644
--- a/Parse/DeclSpec.cpp
+++ b/Parse/DeclSpec.cpp
@@ -121,7 +121,7 @@ static bool BadSpecifier(DeclSpec::TQ T, const char *&PrevSpec) {
bool DeclSpec::SetStorageClassSpec(SCS S, SourceLocation Loc,
const char *&PrevSpec) {
if (StorageClassSpec != SCS_unspecified)
- return BadSpecifier(StorageClassSpec, PrevSpec);
+ return BadSpecifier( (SCS)StorageClassSpec, PrevSpec);
StorageClassSpec = S;
StorageClassSpecLoc = Loc;
return false;
@@ -147,7 +147,7 @@ bool DeclSpec::SetTypeSpecWidth(TSW W, SourceLocation Loc,
if (TypeSpecWidth != TSW_unspecified &&
// Allow turning long -> long long.
(W != TSW_longlong || TypeSpecWidth != TSW_long))
- return BadSpecifier(TypeSpecWidth, PrevSpec);
+ return BadSpecifier( (TSW)TypeSpecWidth, PrevSpec);
TypeSpecWidth = W;
TSWLoc = Loc;
return false;
@@ -156,7 +156,7 @@ bool DeclSpec::SetTypeSpecWidth(TSW W, SourceLocation Loc,
bool DeclSpec::SetTypeSpecComplex(TSC C, SourceLocation Loc,
const char *&PrevSpec) {
if (TypeSpecComplex != TSC_unspecified)
- return BadSpecifier(TypeSpecComplex, PrevSpec);
+ return BadSpecifier( (TSC)TypeSpecComplex, PrevSpec);
TypeSpecComplex = C;
TSCLoc = Loc;
return false;
@@ -165,7 +165,7 @@ bool DeclSpec::SetTypeSpecComplex(TSC C, SourceLocation Loc,
bool DeclSpec::SetTypeSpecSign(TSS S, SourceLocation Loc,
const char *&PrevSpec) {
if (TypeSpecSign != TSS_unspecified)
- return BadSpecifier(TypeSpecSign, PrevSpec);
+ return BadSpecifier( (TSS)TypeSpecSign, PrevSpec);
TypeSpecSign = S;
TSSLoc = Loc;
return false;
@@ -174,7 +174,7 @@ bool DeclSpec::SetTypeSpecSign(TSS S, SourceLocation Loc,
bool DeclSpec::SetTypeSpecType(TST T, SourceLocation Loc,
const char *&PrevSpec, void *Rep) {
if (TypeSpecType != TST_unspecified)
- return BadSpecifier(TypeSpecType, PrevSpec);
+ return BadSpecifier( (TST)TypeSpecType, PrevSpec);
TypeSpecType = T;
TypeRep = Rep;
TSTLoc = Loc;
@@ -218,7 +218,7 @@ void DeclSpec::Finish(Diagnostic &D, const LangOptions &Lang) {
TypeSpecType = TST_int; // unsigned -> unsigned int, signed -> signed int.
else if (TypeSpecType != TST_int && TypeSpecType != TST_char) {
Diag(D, TSSLoc, diag::err_invalid_sign_spec,
- getSpecifierName(TypeSpecType));
+ getSpecifierName( (TST)TypeSpecType));
// signed double -> double.
TypeSpecSign = TSS_unspecified;
}
@@ -235,7 +235,7 @@ void DeclSpec::Finish(Diagnostic &D, const LangOptions &Lang) {
Diag(D, TSWLoc,
TypeSpecWidth == TSW_short ? diag::err_invalid_short_spec
: diag::err_invalid_longlong_spec,
- getSpecifierName(TypeSpecType));
+ getSpecifierName( (TST)TypeSpecType));
TypeSpecType = TST_int;
}
break;
@@ -244,7 +244,7 @@ void DeclSpec::Finish(Diagnostic &D, const LangOptions &Lang) {
TypeSpecType = TST_int; // long -> long int.
else if (TypeSpecType != TST_int && TypeSpecType != TST_double) {
Diag(D, TSWLoc, diag::err_invalid_long_spec,
- getSpecifierName(TypeSpecType));
+ getSpecifierName( (TST)TypeSpecType));
TypeSpecType = TST_int;
}
break;
@@ -261,7 +261,7 @@ void DeclSpec::Finish(Diagnostic &D, const LangOptions &Lang) {
Diag(D, TSTLoc, diag::ext_integer_complex);
} else if (TypeSpecType != TST_float && TypeSpecType != TST_double) {
Diag(D, TSCLoc, diag::err_invalid_complex_spec,
- getSpecifierName(TypeSpecType));
+ getSpecifierName( (TST)TypeSpecType));
TypeSpecComplex = TSC_unspecified;
}
}
@@ -273,7 +273,7 @@ void DeclSpec::Finish(Diagnostic &D, const LangOptions &Lang) {
} else if (StorageClassSpec != SCS_extern &&
StorageClassSpec != SCS_static) {
Diag(D, getStorageClassSpecLoc(), diag::err_invalid_thread_spec,
- getSpecifierName(StorageClassSpec));
+ getSpecifierName( (SCS)StorageClassSpec));
SCS_thread_specified = false;
}
}
diff --git a/Sema/SemaDecl.cpp b/Sema/SemaDecl.cpp
index 71f2f19226..809bb3181f 100644
--- a/Sema/SemaDecl.cpp
+++ b/Sema/SemaDecl.cpp
@@ -773,8 +773,8 @@ Sema::DeclTy *Sema::FinalizeDeclaratorGroup(Scope *S, DeclTy *group) {
// no linkage (C99 6.2.2p6), the type for the object shall be complete...
if (BVD && IDecl->getStorageClass() != VarDecl::Extern) {
if (T->isIncompleteType()) {
- Diag(IDecl->getLocation(), diag::err_typecheck_decl_incomplete_type,
- T.getAsString());
+ //Diag(IDecl->getLocation(), diag::err_typecheck_decl_incomplete_type,
+ // T.getAsString());
IDecl->setInvalidDecl();
}
}
@@ -788,8 +788,8 @@ Sema::DeclTy *Sema::FinalizeDeclaratorGroup(Scope *S, DeclTy *group) {
// a tentative definition and has internal linkage (C99 6.2.2p3), the
// declared type shall not be an incomplete type.
if (T->isIncompleteType()) {
- Diag(IDecl->getLocation(), diag::err_typecheck_decl_incomplete_type,
- T.getAsString());
+ //Diag(IDecl->getLocation(), diag::err_typecheck_decl_incomplete_type,
+ // T.getAsString());
IDecl->setInvalidDecl();
}
}
diff --git a/include/clang/Parse/DeclSpec.h b/include/clang/Parse/DeclSpec.h
index b247fb2b62..a23aaf7789 100644
--- a/include/clang/Parse/DeclSpec.h
+++ b/include/clang/Parse/DeclSpec.h
@@ -101,14 +101,14 @@ public:
private:
// storage-class-specifier
- SCS StorageClassSpec : 3;
+ /*SCS*/unsigned StorageClassSpec : 3;
bool SCS_thread_specified : 1;
// type-specifier
- TSW TypeSpecWidth : 2;
- TSC TypeSpecComplex : 2;
- TSS TypeSpecSign : 2;
- TST TypeSpecType : 4;
+ /*TSW*/unsigned TypeSpecWidth : 2;
+ /*TSC*/unsigned TypeSpecComplex : 2;
+ /*TSS*/unsigned TypeSpecSign : 2;
+ /*TST*/unsigned TypeSpecType : 4;
// type-qualifiers
unsigned TypeQualifiers : 3; // Bitwise OR of TQ.
@@ -153,7 +153,7 @@ public:
delete ProtocolQualifiers;
}
// storage-class-specifier
- SCS getStorageClassSpec() const { return StorageClassSpec; }
+ SCS getStorageClassSpec() const { return (SCS)StorageClassSpec; }
bool isThreadSpecified() const { return SCS_thread_specified; }
SourceLocation getStorageClassSpecLoc() const { return StorageClassSpecLoc; }
@@ -168,10 +168,10 @@ public:
}
// type-specifier
- TSW getTypeSpecWidth() const { return TypeSpecWidth; }
- TSC getTypeSpecComplex() const { return TypeSpecComplex; }
- TSS getTypeSpecSign() const { return TypeSpecSign; }
- TST getTypeSpecType() const { return TypeSpecType; }
+ TSW getTypeSpecWidth() const { return (TSW)TypeSpecWidth; }
+ TSC getTypeSpecComplex() const { return (TSC)TypeSpecComplex; }
+ TSS getTypeSpecSign() const { return (TSS)TypeSpecSign; }
+ TST getTypeSpecType() const { return (TST)TypeSpecType; }
void *getTypeRep() const { return TypeRep; }
SourceLocation getTypeSpecWidthLoc() const { return TSWLoc; }