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

Reply via email to