[LLVMdev] Value liveout (uses)

John McCall rjmccall at apple.com
Sat May 30 12:32:15 PDT 2009

On May 30, 2009, at 5:03 AM, Rotem Varon wrote:
> Is it possible to determine the liveout of the operands (see example  
> bellow) ?
>         %5 = add i32 %4, %3
> For '%5': i can simply use " i->isUsedOutsideOfBlock() "
> For '%3' and '%4' : this is the question ...

By definition, operands are live out if they're used in any block  
that's reachable from
the block containing the instruction.  Barring a few special cases  
we've already
covered, the easiest way I know to compute that in general is to first  
calculate the
set of reachable blocks, then iterate through the uses, checking  
whether that use
is in a reachable block (if the use is in a PHI node, only count it if  
corresponding incoming block is reachable).

> From your answer, is it possible to determine which value is liveout  
> ( in binary instruction)?

All of these answers are things you would do for an individual LLVM  
"Value".  I don't
know what you mean by "which value" beyond that, and I don't know what  
you mean
by "in binary instruction".

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090530/b9e13d4a/attachment.html>

More information about the llvm-dev mailing list