deep

a Cross Development Platform for Java

User Tools

Site Tools


dev:crosscompiler:backend:register_allocator

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
dev:crosscompiler:backend:register_allocator [2018/02/28 14:42] – [Resolving of Phi-Functions] ursgrafdev:crosscompiler:backend:register_allocator [2018/02/28 14:42] ursgraf
Line 11: Line 11:
 Before the phi-functions can be resolved, loops need special treatment. Let's consider the folowing case: Before the phi-functions can be resolved, loops need special treatment. Let's consider the folowing case:
 [{{ .:phifunctionloop1.png?110 |//Phi-Function in a loop//}}] [{{ .:phifunctionloop1.png?110 |//Phi-Function in a loop//}}]
-{{:dev:crosscompiler:backend:phifunctionloop1.png?400|}} 
  
 The SSAValue of //a// is used in the loop. The live range of //a// extends to the instruction for //b = 2 * a//. However, this would be wrong, because the register for //a// would be released at this point and might be used otherwise. It must stay reserved until the end of the loop. At the beginning of node 2 a phi-function is created for //a//. This function will be deleted because //a// is set in node 1 and only read in node 2. For all phi-functions in loops (whether deleted or not) the field //last// is set to the last instruction of this loop.\\ The SSAValue of //a// is used in the loop. The live range of //a// extends to the instruction for //b = 2 * a//. However, this would be wrong, because the register for //a// would be released at this point and might be used otherwise. It must stay reserved until the end of the loop. At the beginning of node 2 a phi-function is created for //a//. This function will be deleted because //a// is set in node 1 and only read in node 2. For all phi-functions in loops (whether deleted or not) the field //last// is set to the last instruction of this loop.\\
dev/crosscompiler/backend/register_allocator.txt · Last modified: 2019/08/29 16:53 by ursgraf