Hello All, It is my pleasure to announce the MELT plugin 0.9.2 release candidate 2
December XXth, 2011: Release of MELT plugin 0.9.2 for gcc-4.6 (& future gcc-4.7) dedicated to the memory of John McCarthy http://en.wikipedia.org/wiki/John_McCarthy_(computer_scientist) MELT is a high-level domain specific language to extend GCC (GPLv3 licensed, FSF oopyrighted) You can download the gzipped source tar archive, from http://gcc-melt.org/melt-0.9.2-rc2-plugin-for-gcc-4.6.tgz of size 4187181 bytes and md5sum fe8706fbcd5bfff8284d19776b5f75af (december 06tg=h 2011). It is extracted from MELT branch svn revision 182003. The version number 0.9.2 of the MELT plugin is unrelated to the version of the GCC compiler (4.6 or 4.7) for which it is supposed to work. Bug reports and patches are welcome (to the gcc-m...@googlegroups.com list). [[I've made a minor bug-fix in the Makefile w.r.t. to previous 0.9.2-rc1]] ############################### NEWS for MELT 0.9.2 Several bug fixes. New features: cloning of values ================= The CLONE_WITH_DISCRIMINANT primitive -whose implementation is mostly generated- enables creating new values, nearly clones of old ones. Usage is (clone_with_discriminant <old-value<new-discriminant>) If the new discriminant is compatible with the old value's discriminant, a new value is allocated. If it is not compatible nor not a discriminant, the old value is returned. In particular, it is possible to use (clone_with_discriminant (lambda ....) discr_debug_closure) to make a debugging closure. debugging closures ================== The DEBUG macro (and the underlying MELT_DEBUG_FUN which you should not use directly) handles closure with the DISCR_DEBUG_CLOSURE discriminant specially (somehow like C++ manipulators for ostream-s). If an argument is a debugging closure of exactly the DISCR_DEBUG_CLOSURE discriminant, the next argument is displayed using that debugging closure. Walking SSA use-def chains ========================== The primitives WALK_USE_DEF_CHAIN_BREADTH_FIRST & WALK_USE_DEF_CHAIN_DEPTH_FIRST enables to walk thru the use-def chains in SSA passes. More support notably for Gimple & Tree ====================================== Several functions, cmatchers, primitives have been defined, notably GIMPLE_ASSIGN_TO, WALK_USE_DEF_CHAIN_BREADTH_FIRST & WALK_USE_DEF_CHAIN_DEPTH_FIRST, EACHGIMPLEPHI_IN_BASICBLOCK New MELT hooks for PLUGIN_FINISH_TYPE & PLUGIN_FINISH_DECL ========================================================== MELT functions can be registered using REGISTER_FINISH_TYPE_HOOK_FIRST, REGISTER_FINISH_TYPE_HOOK_LAST, REGISTER_FINISH_DECL_HOOK_FIRST, REGISTER_FINISH_DECL_HOOK_LAST. The argument is a boxed tree value. The PLUGIN_FINISH_DECL don't exist in GCC 4.6 (only in GCC 4.7 and later). New MELT hooks for other events =============================== MELT functions can be register for PLUGIN_ALL_PASSES_START, PLUGIN_ALL_PASSES_END, PLUGIN_ALL_IPA_PASSES_START, PLUGIN_ALL_IPA_PASSES_END, PLUGIN_EARLY_GIMPLE_PASSES_START, PLUGIN_EARLY_GIMPLE_PASSES_END event using REGISTER_ALL_IPA_PASSES_END_HOOK_FIRST REGISTER_ALL_IPA_PASSES_END_HOOK_LAST REGISTER_ALL_IPA_PASSES_START_HOOK_FIRST REGISTER_ALL_IPA_PASSES_START_HOOK_LAST REGISTER_ALL_PASSES_END_HOOK_FIRST REGISTER_ALL_PASSES_END_HOOK_LAST REGISTER_ALL_PASSES_START_HOOK_FIRST REGISTER_ALL_PASSES_START_HOOK_LAST REGISTER_EARLY_GIMPLE_PASSES_END_HOOK_FIRST REGISTER_EARLY_GIMPLE_PASSES_END_HOOK_LAST REGISTER_EARLY_GIMPLE_PASSES_START_HOOK_FIRST REGISTER_EARLY_GIMPLE_PASSES_START_HOOK_LAST More runtime code generated =========================== More runtime code is generated internally. ################################################################ Bug reports and suggestions are always welcome on gcc-m...@googlegroups.com or on gcc@gcc.gnu.org. Patches are welcome on gcc-m...@googlegroups.com and on gcc-patc...@gcc.gnu.org with [MELT] tag. Regards. -- Basile STARYNKEVITCH http://starynkevitch.net/Basile/ email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359 8, rue de la Faiencerie, 92340 Bourg La Reine, France *** opinions {are only mines, sont seulement les miennes} ***