[LLVMdev] Get Element Ptr inst

John Criswell criswell at illinois.edu
Thu Feb 24 09:29:43 PST 2011


On 2/24/11 11:27 AM, Arushi Aggarwal wrote:
> Thanks John. You are right.
>
> Is this also true for constant GEP expressions? Do they also create a 
> pointer to the calculated type? The language manual does not state so 
> explicitly.

I would think so.

-- John T.

>
> Arushi
>
> On Thu, Feb 24, 2011 at 10:47 AM, John Criswell <criswell at illinois.edu 
> <mailto:criswell at illinois.edu>> wrote:
>
>     On 2/24/11 10:39 AM, Arushi Aggarwal wrote:
>
>         Given 2 GEPs as follows,
>
>         %tmp124 = getelementptr inbounds %struct.termbox* %termptr.1,
>         i32 0, i32 5, !dbg !1051 ; <[2 x i16]*> [#uses=1]
>          %tmp125 = getelementptr inbounds [2 x i16]* %tmp124, i64 0,
>         i64 0, !dbg !1051 ; <i16*> [#uses=1]
>
>         can I replace the 2nd one with
>
>         %tmp126 = getelementptr inbounds %struct.termbox* %termptr.1,
>         i32 0, i32 5, i64 0, i64 0 ; <i16*>
>
>
>     You should double-check the LangRef manual, but I think the
>     problem stems from the fact that a GEP returns a pointer to the
>     type found after all indexing is completed.
>
>     So, in %tmp124, indexing %termptr.1 by i32 0 and i32 5 yields a
>     [2xi16] type, and then the result of the GEP is a pointer to that,
>     which is of type [2xi16] *.
>
>     In the new GEP you've created, I think you can remove the first
>     i64 0 index because the result of indexing i32 0 and i32 5 is a [2
>     x i16] and not a [2 x i16] *.
>
>     -- John T.
>
>
>
>         When I try to create this instruction i get the follwoing error,
>
>         opt:
>         /home/vadve/aggarwa4/llvm27/llvm-2.7/include/llvm/Instructions.h:276:
>         const llvm::Type* llvm::checkType(const llvm::Type*):
>         Assertion `Ty && "Invalid GetElementPtrInst indices for
>         type!"' failed.
>
>         Thanks!
>         Arushi
>
>
>
>
>
>
>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110224/d53732a5/attachment.html>


More information about the llvm-dev mailing list