Sto cercando di capire con precisione la nozione di un grafico di dipendenza del controllo. Se ho il seguente grafo di controllo (in DOT notazione):Un grafico di dipendenza del controllo può avere cicli?
graph g {
1 -> 2;
2 -> 3;
3 -> 2;
2 -> 4;
1 -> 4
}
Ha un nodo univoco voce (1) ed un nodo di uscita unico (4), ed un anello di 2 -> 3 -> 2.
La mia domanda è: il grafico di dipendenza del controllo per questo CFG contiene un margine di loop da 2 a se stesso?
Allen & "Compilatori ottimizzanti per architetture moderne" di Kennedy ha un algoritmo che produce un tale margine di loop. Tuttavia, l'algoritmo di "Compiler design & implementazione" di Muchnick per la dipendenza da controllo non produce tale vantaggio. Inoltre, non sono riuscito a trovare alcun esempio nella letteratura in cui un CDG è disegnato con un tale margine di loop. Tendo a credere che non ci sia un tale margine, ma secondo la definizione formale di dipendenza da controllo e secondo l'algoritmo di Allen & Kennedy, dovrebbe!
Se potete per favore mi punto ad un esempio in cui v'è una tale ciclo in un CDG (preferibilmente in un articolo peer-reviewed, o dispense di qualche professore, ecc), o se si può discutere l'algoritmo di perché Allen & Kennedy dovrebbe essere sbagliato, sarei felice di sapere.
L'utilità di tale grafico di dipendenza determina come ordinare le operazioni, giusto? In questo senso, non è utile sapere che un elemento dipende da se stesso. Puoi disegnare i loop se vuoi, ma ciò che è veramente importante sono tutti gli altri lati. – mitchus
Sì, penso che mi aspettavo qualche "definizione canonica" che potrebbe essere usata come un oracolo per testare più implementazioni, ma è vero che entrambe le versioni sono equivalenti per tutti gli scopi pratici ... grazie! – anol
@mitchus È necessario spostare il commento su una risposta in modo che possa essere accettato come risposta. –