[LLVMdev] How to convert an iterator to an object pointer

230 views
Skip to first unread message

Surinder

unread,
Jan 30, 2011, 11:04:45 PM1/30/11
to llv...@cs.uiuc.edu
I have a pointer to a basic block and am iterating thru its
predecessor blocks. I want to get a pointer to the predecessor block.
How do I do it. I am using following code and it given compile time
errors.

error: cannot convert 'llvm::const_pred_iterator' to 'const
llvm::BasicBlock*' in initialization

const BasicBlock *b = PH->getParent();
// process all pred block of the current block
for (const_pred_iterator pr=pred_begin(b), esc=pred_end(b); pr!=esc; ++pr)
{ const BasicBlock *p = pr; // ************error line ****************
_______________________________________________
LLVM Developers mailing list
LLV...@cs.uiuc.edu http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

Lang Hames

unread,
Jan 30, 2011, 11:36:55 PM1/30/11
to Surinder, llv...@cs.uiuc.edu
Hi Surinder,

You'll need to dereference your iterator to get a pointer: 

const BasicBlock *p = *pr;

Cheers,
Lang.

Cameron Zwarich

unread,
Jan 30, 2011, 11:35:46 PM1/30/11
to Surinder, llv...@cs.uiuc.edu
On 2011-01-30, at 8:04 PM, Surinder wrote:

> I have a pointer to a basic block and am iterating thru its
> predecessor blocks. I want to get a pointer to the predecessor block.
> How do I do it. I am using following code and it given compile time
> errors.
>
> error: cannot convert 'llvm::const_pred_iterator' to 'const
> llvm::BasicBlock*' in initialization
>
> const BasicBlock *b = PH->getParent();
> // process all pred block of the current block
> for (const_pred_iterator pr=pred_begin(b), esc=pred_end(b); pr!=esc; ++pr)
> { const BasicBlock *p = pr; // ************error line ****************

Try using *pr instead.

Cameron

Surinder

unread,
Jan 30, 2011, 11:42:08 PM1/30/11
to Lang Hames, llv...@cs.uiuc.edu
Thanks. *p=*pr; works. I am passing *p to dominates function of
dominator tree and it does not like *pr, but is happy with *p.
Reply all
Reply to author
Forward
0 new messages