[cfe-dev] Bug Patch for MSVC

Cédric Venet cedric.venet at student.ecp.fr
Tue Sep 18 01:51:09 PDT 2007


      Hi,

   There is a small bug in the actual clang code when compiling with  
visual studio 8.0 . For VS, the enum are signed so when an enum is  
used in a bit field just the right size, it get sign exteded when you  
read it and this cause problems (here it perturb isa<> so clang can't  
compile a function definition...)

here is the patch (not a true patch since I don't have svn acces from  
where I am)

file: /include/clang/AST/Type.h
lines: 199 to 216

  class Type {
  public:
-   enum TypeClass {
+   enum TypeClass : unsigned int {
      Builtin, Complex, Pointer, Reference,
      ConstantArray, VariableArray,
      Vector, OCUVector,
      FunctionNoProto, FunctionProto,
      TypeName, Tagged,
      ObjcInterface,
      TypeOfExp, TypeOfTyp // GNU typeof extension.
    };
  private:
    QualType CanonicalType;

   /// TypeClass bitfield - Enum that specifies what subclass this belongs to.
   /// Note that this should stay at the end of the ivars for Type so that
   /// subclasses can pack their bitfields into the same word.
   TypeClass TC : 4;

another alternative is to make the TC bit field 5 bits wide. This is  
the choice llvm made in one of is class.

best regards,

-- 
Cédric Venet







More information about the cfe-dev mailing list