[cfe-commits] r125562 - in /cfe/trunk/lib/CodeGen: CGBlocks.cpp CGDecl.cpp CGExpr.cpp CGExprScalar.cpp CodeGenFunction.cpp CodeGenFunction.h CodeGenModule.cpp CodeGenModule.h

John McCall rjmccall at apple.com
Tue Feb 15 09:45:23 PST 2011


On Feb 15, 2011, at 7:54 AM, Ken Dyck wrote:

> On Tue, Feb 15, 2011 at 4:22 AM, John McCall <rjmccall at apple.com> wrote:
>> Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=125562&r1=125561&r2=125562&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/CodeGen/CodeGenModule.h (original)
>> +++ cfe/trunk/lib/CodeGen/CodeGenModule.h Tue Feb 15 03:22:45 2011
>> @@ -94,10 +94,39 @@
>>       return priority == RHS.priority && lex_order < RHS.lex_order;
>>     }
>>   };
>> +
>> +  struct CodeGenTypeCache {
>> +    /// i8, i32, and i64
>> +    const llvm::IntegerType *Int8Ty, *Int32Ty, *Int64Ty;
>> +
>> +    /// int
>> +    const llvm::IntegerType *IntTy;
>> +
>> +    /// intptr_t and size_t, which we assume are the same
>> +    union {
>> +      const llvm::IntegerType *IntPtrTy;
>> +      const llvm::IntegerType *SizeTy;
>> +    };
>> +
>> +    /// void* in address space 0
>> +    union {
>> +      const llvm::PointerType *VoidPtrTy;
>> +      const llvm::PointerType *Int8PtrTy;
>> +    };
>> +
>> +    /// void** in address space 0
>> +    union {
>> +      const llvm::PointerType *VoidPtrPtrTy;
>> +      const llvm::PointerType *Int8PtrPtrTy;
>> +    };
>> +
>> +    /// The width of an address-zero pointer.
>> +    unsigned char PointerWidthInBits;
>> +  };
> 
> Nice. Collecting these type definitions into a single location looks
> like it will be a big help when it comes to generalizing the code
> generator for non-8-bit chars. Do you think it will be
> possible/advisable to eventually replace these Int8 types with ones
> that are tied to the size of the C-level char type?

That's my thinking.  It's possible that LLVM would want to separate some
things as always being i8* vs. char*, in which case we'd need to audit
all the uses in Clang, but using a consistent place that builds that type
will be convenient for that refactor.

John.



More information about the cfe-commits mailing list