LLVM JIT编译器可以优化在运行时期时，程序所不需要的静态分支，这在一些部份求值（Partial Evaluation）的案例是相当有效，当程序有许多选项，在特定环境之下多数是可被判断为不需要的。这个特色被使用在Mac OS X Leopard（v10.5）底下OpenGL的管线，当硬件不支持某个功能时依然可以被成功地运作。OpenGL stack底下的绘图程序被编译为IF，接着在机器上运行时被编译，当系统拥有高级GPU时，这段程序会进行极少的修改并将传递指令给GPU，当系统拥有低级的GPU时，LLVM将会编译更多的程序，使这段GPU无法运行的指令，在本地端的中央处理器运行。LLVM增进了使用Intel GMA芯片等低端机器的性能。一个类似的系统发展于Gallium3D LLVMpipe，被合并进GNOME，使其可运行在没有GPU的环境。
llvm入门LLVM is a project which provides a collection of a modular compiler and toolchain software and technologies. The name “LLVM” is not an acronym that is different from other IT and Opensource ...
LLVM is a project which provides a collection of a modular compiler and toolchain software and technologies. The name “LLVM” is not an acronym that is different from other IT and Opensource projects. LLVM has started a research project at the University of Illinois in order to create a compiler and tool-chain which supports both static and dynamic compilation for different programming languages. Even different programming languages like C, C++, Java, C#, Kotlin, Delphi, Rust, Ruby are supported the most popular programming languages are C and C++ for the LLVM compiler and tool-chain.
(LLVM Hardware and Operating System Support)
As an opensource project LLVM is supported in different operating systems, platforms, and hardware. LLVM can run on Linux, Solaris, FreeBSD, NetBSD, MacOSX, Windows operating systems. LVVM also supports different hardware and processor architectures like x86, amd64, x86_64, PowerPC, V9, ARM. For more specific hardware and operating support take a look following table.
As stated in the start LLVM supports a wide range of programming languages to compile and bind. Even some programming languages are not fully supported by the LLVM we will list the supported programming languages and support level and supported features.
Objective-C is another completely supported programming language similar to the C and C++.
(LLVM Architecture and Components)
LLVM provides a complete architecture where there are different components and pieces to complete the picture. LLVM provides Front End, Passes, and Back End. The following graphic illustrates how the LLVM works on source code and generates executables and binaries.
Front End will take the source code and convert it to the intermediate representation or IR . This is a preparation process for the other steps and compiler where LLVM runs properly. Front End is nor the core part of the LLVM and generally auxiliary software or a tool like Clang is used.
Front End将获取源代码并将其转换为intermediate representation或IR 。 这是LLVM正常运行的其他步骤和编译器的准备过程。 前端也不是LLVM的核心部分，通常使用辅助软件或Clang之类的工具。
Gnu Compiler Collection or GCC is another popular and widely used opensource compiler project. Before the LLVM emerged the GCC was a defacto compiler for different for open source world. With the LLVM things started to change and with its advantages LLVM became popular too. Below we will compare the LLVM and GCC from different points of view.
Gnu Compiler Collection或GCC是另一个流行且广泛使用的开源编译器项目。 在LLVM出现之前，GCC是事实上的编译器，适用于不同的开源世界。 随着LLVM的发生，事物开始发生变化，而LLVM的优势也开始流行。 下面我们将从不同的角度比较LLVM和GCC。
GCC supports more traditional programming languages like Ada, Fortran, and Go than LLVM. 与LLVM相比，GCC支持更多的传统编程语言，例如Ada，Fortran和Go。
GCC supports more hardware and CPU architectures like RISC-V than LLVM. 与LLVM相比，GCC支持更多的硬件和CPU架构，例如RISC-V。
GCC supports more language extensions and assembly language features then LLVM. 与LLVM相比，GCC支持更多的语言扩展和汇编语言功能。
LLVM is used by emerging languages like Swift, Rust, Julia, and Ruby then GCC. Swift，Rust，Julia和Ruby，然后是GCC等新兴语言都使用LLVM。
LLVM complies with the C and C++ programming languages more strictly than GCC. LLVM比GCC更严格地遵循C和C ++编程语言。
LLVM provides more accurate and friendly diagnostics information than GCC. LLVM比GCC提供更准确，更友好的诊断信息。
We have installed required packages named llvm-10, llvm-10-tools, and clang. Now we will compile a simple hello world example with the LLVM as getting started example. The hello world application source code is provided below.
At least not in the binaries provided for LLVM 3.2 from the llvm.org website, nor when building LLVM with cmake. I worked around it when I was comping by copying the llvm files to a directory named ...