[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