]> granicus.if.org Git - clang/commitdiff
improve VC++ compatibility, patch by Cédric Venet.
authorChris Lattner <sabre@nondot.org>
Sun, 2 Dec 2007 00:47:03 +0000 (00:47 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 2 Dec 2007 00:47:03 +0000 (00:47 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44496 91177308-0d34-0410-b5e6-96231b3b80d8

Parse/DeclSpec.cpp
Sema/SemaDecl.cpp
include/clang/Parse/DeclSpec.h

index 31338d81df355ef27c832792d3ce3d4ed5035f81..19e643d27c44a46a57ca1dd1026ee3dbf02d2308 100644 (file)
@@ -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;
     }
   }
index 71f2f192260e4a06c0cb32b7b346b077c85b99e5..809bb3181f4b20ed1bee0306f383c8fb48c78e59 100644 (file)
@@ -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();
       }
     }
index b247fb2b62e48155fb6d777e856f71e1d724959a..a23aaf7789ae7b6d8456fb2f296aeba7dec18b4d 100644 (file)
@@ -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; }