[llvm-dev] Check if value operand to store instruction is defined in this instruction

alexp via llvm-dev llvm-dev at lists.llvm.org
Mon Jan 28 03:14:35 PST 2019


Hi,

sadly, getOperand(0).getNumUses() reports 1 in both cases.
When I have a look at the Value* retrievd from getOperand(0), I see a
field numUserOperands, which seems to discriminate the two cases, but I
can not manage to access it (there's no getNumUserOperands).

Any hints?
Alex


On 1/22/19 3:37 PM, alexp via llvm-dev wrote:
> Hi all,
> 
> the store instruction allows to define values, e.g.:
> 
> 
> %ptr = alloca i32                               ; yields i32*:ptr
> store i32 3, i32* %ptr
> 
> lets name this 'type1 store'; this is different from 'type2 store'
> 
> %val = load i32, i32* %someptr
> %ptr = alloca i32                               ; yields i32*:ptr
> store %val, i32* %ptr                          ; yields void
> 
> 
> When now later on manipulating the instructions of a function, can I
> tell if I deal with type1 or type 2 store?
> 
> In case of type1 I could e.g. alter the value; in type 2 not.
> 
> My best guess is something like:
> storeInstructionInstance.getValueOperand.hasOneUse()
>  true: only used within this storeInstruction, else value is
> introduced/used elsewhere.
> 
> Is this correct?
> 
> Thanks!
> 
> Alex
> 
> 
> 
> 
> p.s.:
> 
> it's been a while since my last post to llvm-dev. Is this still the
> place for such questions? If not, pleas point me where to ask this sort
> of questions.
> Thanks
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
> 


More information about the llvm-dev mailing list