Il back() di una funzione garantisce la restituzione del blocco di base del terminatore di CFG in LLVM?Ultimo blocco di base di una funzione in LLVM
6
A
risposta
3
Non credo, dal momento che non esiste una cosa come un "terminatore BB": molto bene potrebbero esserci più BB terminati da un ritorno.
0
No. Potrebbero esserci più blocchi di base di terminazione di una funzione, ad esempio una funzione contenente più istruzioni di reso. ogni blocco di base che contiene un'istruzione di ritorno dalla funzione verrà quindi chiamato blocco di terminazione o blocco di base del terminatore. Per rilevare tutti i blocchi di base che sono terminatore blocchi di base (vale a dire da una scheda contenente ritorno) effettuare le seguenti operazioni:
runOnFunction {
for BB in F:
for I in BB:
if (ReturnInst *RI = dyn_cast<ReturnInst> I)
BB is terminator Basic Block
endif
endfor
endfor
}
Problemi correlati
- 1. no Terminatore di blocco di base generato in llvm
- 2. Identificare l'anello di chiusura di un blocco in LLVM
- 3. Come gestire "ultimo blocco incompleto in decrittazione"
- 4. Una funzione R di base
- 5. Sospendi l'ordine in base allo zero ultimo
- 6. Che cos'è una funzione di blocco?
- 7. Come inserire una funzione nel modulo LLVM
- 8. llvm: Come ottenere l'etichetta dei blocchi di base
- 9. Inoltro di argomenti in LLVM
- 10. Blocco delle colonne in EPPlus (una funzione di divisione Excel)
- 11. LLVM - problema di collegamento
- 12. Ultimo indice di una sottostringa data in MySQL
- 13. Override overload funzione di una base in C++
- 14. la funzione di chiamata in base a una stringa
- 15. Funzione logaritmo di una base intera arbitraria in C
- 16. std :: bind() - utilizzo di una funzione membro protetto di base dalla funzione membro di una classe derivata
- 17. ggplot - sfaccettatura in base all'output di funzione
- 18. Monadi multipli in un blocco di blocco
- 19. Cancellare una prima istruzione in Basic Block da LLVM IR?
- 20. Come passare una funzione invece di un blocco
- 21. Avvio automatico di una lingua su LLVM
- 22. Utilizzare una versione compilata LLVM di Qt
- 23. data.table aggiornamento ultimo elemento nel gruppo in base alla condizione
- 24. Converti funzione in blocco Simulink
- 25. Come per riprovare una richiesta di blocco di URL in base
- 26. Funzione PowerShell con blocco di script parametrizzato
- 27. Come selezionare ultimo record in una clausola di LINQ GroupBy
- 28. Bash ultimo indice di
- 29. tipi interi di llvm
- 30. Sostituzione ultimo carattere in una stringa
Mi potete dare un esempio di una funzione con più di un terminatore BBS? Anche se ci sono più ritorni, ci dovrebbe essere un BB con un phi per "raccogliere" tutti i BB di ritorno, giusto? – dalibocai
No, in realtà c'è anche un passaggio chiamato UnifyFunctionExitNodes che fa esattamente quello che dice il suo nome, cioè sbarazzarsi di più uscite da una funzione – CAFxX
OK. Io vedo. Grazie! – dalibocai