This is the mail archive of the
mailing list for the GCC project.
Re: Comparison of GCC-4.9 and LLVM-3.4 performance on SPECInt2000 for x86-64 and ARM
- From: Vladimir Makarov <vmakarov at redhat dot com>
- To: Renato Golin <renato dot golin at linaro dot org>, Bingfeng Mei <bmei at broadcom dot com>
- Cc: Ramana Radhakrishnan <ramana dot radhakrishnan at arm dot com>, "gcc.gcc.gnu.org" <gcc at gcc dot gnu dot org>
- Date: Wed, 25 Jun 2014 10:00:58 -0400
- Subject: Re: Comparison of GCC-4.9 and LLVM-3.4 performance on SPECInt2000 for x86-64 and ARM
- Authentication-results: sourceware.org; auth=none
- References: <53A98705 dot 10909 at redhat dot com> <53A98CE2 dot 9080108 at arm dot com> <53A98F0A dot 7000802 at redhat dot com> <53A991D7 dot 6070709 at arm dot com> <53A993F8 dot 7030101 at redhat dot com> <B71DF1153024A14EABB94E39368E44A6042CE185 at SJEXCHMB13 dot corp dot ad dot broadcom dot com> <CAMSE1kdDrF1urKf5yeoou3Y_o2gf8Gk5CTWw4_i3_sCjaA54gg at mail dot gmail dot com>
On 2014-06-25, 5:32 AM, Renato Golin wrote:
On 25 June 2014 10:26, Bingfeng Mei <firstname.lastname@example.org> wrote:
Why is GCC code size so much bigger than LLVM? Does -Ofast have more unrolling
on GCC? It doesn't seem increasing code size help performance (164.gzip & 197.parser)
Is there comparisons for O2? I guess that is more useful for typical
My analysis wasn't as thorough as Vladimir's, but I found that GCC
wasn't eliminating some large blocks of dead code or inlining as much
as LLVM was.
That might be a consequence of difference in aliasing I wrote about.
I looked at the code generated by LLVM and GCC of an interpreter and
saw bigger code generated by GCC too.
A sequence of bytecodes execution and each bytecode checks types of
variables (small structure in memory) and set up values and types of
results variables. So GCC was worse to propagate the variable type info
(e.g. int) in the bytecode sequence execution where it would be possible
and remove unnecessary code (cases where other types, e.g. fp, is
processed). LLVM was more successful with this task.
I haven't dug deeper, though. Some of the differences
were quite big, I'd be surprised if it all can be explained by
unrolling loops and vectorization...