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]

[PATCH] Sign extension elimination, new implementation, part 1/N


Hello,

Following the "Exploiting dual mode operation, implementation" patch:
http://gcc.gnu.org/ml/gcc-patches/2005-06/msg01777.html
And the comments I received from Richard Henderson and Steven Bosscher
I present here a new implementation approach for the same general
idea.

The main differences from the previous implementation:
  1. This implementation addresses the general problem of sign
     extensions.  This means that it is designed to deal with 
     ZERO_EXTEND as well as SIGN_EXTEND, and with any extension mode 
     and not just extensions from SImode to DImode.
  2. In this implementation there are no hacks to the combiner, gcse
     or other part of the gcc, except for a small generalization of
     the union find tree of web.c
  3. The instruction stream is not changed until the last step of
     the pass.  This way the optimization could be aborted at any
     time before the last step.

At the beginning of the see.c file you can find a description of the
problem that this optimization addresses, an outline of the new
implementation and an example.

This patch contains the implementation of step 1 and part of step 2 as
described in the implementation outline section.

Comments on the implementation outline and on the code are welcomed.

Regression tests and SPEC2000 passed on powerpc64-suse-linux (POWER4).

Thanks,
Leehod.


Attachment: see_patch_18_8
Description: Binary data

Attachment: Changelog
Description: Binary data

Attachment: see.c
Description: Binary data


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