From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15836 invoked by alias); 12 Apr 2011 20:33:00 -0000 Received: (qmail 15827 invoked by uid 22791); 12 Apr 2011 20:32:59 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (38.113.113.100) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 12 Apr 2011 20:32:52 +0000 Received: (qmail 32030 invoked from network); 12 Apr 2011 20:32:51 -0000 Received: from unknown (HELO ?84.152.204.170?) (bernds@127.0.0.2) by mail.codesourcery.com with ESMTPA; 12 Apr 2011 20:32:51 -0000 Message-ID: <4DA4B67C.6020600@codesourcery.com> Date: Tue, 12 Apr 2011 20:33:00 -0000 From: Bernd Schmidt User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.15) Gecko/20110325 Lightning/1.0b3pre Thunderbird/3.1.9 MIME-Version: 1.0 To: GCC Patches CC: joel@gcc.gnu.org Subject: Fix PR47612 Content-Type: multipart/mixed; boundary="------------060109040907020603030701" Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2011-04/txt/msg00937.txt.bz2 This is a multi-part message in MIME format. --------------060109040907020603030701 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-length: 395 This fixes a problem on cc0 machines where we split a sequence of insns at a point where we shouldn't - between a cc0 setter and a cc0 user. The fix is simple enough; just make sure not to pick a cc0 setter as the end of such a sequence. The patch below was regression tested on m68k-rtems4.11 by Joel Sherrill; I'll commit it as obvious in a few days unless someone tells me it isn't. Bernd --------------060109040907020603030701 Content-Type: text/plain; name="dfp2.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="dfp2.diff" Content-length: 939 * df-problems.c (can_move_insns_across): Don't pick a cc0 setter as the last insn of the sequence to be moved. Index: df-problems.c =================================================================== --- df-problems.c (revision 172094) +++ df-problems.c (working copy) @@ -4001,7 +4001,10 @@ can_move_insns_across (rtx from, rtx to, if (bitmap_intersect_p (merge_set, test_use) || bitmap_intersect_p (merge_use, test_set)) break; - max_to = insn; +#ifdef HAVE_cc0 + if (!sets_cc0_p (insn)) +#endif + max_to = insn; } next = NEXT_INSN (insn); if (insn == to) @@ -4038,7 +4041,11 @@ can_move_insns_across (rtx from, rtx to, { if (NONDEBUG_INSN_P (insn)) { - if (!bitmap_intersect_p (test_set, local_merge_live)) + if (!bitmap_intersect_p (test_set, local_merge_live) +#ifdef HAVE_cc0 + && !sets_cc0_p (insn) +#endif + ) { max_to = insn; break; --------------060109040907020603030701--