[LLVMdev] DebugFactory
Devang Patel
devang.patel at gmail.com
Wed Sep 23 15:38:59 PDT 2009
On Wed, Sep 23, 2009 at 2:27 PM, Talin <viridia at gmail.com> wrote:
> On Wed, Sep 23, 2009 at 1:51 PM, Dan Gohman <gohman at apple.com> wrote:
>>
>> On Sep 22, 2009, at 4:49 PM, Talin wrote:
>>>
>>> // Calculate the size of the specified LLVM type.
>>> Constant * DebugInfoBuilder::getSize(const Type * type) {
>>> Constant * one = ConstantInt::get(Type::Int32Ty, 1);
>>> return ConstantExpr::getPtrToInt(
>>> ConstantExpr::getGetElementPtr(
>>> ConstantPointerNull::get(PointerType::getUnqual(type)),
>>> &one, 1), Type::Int32Ty);
>>> }
>>>
>>> Constant * DebugInfoBuilder::getAlignment(const Type * type) {
>>> // Calculates the alignment of T using "sizeof({i8, T}) - sizeof(T)"
>>> return ConstantExpr::getSub(
>>> getSize(StructType::get(Type::Int8Ty, type, NULL)),
>>> getSize(type));
>>> }
>>
>> Are ConstantExpr::getAlignOf, getSizeOf, and getOffsetOf what
>> you're looking for?
>>
> That will work. Now all I need is for the methods of DIFactory to take a
> Constant* instead of uint64.
ok. Feel free to add
/// CreateBasicType - Create a basic type like int, float, etc.
DIBasicType CreateBasicType(DIDescriptor Context, const std::string &Name,
DICompileUnit CompileUnit, unsigned LineNumber,
uint64_t SizeInBits, uint64_t AlignInBits,
uint64_t OffsetInBits, unsigned Flags,
unsigned Encoding);
variants that take Constant*, for example,
/// CreateBasicType - Create a basic type like int, float, etc.
DIBasicType CreateBasicType(DIDescriptor Context, const std::string &Name,
DICompileUnit CompileUnit, unsigned LineNumber,
Constant *SizeInBits, Constant *AlignInBits,
Constant *OffsetInBits, unsigned Flags,
unsigned Encoding);
and so on.
-
Devang
More information about the llvm-dev
mailing list