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