This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: ix86_expand_setcc to clear + set strict_low_part
On Jan 10, 2000, Richard Henderson <rth@cygnus.com> wrote:
> On Mon, Jan 10, 2000 at 07:36:30AM -0200, Alexandre Oliva wrote:
>> * resource.c (find_basic_block): Get basic-block number from
>> NOTE_INSN_BASIC_BLOCKs.
> No. We went through this a month or two ago.
Sorry, I must have missed that discussion.
>> (mark_referenced_resources): Mark a set strict_low_part as used.
> This part is nearly ok, and will probably cure the problem all on its own.
Indeed, it seems to have done it. Is it ok to check in the following
revised patch?
Index: gcc/ChangeLog
from Alexandre Oliva <oliva@lsd.ic.unicamp.br>, Richard Henderson <rth@cygnus.com>
* resource.c (mark_referenced_resources): Mark a set strict_low_part
as used.
* config/i386/i386.c (ix86_expand_setcc): Re-enable clear + set
strict_low_part when possible.
Index: gcc/resource.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/resource.c,v
retrieving revision 1.23
diff -u -r1.23 resource.c
--- gcc/resource.c 2000/01/11 00:12:38 1.23
+++ gcc/resource.c 2000/01/11 23:30:14
@@ -272,7 +272,9 @@ mark_referenced_resources (x, res, inclu
mark_referenced_resources (SET_SRC (x), res, 0);
x = SET_DEST (x);
- if (GET_CODE (x) == SIGN_EXTRACT || GET_CODE (x) == ZERO_EXTRACT)
+ if (GET_CODE (x) == SIGN_EXTRACT
+ || GET_CODE (x) == ZERO_EXTRACT
+ || GET_CODE (x) == STRICT_LOW_PART)
mark_referenced_resources (x, res, 0);
else if (GET_CODE (x) == SUBREG)
x = SUBREG_REG (x);
Index: gcc/config/i386/i386.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/i386/i386.c,v
retrieving revision 1.118
diff -u -p -r1.118 i386.c
--- gcc/config/i386/i386.c 2000/01/04 14:44:03 1.118
+++ gcc/config/i386/i386.c 2000/01/10 09:34:23
@@ -4340,8 +4340,6 @@ ix86_expand_setcc (code, unordered, dest
*/
type = 0;
- /* %%% reload problems with in-out. Revisit. */
- type = 1;
if (GET_MODE (dest) == QImode)
type = 2;
--
Alexandre Oliva http://www.ic.unicamp.br/~oliva IC-Unicamp, Bra[sz]il
oliva@{lsd.ic.unicamp.br,guarana.{org,com}} aoliva@{acm,computer}.org
oliva@{gnu.org,kaffe.org,{egcs,sourceware}.cygnus.com,samba.org}
** I may forward mail about projects to mailing lists; please use them