¿El respaldo() de una función garantiza devolver el bloque básico del terminador de CFG en LLVM?Último bloque básico de una función en LLVM
6
A
Respuesta
3
No creo, ya que no existe un "terminador BB": muy bien puede haber múltiples BB terminados por una devolución.
0
No. Podría haber múltiples bloques básicos de terminador de una función, por ejemplo, una función que contenga múltiples declaraciones de retorno. cada bloque básico que contenga una declaración de retorno de la función se denominará bloque terminador o bloque básico terminador. Para detectar todos los bloques básicos que son terminador bloques básicos (es decir, contienen una instrucción de retorno) haga lo siguiente:
runOnFunction {
for BB in F:
for I in BB:
if (ReturnInst *RI = dyn_cast<ReturnInst> I)
BB is terminator Basic Block
endif
endfor
endfor
}
Cuestiones relacionadas
- 1. ¿Borrando una primera instrucción en bloque básico de LLVM IR?
- 2. Cómo manejar "último bloque incompleto en descifrado"
- 3. Hacer LLVM en línea una función desde una biblioteca
- 4. Identificar el bucle adjunto de un bloque en LLVM
- 5. retardo básico en la función jQuery .click
- 6. montaje LLVM: llamar a una función utilizando varargs
- 7. Kernel de Linux: obtenga el último bloque de memoria escrita
- 8. ¿Cómo funciona el encadenamiento básico de objeto/función en javascript?
- 9. Reenvío de argumentos en LLVM
- 10. generación binaria de LLVM
- 11. Ejemplo básico de pySQLite?
- 12. llvm-clang; nombres de función/variable que contienen caracteres unicode
- 13. Flujo básico de Struts
- 14. Obteniendo los operandos en una instrucción LLVM
- 15. Cómo deshabilitar una optimización en LLVM
- 16. MVT básico en Django
- 17. Cifrado básico en Android
- 18. Aprendizaje automático básico
- 19. Histograma básico en JFreeChart
- 20. LLVM enlace automático de C++
- 21. LLVM marcar la función como const y eliminar llamadas duplicadas
- 22. Auto vectorización en llvm
- 23. Multithreading en LLVM
- 24. -emit-llvm en Linux
- 25. Convertir la función al bloque Simulink
- 26. Función LLVM y C con struct como argumento
- 27. básico "crudo" Ajax llamada
- 28. LLVM - vinculación problema
- 29. Enhebrado básico
- 30. Obtener el último día del mes anterior en Oracle Función
¿Me puede dar un ejemplo de una función con más de un terminador de BBS? Incluso si hay retornos múltiples, debería haber un BB con una phi para "recoger" todas las BB de retorno, ¿no? – dalibocai
No, de hecho incluso hay un pase llamado UnifyFunctionExitNodes que hace exactamente lo que su nombre dice, es decir, deshacerse de múltiples salidas de una función – CAFxX
OK. Ya veo. ¡Gracias! – dalibocai