[GNU Tools Cauldron 2014] GCC Re-architecture BOF
Prathamesh Kulkarni
bilbotheelffriend@gmail.com
Tue Aug 5 14:21:00 GMT 2014
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
More information about the Gcc
mailing list