From: Hans-Peter Nilsson Date: Fri, 12 Dec 2003 14:01:40 +0000 (+0000) Subject: re PR target/13256 (strict_low_part mistreated in delay slots) X-Git-Tag: releases/gcc-3.3.3~200 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7688796445d92ceea96b605b35bb2725340b90e1;p=thirdparty%2Fgcc.git re PR target/13256 (strict_low_part mistreated in delay slots) PR target/13256 Backport from mainline: * resource.h (enum mark_resource_type): Remove member MARK_DEST. The only user changed as follows: * resource.c (mark_set_resources) : Always recurse for SET_SRC (x). : Always recurse on operands. : Delete, deferring to default code. From-SVN: r74570 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d91633ab986b..20f21cee0e46 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,15 @@ 2003-12-12 Hans-Peter Nilsson + PR target/13256 + Backport from mainline: + * resource.h (enum mark_resource_type): Remove member MARK_DEST. + The only user changed as follows: + * resource.c (mark_set_resources) : Always recurse for + SET_SRC (x). + : Always recurse on + operands. + : Delete, deferring to default code. + PR target/12598 Backport from mainline: * config/cris/cris.md (define_split "*mov_sidesi_biap_mem"+1) diff --git a/gcc/resource.c b/gcc/resource.c index a72dd9ce1a4f..f90342ddd66f 100644 --- a/gcc/resource.c +++ b/gcc/resource.c @@ -1,5 +1,5 @@ /* Definitions for computing resource usage of specific insns. - Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of GCC. @@ -624,7 +624,7 @@ find_dead_or_set_registers (target, res, jump_target, jump_count, set, needed) /* Given X, a part of an insn, and a pointer to a `struct resource', RES, indicate which resources are modified by the insn. If MARK_TYPE is MARK_SRC_DEST_CALL, also mark resources potentially - set by the called routine. If MARK_TYPE is MARK_DEST, only mark SET_DESTs + set by the called routine. If IN_DEST is nonzero, it means we are inside a SET. Otherwise, objects are being referenced instead of set. @@ -727,8 +727,7 @@ mark_set_resources (x, res, in_dest, mark_type) || GET_CODE (SET_SRC (x)) != CALL), mark_type); - if (mark_type != MARK_DEST) - mark_set_resources (SET_SRC (x), res, 0, MARK_SRC_DEST); + mark_set_resources (SET_SRC (x), res, 0, MARK_SRC_DEST); return; case CLOBBER: @@ -758,12 +757,9 @@ mark_set_resources (x, res, in_dest, mark_type) case SIGN_EXTRACT: case ZERO_EXTRACT: - if (! (mark_type == MARK_DEST && in_dest)) - { - mark_set_resources (XEXP (x, 0), res, in_dest, MARK_SRC_DEST); - mark_set_resources (XEXP (x, 1), res, 0, MARK_SRC_DEST); - mark_set_resources (XEXP (x, 2), res, 0, MARK_SRC_DEST); - } + mark_set_resources (XEXP (x, 0), res, in_dest, MARK_SRC_DEST); + mark_set_resources (XEXP (x, 1), res, 0, MARK_SRC_DEST); + mark_set_resources (XEXP (x, 2), res, 0, MARK_SRC_DEST); return; case MEM: @@ -810,13 +806,6 @@ mark_set_resources (x, res, in_dest, mark_type) } return; - case STRICT_LOW_PART: - if (! (mark_type == MARK_DEST && in_dest)) - { - mark_set_resources (XEXP (x, 0), res, 0, MARK_SRC_DEST); - return; - } - case UNSPEC_VOLATILE: case ASM_INPUT: /* Traditional asm's are always volatile. */ diff --git a/gcc/resource.h b/gcc/resource.h index fc2330c8e151..124cf9b21b81 100644 --- a/gcc/resource.h +++ b/gcc/resource.h @@ -37,8 +37,7 @@ struct resources enum mark_resource_type { MARK_SRC_DEST = 0, - MARK_SRC_DEST_CALL = 1, - MARK_DEST = 2 + MARK_SRC_DEST_CALL = 1 }; extern void mark_target_live_regs PARAMS ((rtx, rtx, struct resources *));