Loop allocation for optimizing compilers includes the generation of a
program dependence graph for a source code segment. Control dependence
graph representations of the nested loops, from innermost to outermost,
are generated and data dependence graph representations are generated for
each level of nested loop as constrained by the control dependence graph.
An interference graph is generated with the nodes of the data dependence
graph. Weights are generated for the edges of the interference graph
reflecting the affinity between statements represented by the nodes joined
by the edges. Nodes in the interference graph are given weights reflecting
resource usage by the statements associated with the nodes. The
interference graph is partitioned using a profitability test based on the
weights of edges and nodes and on a correctness test based on the
reachability of nodes in the data dependence graph. Code is emitted based
on the partitioned interference graph.
L'attribution de boucle pour les compilateurs de linéarisation inclut la génération d'un graphique de la dépendance de programme pour un segment de code source. Commandez les représentations de graphique de la dépendance des boucles nichées, de les plus secrets à extérieur, sont produits et des représentations de graphique de la dépendance de données sont produites pour chaque niveau de boucle nichée comme contraintes par le graphique de la dépendance de commande. Un graphique d'interférence est produit avec les noeuds du graphique de la dépendance de données. Des poids sont produits pour les bords du graphique d'interférence reflétant l'affinité entre les rapports représentés par les noeuds jointifs par les bords. Des noeuds dans le graphique d'interférence sont donnés des poids reflétant l'utilisation de ressource par les rapports liés aux noeuds. Le graphique d'interférence est divisé en utilisant un essai de rentabilité sur base du poids de bords et de noeuds et sur un essai d'exactitude basé sur le reachability des noeuds dans le graphique de la dépendance de données. Le code est émis a basé sur le graphique divisé d'interférence.