[llvm-dev] confused GetElementPtr, how to use it properly.

PeiLIU via llvm-dev llvm-dev at lists.llvm.org
Wed May 11 07:04:11 PDT 2016

BasicBlock::iterator bit = BB->begin();

LoadInst *li = = dyn_cast<LoadInst>(bit);

li->dump(); // %tmp6 = load i32* getelementptr inbounds (%struct.node*
@Node, i32 0, i32 0), align 4, !dbg !59

li->getOperand(0)->dump(); // i32* getelementptr inbounds (%struct.node*
@Node, i32 0, i32 0), align 4, !dbg !59

GetElementPtrInst *gep = dyn_cast<GetElementPtrInst>(li->getOperand(0));

if (gep != NULL) {
std::cout << "gep not NULL" << std::endl;

The previous codes' BB is a BasicBlock pointer, I want to get the string
name Node. I want to use dyn_cast to cast

the value of li->getOperand(0) to a GetElementPtr pointer type, but it is
likely can not casted by the dyn_cast operation.

The if statement never executed. How it can be implemented? I confused by
the load instruction? Any advice would be

appreciate, thank you.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160511/b4cccedd/attachment.html>

More information about the llvm-dev mailing list