Hi, I have written notes on "GCC re-architecture BOF" presented at the Cauldron. I would be grateful if you would review it for me.
GCC re-architecture BOF Author: Andrew MacLeod This project is follow-up to GNU Tools Cauldron 2013 GCC re-architecture BOF, focused on better modularization of the code-base. Project Goals: 1) Controlled border between the front-end and middle-end Identify border for separation of front-end from back-end (where front-end hand overs GIMPLE to back-end). All components that interact across this border should have a well defined API. Implementation Strategy: a) Header file flattening: - No header file builds any other header file - .h has prototypes only for .c - analyze dependencies and rebuild proper component headers - move functions to appropriate places. b) Deforestation - replace tree with C++ wrapper class - doable but lot of churn with limited gain c) Types: - integrate with LTO type tables - push back to gimplification - LTO types become gimple types d) Decls - integrate with LTO symbol table - push back to gimplification - LTO symbols become GIMPLE symbols 2) Formalization of GIMPLE Second goal of this project is to formalize GIMPLE, and make it independent from the front-end. Following plan is sketched for GIMPLE formalization: - Removal of trees from GIMPLE and RTL - Creating debug API - Removing front-end hooks Formalizing GIMPLE shall have many advantages: - Easier to maintain code - Enhanced unit testing - Solves debug info issue for LTO - Textual streaming of LTO - Well defined interface for FE to generate IL c) Front-end IL generation more closer to source The third goal is to retain front-end information closer to source. This will help for easier debugging and better integration of source analysis tools with GCC. Required changes in FE: removal of folding and micro-optimizations. Thanks, Prathamesh