Module Name:    src
Committed By:   skrll
Date:           Thu Jan 15 08:42:15 UTC 2015

Modified Files:
        src/external/gpl3/gcc/dist/gcc: ChangeLog rtlanal.c
        src/tools/gcc: gcc-version.mk

Log Message:
Fix gcc PR target/64479 [SH] wrong optimization delayed-branch


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/external/gpl3/gcc/dist/gcc/ChangeLog
cvs rdiff -u -r1.1.1.3 -r1.2 src/external/gpl3/gcc/dist/gcc/rtlanal.c
cvs rdiff -u -r1.2 -r1.3 src/tools/gcc/gcc-version.mk

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/gpl3/gcc/dist/gcc/ChangeLog
diff -u src/external/gpl3/gcc/dist/gcc/ChangeLog:1.10 src/external/gpl3/gcc/dist/gcc/ChangeLog:1.11
--- src/external/gpl3/gcc/dist/gcc/ChangeLog:1.10	Sat Jan 10 01:06:41 2015
+++ src/external/gpl3/gcc/dist/gcc/ChangeLog	Thu Jan 15 08:42:14 2015
@@ -1,3 +1,11 @@
+2015-01-13  Oleg Endo  <[email protected]>
+
+	Backport form mainline
+	2015-01-13  Oleg Endo  <[email protected]>
+
+	PR target/64479
+	* rtlanal.c (set_reg_p): Handle SEQUENCE constructs.
+
 2014-12-19  Release Manager
 
 	* GCC 4.8.4 released.

Index: src/external/gpl3/gcc/dist/gcc/rtlanal.c
diff -u src/external/gpl3/gcc/dist/gcc/rtlanal.c:1.1.1.3 src/external/gpl3/gcc/dist/gcc/rtlanal.c:1.2
--- src/external/gpl3/gcc/dist/gcc/rtlanal.c:1.1.1.3	Tue May 27 08:43:37 2014
+++ src/external/gpl3/gcc/dist/gcc/rtlanal.c	Thu Jan 15 08:42:14 2015
@@ -873,6 +873,17 @@ reg_set_between_p (const_rtx reg, const_
 int
 reg_set_p (const_rtx reg, const_rtx insn)
 {
+  /* After delay slot handling, call and branch insns might be in a
+     sequence.  Check all the elements there.  */
+  if (INSN_P (insn) && GET_CODE (PATTERN (insn)) == SEQUENCE)
+    {
+      for (int i = 0; i < XVECLEN (PATTERN (insn), 0); ++i)
+	if (reg_set_p (reg, XVECEXP (PATTERN (insn), 0, i)))
+	  return true;
+
+      return false;
+    }
+
   /* We can be passed an insn or part of one.  If we are passed an insn,
      check if a side-effect of the insn clobbers REG.  */
   if (INSN_P (insn)
@@ -884,7 +895,7 @@ reg_set_p (const_rtx reg, const_rtx insn
 					       GET_MODE (reg), REGNO (reg)))
 		  || MEM_P (reg)
 		  || find_reg_fusage (insn, CLOBBER, reg)))))
-    return 1;
+    return true;
 
   return set_of (reg, insn) != NULL_RTX;
 }

Index: src/tools/gcc/gcc-version.mk
diff -u src/tools/gcc/gcc-version.mk:1.2 src/tools/gcc/gcc-version.mk:1.3
--- src/tools/gcc/gcc-version.mk:1.2	Mon Oct 20 08:37:30 2014
+++ src/tools/gcc/gcc-version.mk	Thu Jan 15 08:42:14 2015
@@ -1,5 +1,5 @@
-#	$NetBSD: gcc-version.mk,v 1.2 2014/10/20 08:37:30 skrll Exp $
+#	$NetBSD: gcc-version.mk,v 1.3 2015/01/15 08:42:14 skrll Exp $
 
 # common location for tools and native build
 
-NETBSD_GCC_VERSION=nb1 20141012
+NETBSD_GCC_VERSION=nb2 20150115

Reply via email to