Skip to content

Vector handling in GEP instructions #169

@mortkever

Description

@mortkever

Hello,

Under the same circumstances as my previous issue (self ported llvm 15), I'm running into an issue in the computeGepOffset function in DsaLocal.cc. Perlbench from the SPEC 2006 benchmarking suite contains some vectors (e.g. <2 x %struct.xrv*>) which are passed to the computeGepOffset function. Here an assert triggers as the operand is a vector and not a pointer.

I see there is support for handling pointers to vectors as the operand of a gep instruction. However executing a gep on a vector has a different effect, the gep is executed on each individual element of the vector.

I assume that to correctly handle these the vector should effectively be split into their separate elements and then handled individually.
Perhaps a branch can be inserted in the visitGetElementInstruction(...) function that handles vectors separately from the regular geps?
However, supporting this would necessitate the support of both extractelement and insertelement.

Are there plans to support vectors in the future? Or do you know of a workaround?
Is there perhaps a way to simply drop these pointers and claim they may point to anything? (just to get rolling again)

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions