Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/libfirm/libfirm
graph based intermediate representation and backend for optimising compilers
https://github.com/libfirm/libfirm
backend c compiler graph libfirm optimization ssa
Last synced: 10 days ago
JSON representation
graph based intermediate representation and backend for optimising compilers
- Host: GitHub
- URL: https://github.com/libfirm/libfirm
- Owner: libfirm
- License: lgpl-2.1
- Created: 2009-04-22T02:18:44.000Z (over 15 years ago)
- Default Branch: master
- Last Pushed: 2023-11-03T23:49:21.000Z (about 1 year ago)
- Last Synced: 2024-04-10T05:27:59.896Z (7 months ago)
- Topics: backend, c, compiler, graph, libfirm, optimization, ssa
- Language: C
- Homepage: http://libfirm.org
- Size: 39.8 MB
- Stars: 448
- Watchers: 28
- Forks: 48
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: COPYING
- Support: support/libfirm.pc.in
Awesome Lists containing this project
README
libFirm -- A graph based SSA intermediate representation
========================================================Introduction
------------The Firm library implements the Firm intermediate representation (ir).
You can find an old description of Firm in [TLB:99].libFirm contains algorithms for construction of the SSA form directly from the
attributed syntax tree. A set of analyses and optimization phases is provided.
This version includes a complete backend for the IA32 and SPARC architecture,
as well as unfinished backends for MIPS, ARM, and AMD64.Building and Installation
-------------------------Prerequisites for the build:
* Python (>=3.5 are supported)
* Perl
* an ANSI C99 compiler (gcc, clang, icc are known to work)
* Git### Building with make
Just type 'make' in the source directory. The results are put into a
directory called "build". You can override the existing preprocessor, compiler
and linker flags by creating a 'config.mak' file.### Building with cmake
libFirm has an additional cmake build system. CMake is a more complex build
system than the make based one and most libFirm developers do not use it.
However it can adapt the compiler and linker flags to build shared libraries
for a wider range of systems, provides an installation target and is often more
familiar for people preparing packages for distribution.Repository Structure
--------------------```
include/libfirm/ # public API
ir/ # nearly all the code
ir/adt/ # containers and other generic data types
ir/ana/ # analysis (for optimizations)
ir/be/ # backends (x86, sparc, amd64, etc)
ir/common/ # utility stuff
ir/ident/ # identifier data structure
ir/ir/ # core data types of intermediate representation
ir/kaps/ # PBQP solver
ir/libcore/ # utility stuff
ir/lower/ # lowering phases from high-level to low-level mechanisms
ir/lpp/ # interface for external ILP solvers
ir/obstack/ # arena memory allocator
ir/opt/ # optimization phases
ir/stat/ # statistics
ir/tr/ # type representation
ir/tv/ # target values (architecture-independent arithmetic)
scripts/ # generator scripts, firm node specification
unittests/ # unittests
build/ # build system generates stuff here
```Further Information and Contact
-------------------------------Official website: http://libfirm.org/
Contact E-Mail: [email protected]
Mailing list: https://lists.ira.uni-karlsruhe.de/mailman/listinfo/firm
Bugtracker: http://pp.ipd.kit.edu/~firm/bugs
Internet relay chat: `#firm` on `irc.libera.chat`