[LLVMdev] scalar evolution to determine access functions in arays

Tobias Grosser tobias at grosser.es
Wed Aug 3 02:40:23 PDT 2011


On 08/03/2011 10:33 AM, Jimborean Alexandra wrote:
> Ok, thank you, I will have a look and reply with questions if necessary.
> Does it take into consideration the existing phi nodes?

It is extremely polyhedral. The basic idea is that all calculations that 
scalar evolution can analyze (including canonical induction variables), 
are kept in registers. Any other values are promoted to memory.

As we keep the information about operations scalar evolution can express 
in our polyhedral data structures, we do not care about them while 
reworking the CFG. When generating the changed structure, we create new 
expressions that calculate loop bounds and access functions.

In respect of PHI nodes, we keep the canonical induction variables as 
PHI nodes. Those are ignored during reworking the CFG  and regenerated 
from the polyhedral description. All other PHI-node (are promoted to 
memory. Those are basically the inter basic block, scalar dependences.

Tobi




More information about the llvm-dev mailing list