GCC-MELT is a high-level domain specific language that eases the development of plugin-like extensions for GCC, the Gnu Compiler Collection. These extensions can analyze or modify GCC internal representations, and can be used for static source code analysis, refactoring, specific warnings, optimizations, etc. The MELT language provides high-level features. Notably, MELT code is translated to C, and can even contain C code. It includes powerful pattern matching facilities and can manipulate dynamically typed values and raw GCC structures. It enables functional/applicative, object-oriented, reflective programming styles and has a familiar Lisp-like syntax.
| Tags | Compilers |
|---|---|
| Licenses | GPLv3+ |
| Operating Systems | Linux |
| Implementation | gcc Lisp Plugins |
Recent releases


Release Notes: The MELT plugin is available for GCC 4.6 and 4.7. Small MELT language improvement (macro-string syntax). Runtime improvements: handles SIGIO Unix signals with asynchronous input channels (experimental feature), and can be compiled with C++ (like GCC 4.7 often is). Library improvements: many more matchers and much more generated documentation to interface with GCC internals.


Release Notes: Several enhancements and bugfixes.


Release Notes: Language improvements. The ability to define a named value with the (DEFINE <name<expr>) construct. More support, notably for Gimple & Tree. More cmatchers, etc. have been added. Runtime improvements. Generation of timestamping C file foo+melttime.h included from generated descriptor file foo+meltdesc.c from foo.melt. Numerous bugfixes.


Release Notes: This release adds bugfixes and several new features: cloning of values, debugging closures, walking of SSA use-def chains, more support for Gimple and Tree, new MELT hooks for PLUGIN_FINISH_TYPE and PLUGIN_FINISH_DECL, new MELT hooks for other GCC plugin events, more runtime code generation, and additional translating MELT modes.


Release Notes: This release features variadic MELT functions, a variadic (DEBUG ...) macro, and variadic ADD2OUT functions. There are bugfixes and other improvements.