Pregunta

¿Alguien tiene experiencia con LLVM , llvm-gcc , o Clang ?

La idea detrás de llvm me parece muy interesante y me interesa ver cómo funciona. Simplemente no quiero dedicar mucho tiempo a probar las herramientas si las herramientas no están listas para la producción.

Si tienes experiencia con las herramientas, ¿qué piensas de ellas? ¿Qué limitaciones principales has encontrado? ¿Cuáles son los mayores beneficios?

¡Muchas gracias!

¿Fue útil?

Solución

He jugado por primera vez con LLVM y he trabajado en este tutorial izquierda yo muy entusiasmado con su potencial; La idea de que puedo usarlo para integrar un JIT en una aplicación con relativa facilidad me ha entusiasmado.

No he profundizado lo suficiente como para poder ofrecer algún tipo de opinión útil sobre sus limitaciones, estabilidad, rendimiento y demás. Entiendo que es bueno en todos los aspectos, pero eso es puramente de rumores.

Otros consejos

No puedo decir lo suficiente sobre LLVM. Es tan fácil trabajar con él en comparación con otros proyectos de compilación que he visto. No soy un compilador, pero cuando me frustro con alguna limitación de LLVM o de un chirrido, normalmente es muy fácil sumergirse y cambiarlo.

Nosotros (Nate Begeman, yo mismo y algunos otros) escribimos el backend de PPC sin experiencia real en el diseño de compiladores, pero parecía lo suficientemente simple como para que los no expertos pudieran abordarlo. Estábamos bastante familiarizados con el ensamblaje de PPC, pero aún así era bastante increíble que logramos que LLVM-gcc emitiera código PPC en unas pocas semanas de nuestro tiempo libre. Definitivamente, uno de los Hello World más satisfactorios que he compilado.

He estado jugando con LLVM por muchos meses. Escribí dos artículos de OCaml Journal que cubren el uso de LLVM en lenguaje de programación OCaml . Esto es particularmente interesante porque el lenguaje OCaml es ideal para escribir compiladores y tiene una gran cantidad de herramientas y bibliotecas poderosas y maduras para analizar, etc.

En general, mi experiencia ha sido extremadamente positiva. LLVM hace lo que dice en la lata y es muy fácil de usar. El rendimiento del código generado es excelente. Uno de los programas que escribí fue un pequeño y sencillo compilador de Brainf * ck que genera algunos de los ejecutables más rápidos de cualquier compilador que probé (incluido GCC).

Sólo tengo dos quejas con LLVM. En primer lugar, utiliza abort () cuando algo sale mal en lugar de generar una excepción. Esta fue una decisión de diseño deliberada por parte de sus autores que se esfuerzan por eliminar todos los usos de las excepciones de LLVM, pero hace que sea imposible obtener backtraces de OCaml al intentar depurar un compilador que usa LLVM: su programa simplemente muere con una explicación textual de LLVM pero no hay idea de dónde ocurrió el error en su fuente. En segundo lugar, la biblioteca compilada de LLVM es monstruosamente grande (20Mb). Supongo que esto se debe a la gran cantidad de incidencias provocadas por C ++, pero hace que la compilación sea dolorosamente lenta.

EDITAR: Mi trabajo en LLVM culminó con la creación de una máquina virtual de alto nivel de recolección de basura de alto nivel. Descargue gratuitamente aquí y consulte el benchmarks (¡guau!). @Alex: Haré que ese compilador BF se encuentre en algún lugar lo antes posible.

Usted preguntó acerca de las herramientas y me gustaría mencionar que hay un complemento LLVM para Eclipse CDT (para Windows, Linux y Mac). Integra LLVM muy bien con IDE y el usuario no necesita saber nada sobre LLVM. Presionar el botón de compilación es suficiente para producir archivos .bc y ejecutables (y los archivos intermedios en el fondo no son visibles para el usuario).

La última versión está disponible a través del sitio oficial de actualización de Eclipse: http://download.eclipse.org/releases / marte

Se encuentra en Lenguajes de programación y se denomina " Compatibilidad de compilación de compilador de familia C / C ++ + " ;.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top