This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[tree-ssa]: Major SSAPRE Update
- From: Daniel Berlin <dberlin at dberlin dot org>
- To: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 26 Aug 2003 23:32:50 -0400
- Subject: [tree-ssa]: Major SSAPRE Update
This is a large update to SSAPRE.
It solves memory/performance problems, bugs, and some of the
implementation ugliness (there apparently will always be *some*
implementation ugliness in PRE, unfortunately. Try reading through
Open64's SSAPRE, for instance).
The function names for renaming now match that of open64 so you can at
least get some idea what code they are based on.
The code updates also make it easier to implement strength reduction
and load PRE.
As for performance/memory problems, we used to create one ephi-pred per
ephi operand, rather than one per block.
This is now changed. There are also still some pieces of low hanging
fruit i'll take care of.
Bootstrapped on x86-linux and powerpc-darwin.
Regtested on x86-linux
For the curious, the number of times this optimization applies
(remember a lot of optimizations are either blocked or already done by
the global redundancy elimination done by dom-opts) during a bootstrap
of gcc (not including the libraries, i'm just talking about gcc
itself):
Reloads:<x> means it made x replacements of a given expression.
101 Reloads:1
27 Reloads:2
10 Reloads:3
6 Reloads:4
3 Reloads:5
1 Reloads:8
2 Reloads:11
1 Reloads:12
1 Reloads:13
1 Reloads:17
I've attached the patch rather than inlined it because it's large (100k)
The changelog is at the top of the attachment, it's about 100 lines, so
i didn't include it here.
Diego, this fixes the perlbmk problem.
A followup patch to enable PRE by default will be coming next, followed
by load PRE.
--Dan
Attachment:
ssapre.diff
Description: Binary data