[LLVMdev] Question about method CodeExtractor::severSplitPHINodes
Caldarale, Charles R
Chuck.Caldarale at unisys.com
Sat Mar 2 21:14:22 PST 2013
> From: Wei Dang [mailto:jacdang at gmail.com]
> Subject: Re: [LLVMdev] Question about method CodeExtractor::severSplitPHINodes
> Please excuse me if I'm not supposed to reply to all.
You should do reply-all, to make sure the list sees all of the thread.
> Are you saying all PHI nodes are required to include all its predecessor blocks
> no matter they have input or not?
That's the way SSA works - each input to a block must be provided by all paths leading to the block. That must be from each immediate predecessor or from a common predecessor of two or more immediate predecessors that do not mutate the value.
> What about successor blocks? Are they optional if they don't provide inputs?
The question doesn't make sense; we're only concerned with the predecessors here. If you have a loop, some successor (possibly the block of interest) is also a predecessor and must conform to SSA usage.
> where should I look at to verify this, the mem2reg.cpp & PromoteMemToReg.cpp?
It's an inherent characteristic of SSA:
(or any of numerous textbooks and papers).
THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY MATERIAL and is thus for use only by the intended recipient. If you received this in error, please contact the sender and delete the e-mail and its attachments from all computers.
More information about the llvm-dev