[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