[LLVMdev] another question

xli3 at uiuc.edu xli3 at uiuc.edu
Mon Sep 16 16:35:00 PDT 2002


In the section expaining "dyn_cast"
There are following lines of code:
 if (AllocationInst *AI = dyn_cast<AllocationInst>(Val)) {
            ...
          }
I cannot understand how you take a operand, a value, and cast
it into a Instruction. Can you explain it for me?

Another common example is:

// Loop over all of the phi nodes in a basic block
BasicBlock::iterator BBI = BB->begin();
for (; PHINode *PN = dyn_cast<PHINode>(&*BBI); ++BBI)
      cerr << *PN;

In this case you cast &*BBI. It's not an operand. Can you
explain to me a little about what you can cast and what
cannot?

Besides, maybe this is a stupid question, but what do you mean
by "&*BBI"?

Thanks,
xiaodong



More information about the llvm-dev mailing list