This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [gnat] reuse of ASTs already constructed


At http://gcc.gnu.org/ml/gcc/2012-06/msg00332.html,
Arnaud Charlet wrote:

> > In multi source compilations, main units may get assigned different
> > unit numbers than in single source compilations; this is due to the
> > reuse of entries in the Lib.Units table.
> > 
> > Is that tolerable?
> 
> You'd need to check whether the IDEs (in particular GPS) will not have
> troubles with this.

It turns out that in this case, my analysis was incorrect.
The reason for the different unit numbers in 'X' lines is that a few
dependencies ('D' lines) are missing. I will look into that soon.

Meanwhile, I have made some comparisons between single and multi
file compilations. For a package hierarchy consisting of 262 specs
totalling 82164 SLOC and 77 bodies totalling 135771 SLOC, compiling
the bodies yields the following results.

1. many gnat1 invocations without Ada syntax tree sharing

time gcc -S *.adb
real    9m12.159s
user    4m59.391s
sys     0m7.061s

time gcc -S -g *.adb
real    9m59.429s
user    8m57.776s
sys     0m5.750s

2. single gnat1 invocation with Ada syntax tree sharing

time gcc -multi -S *.adb
real    4m22.915s
user    3m34.466s
sys     0m2.900s

time gcc -multi -S -g *.adb
real    7m16.770s
user    6m29.554s
sys     0m2.711s

I have not been able to compare optimizing compilation due
to a crash in multi mode when using the -O switch.
(Right now I'm still concentrating on the front end, and I will
look into that later.)

The comparison was done using the attached patch which is
against gcc/trunk r177548 of 2011-08-07.

-- Oliver

Attachment: gnat1_multi_source_compile-5.diff.gz
Description: GNU Zip compressed data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]