This is the mail archive of the gcc-patches@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]

[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



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