[LLVMdev] DebugFactory

Talin viridia at gmail.com
Thu Oct 1 20:34:34 PDT 2009


Here is a patch that does just that.

On Wed, Sep 23, 2009 at 3:38 PM, Devang Patel <devang.patel at gmail.com>wrote:

> 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
>



-- 
-- Talin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20091001/b01836fa/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: debug_constants.patch
Type: application/octet-stream
Size: 7712 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20091001/b01836fa/attachment.obj>


More information about the llvm-dev mailing list