[LLVMdev] Question on Load and GetElementPtr instructions
Xiaolong Tang
xiaolong.snake at gmail.com
Fri Jun 18 04:54:45 PDT 2010
Hey,
Considering the following instruction:
%20 = load %struct.Node** getelementptr inbounds (%struct.Node*
@head, i32 0, i32 0), align 16 ; <%struct.Node*> [#uses=1]
What is the type of the first operand of the instruction (i.e.,
getOperand(0))?
I thought the operand is a "GetElementPtr" instruction, however, the
predicate "isa<Instruction>()" over the operand returns false.
So, I am confused. Can someone clarify the above instruction for me?
By the way, why does not LLVM factor out the operand and instead
generate such two instructions:
%19 = getelementptr inbounds (%struct.Node* @head, i32 0, i32 0)
%20 = load %struct.Node** %19, align 16 ; <%struct.Node*> [#uses=1]
What it the cause? What are the differences between the
"GetElementPtr inbounds" instruction and just the "GetElementPtr"
instruction?
Thanks,
Xiaolong
More information about the llvm-dev
mailing list