,,LLVM ,,LLVM IS THE MOST INFLUENTIAL COMPILER INFRASTRUCTURE BUILT IN THE #BAST CENTURY A SET OF REUSABLE LIBRARIES FOR WRITING COMPILERS1 ANCHORED BY A SINGLE BEAUTIFULLY-DESIGNED INTERMEDIATE REPRESENTATION "<,,LLVM ,,IR"> THAT HAS BECOME THE DE FACTO LINGUA FRANCA FOR NEW PROGRAMMING LANGUAGES4 ,IT BEGAN AS ,CHRIS ,LATTNER'S #BJJJ MASTER'S PROJECT AT THE ,UNIVERSITY OF ,ILLINOIS ,URBANA-,CHAMPAIGN THE NAME ORIGINALLY STOOD FOR 8,LOW ,LEVEL ,VIRTUAL ,MACHINE10 THOUGH THE PROJECT FORMALLY RETIRED THE ACRONYM IN #BJAA BECAUSE IT HAD LONG SINCE STOPPED BEING A VIRTUAL MACHINE4 ,APPLE HIRED ,LATTNER IN #BJJE AND ADOPTED ,,LLVM AS THE TOOLCHAIN FOR ,MAC ,,OS ;,X AND THEN THE I,PHONE2 THE STAKES COULD NOT HAVE BEEN HIGHER1 AND THE BET PAID OFF4 ,THE CLEAREST EVIDENCE OF ,,LLVM'S DESIGN SUCCESS3 "9"9,RUST'S COMPILER .*RUSTC.* IS WRITTEN IN ,RUST AND TARGETS ,,LLVM ,,IR"9"91 MEANING ,RUST A LANGUAGE DESIGNED DECADES AFTER ,,LLVM BOOTSTRAPS ITSELF THROUGH AN INFRASTRUCTURE THAT PREDATES IT4 ,THE SAME IS TRUE OF ,ZIG1 ,SWIFT1 ,JULIA1 AND DOZENS OF OTHER LANGUAGES THAT DID NOT EXIST WHEN ,,LLVM ,,IR WAS DESIGNED4 ,THE ,,IR IS THE PRODUCT ,,LLVM'S CENTRAL CONTRIBUTION IS NOT ANY SINGLE COMPILER BUT ,,LLVM ,,IR A STRONGLY-TYPED1 ,,SSA-FORM " INTERMEDIATE REPRESENTATION THAT SITS EXACTLY BETWEEN 8HIGH ENOUGH TO OPTIMIZE PORTABLY0 AND 8LOW ENOUGH TO MAP DIRECTLY TO MACHINE INSTRUCTIONS40 ,AN ,,LLVM ,,IR FUNCTION LOOKS LIKE ANNOTATED ASSEMBLY3 .0SUM "7 ADD I#CB .0A1 .0B .0CMP "7 ICMP SGT I#CB .0SUM1 #AJJ BR I#A .0CMP1 LABEL .0BIG1 LABEL .0SMALL ,THE ,,IR IS WHAT YOU ARE WRITING WHEN YOU TARGET ,,LLVM3 A LANGUAGE FRONT END "<,CLANG FOR ,C"6"61 RUSTC FOR ,RUST1 A TOY COMPILER FOR A WEEKEND LANGUAGE"> EMITS ,,IR1 ,,LLVM'S @9#BJJ COMPOSABLE OPTIMIZATION PASSES TRANSFORM IT1 AND A BACKEND LOWERS IT TO X#HF-#FD1 ,,ARM#FD1 ,,RISC-;,V1 ,,WASM1 ,,AMDGPU1 ,,PTX "<,,NVIDIA ,,GPU">1 OR ANY OF THE OTHER TARGETS ,,LLVM SHIPS4 ,BECAUSE THE ,,IR IS A STABLE1 DOCUMENTED FORMAT NOT AN INTERNAL IMPLEMENTATION DETAIL ANY PROJECT CAN EMIT IT AND IMMEDIATELY GAIN WORLD-CLASS OPTIMIZATION AND THIRTY MACHINE BACKENDS4 ,THAT IS THE DEAL THAT MADE ,,LLVM DOMINANT3 WRITE A FRONT END1 GET AN OPTIMIZER AND A CODE GENERATOR FOR FREE4 ,WHAT RUNS ON IT ,THE LIST OF PRODUCTION COMPILERS BUILT ON ,,LLVM READS LIKE A WHO'S WHO OF MODERN LANGUAGES3 - ,CLANG ;,C1 ,C"6"61 ,OBJECTIVE-;,C4 ,,LLVM'S ORIGINAL FRONT END2 THE DEFAULT ON ,APPLE PLATFORMS1 ,ANDROID ,,NDK1 AND ,FREE,B,S,D2 FAMOUS FOR DIAGNOSTICS THAT ACTUALLY NAME THE MISTAKE4 - RUSTC THE ,RUST COMPILER4 ,EVERY CARGO BUILD IN THE WORLD LOWERS ,,MIR ,,LLVM ,,IR MACHINE CODE4 - ,SWIFT ,APPLE'S LANGUAGE COMPILES THROUGH ITS OWN ,,SIL FIRST1 THEN ,,LLVM ,,IR4 - ,ZIG EMBEDS ,CLANG AS ITS ,C_/,C"6"6 FRONT END AND USES ,,LLVM FOR CODE GENERATION2 ZIG CC IS A FULL ,C_/,C"6"6 COMPILER WITH THE BEST CROSS-COMPILATION ,,UX IN THE INDUSTRY4 - ,JULIA COMPILES NUMERICAL CODE THROUGH ,,LLVM TO ACHIEVE 8,PYTHON SYNTAX1 ;,C SPEED40 - FLANG THE MODERN ,,LLVM ,FORTRAN FRONT END "4 - LDC THE ;,D LANGUAGE COMPILER4 - ,EMSCRIPTEN THE ,,LLVM,WEB,ASSEMBLY BRIDGE THAT MADE ,C_/,C"6"6 RUNNABLE IN BROWSERS4 - ,,NVCC ,,NVIDIA'S ,,CUDA COMPILER IS ,CLANG-BASED ON THE FRONT END4 - ,,MLIR ,,LLVM'S OWN NEXT-GENERATION MULTI-LEVEL ,,IR1 BUILT FOR ,,AI ACCELERATORS AND DOMAIN-SPECIFIC COMPILERS4 ,,LLVM VS ,,GCC THE DESIGN SPLIT ,THE COMPARISON WITH ,,GCC IS INSTRUCTIVE3 ,,LLVM ,,GCC ,DESIGN LIBRARIES "6 COMPOSABLE PASSES MONOLITHIC COMPILER ,,IR SINGLE STABLE ,,SSA ,,IR1 DOCUMENTED TWO INTERNAL ,I,RS "<,,GIMPLE1 ,,RTL"> ,LICENSE ,APACHE #B4J " ,G,P,LV#C ,NEW-LANGUAGE ADOPTION NEARLY UNIVERSAL RARE ,EMBEDDED_/,,GPU TARGETS STRONG "<,,WASM1 ,,AMDGPU1 ,,PTX"> STRONG ON EXOTIC ,C,P,US ,DIAGNOSTICS DESIGNED-IN CLARITY IMPROVED BUT OLDER ,THE DEEPEST DIFFERENCE IS ARCHITECTURAL3 ,,GCC GREW AS A COMPILER THAT GAINED FRONT ENDS2 ,,LLVM WAS DESIGNED FROM THE START AS A TOOLKIT FOR BUILDING COMPILERS4 ,,LLVM'S OPTIMIZER PASSES1 ITS ,,IR PARSER1 ITS ,,JIT ENGINE "<,,ORC ,,JIT1 SUCCESSOR TO ,,MCJIT">1 ITS LINKER "<,,LLD">1 ITS DEBUGGER "<,,LLDB">1 ITS ,C"6"6 STANDARD LIBRARY "1 AND ITS RUNTIME " ARE ALL SEPARATE REUSABLE COMPONENTS YOU CAN LINK A ,,JIT COMPILER INTO YOUR APPLICATION IN #BJJ LINES OF ,C"6"64 ,,GCC STILL WINS ON EXOTIC EMBEDDED TARGETS " AND IS THE REFERENCE TOOLCHAIN FOR THE ,LINUX KERNEL AND CERTIFIED ,ADA2 ,,LLVM WINS EVERYWHERE A NEW LANGUAGE1 A NEW HARDWARE TARGET1 OR A BROWSER IS INVOLVED4 ,THEY COEXIST3 MOST ,LINUX SYSTEMS INSTALL BOTH4 ,THE ,,JIT ANGLE ,,LLVM IS ALSO A JUST-IN-TIME COMPILATION ENGINE4 ,ITS ,,ORC ,,JIT LETS A RUNNING PROGRAM COMPILE ,,LLVM ,,IR TO NATIVE CODE ON THE FLY WHICH IS HOW ,JULIA GETS 8COMPILED0 SPEED WITHOUT A SEPARATE BUILD STEP1 HOW SOME DATABASE ENGINES COMPILE QUERIES INTO MACHINE CODE1 HOW SHADER LANGUAGES COMPILE ON THE FLY INSIDE ,,GPU DRIVERS1 AND HOW INTERPRETED LANGUAGES EMBED A 8COMPILER ESCAPE HATCH40 ,,MLIR THE SUCCESSOR IN PROGRESS ,INSIDE ,,LLVM ITSELF A NEWER PROJECT1 ,,MLIR "<,MULTI-,LEVEL ,INTERMEDIATE ,REPRESENTATION">1 IS EXTENDING THE ,,LLVM PHILOSOPHY TO PROBLEMS ,,LLVM ,,IR CAN'T EXPRESS CLEANLY3 TENSOR OPERATIONS FOR ,,AI HARDWARE1 DOMAIN-SPECIFIC COMPILERS1 HARDWARE SYNTHESIS4 ,,MLIR IS WHERE MUCH OF THE INDUSTRY'S NEW COMPILER RESEARCH IS HAPPENING ,GOOGLE'S ,T,P,US1 ,APPLE'S ,,ML ACCELERATORS1 AND THE ,,AI-STACK COMPILERS "<,,XLA1 ,TORCH-,,MLIR1 ,,IREE"> ARE ,,MLIR-BASED4 ,SEE ALSO - ,COMPILERS THE TOOLCHAIN FAMILIES COMPARED - ,,GCC THE ELDER AND RIVAL - ,CLANG ,,LLVM'S ,C_/,C"6"6 FRONT END - ,RUST " ,SWIFT ,ZIG ,,LLVM-NATIVE LANGUAGES - ,ADA,LOGIC ,,BASIC ,,ALB'S ,,FASM BACKEND BYPASSES ,,LLVM ENTIRELY2 THE ;,C BACKEND FEEDS ,CLANG_/,,GCC - ,JAVA ,VIRTUAL ,MACHINE THE OTHER GREAT ,,IR PLATFORM ,REFERENCES #A4 ,LATTNER1 ,CHRIS1 AND ,VIKRAM ,ADVE4 8,,LLVM3 ,A ,COMPILATION ,FRAMEWORK FOR ,LIFELONG ,PROGRAM ,ANALYSIS @& ,TRANSFORMATION40 ,INTERNATIONAL ,SYMPOSIUM ON ,CODE ,GENERATION AND ,OPTIMIZATION "<,,CGO #BJJD"> THE FOUNDATIONAL PAPER4 #B4 LLVM4ORG DOCUMENTATION1 ,,IR REFERENCE1 PASS LIST4 #C4 ,LATTNER1 ,CHRIS4 8,,LLVM0 CHAPTER IN ,THE ,ARCHITECTURE OF ,OPEN ,SOURCE ,APPLICATIONS "<#BJAA">4 #D4 ,CLANG DOCUMENTATION CLANG4LLVM4ORG4 #E4 ,EMSCRIPTEN DOCUMENTATION EMSCRIPTEN4ORG4