LLVM awalnya berarti "mesin virtual tingkat rendah", meskipun sekarang hanya berdiri untuk dirinya sendiri karena telah berkembang menjadi sesuatu selain mesin virtual tradisional. Ini adalah seperangkat pustaka dan alat, serta representasi perantara standar, yang dapat digunakan untuk membantu membangun kompiler dan kompiler just-in-time. Ia tidak dapat menyusun apa pun selain dari perwakilannya sendiri; diperlukan frontend khusus bahasa untuk melakukannya. Jika orang hanya merujuk ke LLVM, mereka mungkin berarti hanya perpustakaan dan alat tingkat rendah. Beberapa orang mungkin menyebut Dentang atau llvm-gcc secara tidak benar sebagai "LLVM", yang dapat menyebabkan kebingungan.
llvm-gcc adalah versi GCC yang dimodifikasi, yang menggunakan LLVM sebagai backend-nya dan bukan milik GCC. Sekarang sudah usang, mendukung DragonEgg, yang menggunakan sistem plugin baru GCC untuk melakukan hal yang sama tanpa forking GCC.
Dentang adalah kompiler C / C ++ / Objective-C yang sepenuhnya baru, yang menggunakan frontend sendiri, dan LLVM sebagai backend. Keuntungan yang diberikannya adalah pesan kesalahan yang lebih baik, waktu kompilasi yang lebih cepat, dan cara yang lebih mudah bagi alat-alat lain untuk terhubung ke proses kompilasi (seperti debugger LLDB dan analis statis Dentang ). Ini juga cukup modular, dan dapat digunakan sebagai pustaka untuk perangkat lunak lain yang perlu menganalisis C, C ++, atau kode Objective-C.
Masing-masing pendekatan ini (GCC biasa, GCC + LLVM, dan Dentang) memiliki kelebihan dan kekurangan masing-masing. Beberapa set tolok ukur terakhir yang saya lihat menunjukkan GCC untuk menghasilkan kode yang sedikit lebih cepat pada sebagian besar kasus uji (meskipun LLVM sedikit unggul dalam beberapa kasus), sementara LLVM dan Clang memberikan waktu kompilasi yang lebih baik secara signifikan. GCC dan GCC / LLVM combo memiliki keuntungan bahwa lebih banyak kode telah diuji dan bekerja pada rasa GCC dari C; ada beberapa ekstensi khusus kompiler yang hanya dimiliki GCC, dan beberapa tempat di mana standar memungkinkan penerapannya bervariasi tetapi kode tergantung pada satu implementasi tertentu. Ini jauh lebih mungkin jika Anda mendapatkan sejumlah besar kode C warisan yang akan bekerja di GCC daripada itu akan bekerja di Dentang, meskipun ini membaik seiring waktu.