Pergunta

Alguém tem experiência com LLVM , llvm-gcc , ou Clang ?

A idéia por trás llvm parece muito intrigante para mim e eu estou interessado em ver como ele se comporta. Eu só não quero despejar um monte de tempo em tentar as ferramentas se as ferramentas não estão prontos para a produção.

Se você tem experiência com as ferramentas, o que você acha deles? Quais as limitações grande você encontrou? Quais são os maiores benefícios?

Muito obrigado!

Foi útil?

Solução

Eu tive um jogo inicial em torno com LLVM e de trabalho através este tutorial esquerda me muito, muito animado com isso do potencial; a ideia de que eu posso usá-lo para construir um JIT em um aplicativo com relativa facilidade tem me alimentado.

Eu não tenho ido a uma profundidade suficiente para ser capaz de oferecer qualquer tipo de opinião úteis sobre suas limitações, estabilidade, desempenho e afins. Eu entendo que é bom em todos os aspectos, mas isso é puramente boatos.

Outras dicas

Eu não posso dizer suficiente coisas boas sobre LLVM. É tão fácil trabalhar com em comparação com outros projetos do compilador que eu olhei. Eu não sou um cara compilador, mas quando eu ficar frustrado com alguma limitação de LLVM ou clang é geralmente muito fácil de mergulhar e mudá-lo.

Nós (Nate Begeman, eu e alguns outros) escreveu o backend PPC sem experiência real no projeto de compiladores, mas parecia bastante simples que não-especialistas poderia abordá-lo. Estávamos bastante familiarizado com PPC montagem, mas ainda era bastante incrível que conseguimos obter LLVM-gcc Produzir código PPC dentro de algumas semanas de nosso tempo livre. Definitivamente um dos mais satisfazendo Olá Mundo é que eu já compilado.

Eu tenho jogado com LLVM e fora por muitos meses. Escrevi dois artigos OCaml Jornal cobrindo o uso de LLVM do OCaml linguagem de programação. Isso é particularmente interessante porque a linguagem OCaml é ideal para escrever compiladores e tem uma riqueza de poderoso e amadurecer ferramentas e bibliotecas para análise e assim por diante.

No geral, minha experiência tem sido extremamente positiva. LLVM faz o que diz na lata e é muito fácil de usar. O desempenho do código gerado é excelente. Um dos programas que escrevi foi um pouco simples Brainf compilador * ck que gera alguns dos executáveis ??mais rápidos de qualquer compilador eu testei (incluindo GCC).

Eu tenho apenas duas queixas com LLVM. Em primeiro lugar, ele usa abort () sempre que algo dá errado, em vez de gerar uma exceção. Esta foi uma decisão de projeto deliberado pelos seus autores que estão se esforçando para remover todos os usos de excepções LLVM mas torna impossível obter backtraces de OCaml ao tentar depurar um compilador que usa LLVM: seu programa apenas morre com uma explicação textual do LLVM mas nenhuma pista de onde o erro ocorreu em sua fonte. Em segundo lugar, biblioteca compilada da LLVM é monstruosamente grande (20Mb). Suponho que isso é devido ao inchaço incorridos pelo C ++, mas faz a compilação dolorosamente lento.

EDIT: Meu trabalho em LLVM culminou com a criação de uma máquina virtual de alto desempenho de alto nível de lixo coletado. download gratuito aqui e confira o correspondente benchmarks (wow!). @Alex:. Eu atendo compilador BF-se de você em algum lugar o mais rápido possível

Você perguntou sobre ferramentas e eu gostaria de mencionar que há plug-in LLVM para Eclipse CDT (para Windows, Linux e Mac). Ele integra LLVM muito bem para IDE e o usuário não precisa saber nada sobre LLVM. Pressionar o botão de construção é o suficiente para produzir .BC e arquivos executáveis ??(e arquivos intermediários no fundo não é visível para o usuário).

A versão mais recente está disponível através do site oficial de atualização do Eclipse: http://download.eclipse.org/releases / mars

É sob linguagens de programação e é chamado de "C / C ++ LLVM-Família Compiler construir o apoio".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top