Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
LLVM
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
===Frontends=== LLVM was originally written to be a replacement for the extant [[Code generation (compiler)|code generator]] in the GCC stack,<ref>{{cite conference |last1=Lattner |first1=Chris |author1-link=Chris Lattner |last2=Adve |first2=Vikram |author2-link=Vikram Adve |title=Architecture For a Next-Generation GCC |url=http://llvm.org/pubs/2003-05-01-GCCSummit2003.html |conference=First Annual GCC Developers' Summit |date=May 2003 |access-date=September 6, 2009}}</ref> and many of the GCC frontends have been modified to work with it, resulting in the now-defunct LLVM-GCC suite. The modifications generally involve a [[GIMPLE]]-to-LLVM IR step so that LLVM optimizers and codegen can be used instead of GCC's GIMPLE system. Apple was a significant user of LLVM-GCC through [[Xcode]] 4.x (2013).<ref>{{cite web |title=LLVM Compiler Overview |url=https://developer.apple.com/library/archive/documentation/CompilerTools/Conceptual/LLVMCompilerOverview/index.html |website=developer.apple.com}}</ref><ref>{{cite web|url=https://developer.apple.com/library/archive/documentation/Xcode/Conceptual/RN-Xcode-Archive/Chapters/xc5_release_notes.html|title=Xcode 5 Release Notes|work=Apple Inc.}}</ref> This use of the GCC frontend was considered mostly a temporary measure, but with the advent of [[Clang]] and advantages of LLVM and Clang's modern and modular codebase (as well as compilation speed), is mostly obsolete. LLVM currently{{as of?|date=March 2023}} supports compiling of [[Ada (programming language)|Ada]], [[C (programming language)|C]], [[C++]], [[D (programming language)|D]], [[Delphi (software)|Delphi]], [[Fortran]], [[Haskell]], [[Julia (programming language)|Julia]], [[Objective-C]], [[Rust (programming language)|Rust]], and [[Swift (programming language)|Swift]] using various [[Semantic analysis (compilers)|frontends]]. Widespread interest in LLVM has led to several efforts to develop new frontends for many languages. The one that has received the most attention is Clang, a newer compiler supporting C, C++, and Objective-C. Primarily supported by Apple, Clang is aimed at replacing the C/Objective-C compiler in the GCC system with a system that is more easily integrated with [[integrated development environment]]s (IDEs) and has wider support for [[Thread (computing)|multithreading]]. Support for [[OpenMP]] directives has been included in [[Clang]] since release 3.8.<ref>{{cite web | url = http://llvm.org/releases/3.8.0/tools/clang/docs/ReleaseNotes.html#openmp-support-in-clan | title = Clang 3.8 Release Notes | access-date = August 24, 2016}}</ref> The [[Utrecht University|Utrecht]] [[Haskell]] compiler can generate code for LLVM. While the generator was in early stages of development, in many cases it was more efficient than the C code generator.<ref>{{cite web | url = http://www.cs.uu.nl/wiki/bin/view/Stc/CompilingHaskellToLLVM | title = Compiling Haskell To LLVM | access-date = February 22, 2009}}</ref> The [[Glasgow Haskell Compiler]] (GHC) backend uses LLVM and achieves a 30% speed-up of compiled code relative to native code compiling via GHC or C code generation followed by compiling, missing only one of the many optimizing techniques implemented by the GHC.<ref>{{cite web | url = http://blog.llvm.org/2010/05/glasgow-haskell-compiler-and-llvm.html | title = LLVM Project Blog: The Glasgow Haskell Compiler and LLVM | date = May 17, 2010 | access-date = August 13, 2010}}</ref> Many other components are in various stages of development, including, but not limited to, the [[Rust (programming language)|Rust]] compiler, a [[Java bytecode]] frontend, a [[Common Intermediate Language]] (CIL) frontend, the [[MacRuby]] implementation of Ruby 1.9, various frontends for [[Standard ML]], and a new [[graph coloring]] register allocator.{{citation needed|date=June 2012}}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)