[cfe-dev] Source information for types

Chris Lattner clattner at apple.com
Thu Jul 9 10:02:30 PDT 2009


On Jul 8, 2009, at 6:56 PM, Argyrios Kyrtzidis wrote:

>> Ah, so SourceType inherits from Type?  That feels slightly nasty, but
>> it works, I guess.
>
> Yes, it will be a Type subclass that the type system should not deal
> with and should not be aware of (e.g. CodeGen will never come across a
> SourceType).
> The benefit is that the size of Decls remain the same (no need to add
> a pointer to a "type source info" object).
>

Hi Argiris,

I always thought we'd do this sort of thing by introducing several new  
subclasses of type, but ones that are very specific to the various  
types.  For example, in an ArrayType, you really want to store the  
location of the [ and ], and the "Expr*" of the size.  To do this,  
we'd have something like:

class ConstantArrayTypeWithLoc : public ConstantArrayType {
   SourceLocation LBracketLoc, RBracketLoc;
   Expr *Size;
...
};

The canonical form of the array type would be the normal ConstantArray  
without location info (so that canonical types are pointer unique as  
usual).  This just provides loc info for ConstantArray, so we'd need  
to have a per-class subclass for every type that has a token.  Does  
this approach make sense?

-Chris



More information about the cfe-dev mailing list