[LLVMdev] Convenience methods in ConstantExpr et al
Talin
viridia at gmail.com
Wed Feb 2 12:55:30 PST 2011
On Mon, Jan 31, 2011 at 10:57 PM, Talin <viridia at gmail.com> wrote:
> I notice that there's a lot of inconsistency in the various LLVM classes
> with respect to convenience methods. Here's some examples:
>
> For creating GEPS, IRBuilder has:
>
> CreateGEP (2 overloads)
> CreateInBoundsGEP (2 overloads)
> CreateConstGEP1_32
> CreateConstInBoundsGEP1_32
> CreateConstGEP2_32
> CreateConstInBoundsGEP2_32
> CreateConstGEP1_64
> CreateConstInBoundsGEP1_64
> CreateConstGEP2_64
> CreateConstInBoundsGEP2_64
> CreateStructGEP
>
> All of which are very useful. However, ConstExpression only has:
>
> getGetElementPtr
> getGetElementPtr
> getInBoundsGetElementPtr
> getInBoundsGetElementPtr
>
> It would be nice if ConstantExpr's GEP-building methods used the same
> naming convention and had the same convenience methods as IRBuilder. (In
> fact, the naming convention between IRBuilder and the various Constants.h
> classes desperately needs to be reconciled, a point which I am sure everyone
> is painfully aware of.)
>
> Another thing I'd like to see is for ConstantArray::get(),
> ConstantStruct::get() and ConstantVector::get() to have an overload that
> takes an iterator pair like IRBuilder's CreateGEP and CreateCall methods.
> Also useful for creating small structs would be overloads for
> ConstantStruct::get that took 1-4 arguments, instead of having to create a
> vector every time. Even better would be an "end with null" version, like
> StructType::get() does. These should be added to FunctionType::get() as
> well.
>
By the way, the reason I'm asking this is because I thought I might spend
some time adding the convenience methods myself - but if there is a plan
underway to fix up the APIs or resolve the incompatibilities with the naming
conventions I don't want to get in the way of that.
> --
> -- Talin
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110202/4f19f8ef/attachment.html>
More information about the llvm-dev
mailing list