[gcc/f14/master] 4.5.0-4

Jakub Jelinek jakub at fedoraproject.org
Fri Jul 30 15:08:58 UTC 2010


commit e409bbf1b09aa26a55d3b0ca13d36226019b32c4
Author: Jakub Jelinek <jakub at tyan-ft48-01.lab.bos.redhat.com>
Date:   Fri Jul 30 17:10:43 2010 +0200

    4.5.0-4

 .gitignore           |    1 +
 gcc.spec             |   30 ++++--
 gcc45-build-id.patch |   52 -----------
 gcc45-pr44542.patch  |   49 ----------
 gcc45-pr44942.patch  |  192 --------------------------------------
 gcc45-pr45055.patch  |  248 ++++++++++++++++++++++++++++++++++++++++++++++++++
 sources              |    2 +-
 7 files changed, 269 insertions(+), 305 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index c0fa8f7..0bb1d47 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
 fastjar-0.97.tar.gz
 gcc-4.5.0-20100716.tar.bz2
+gcc-4.5.0-20100730.tar.bz2
diff --git a/gcc.spec b/gcc.spec
index 8c7a42a..f04313b 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1,9 +1,9 @@
-%global DATE 20100716
-%global SVNREV 162258
+%global DATE 20100730
+%global SVNREV 162712
 %global gcc_version 4.5.0
 # Note, gcc_release must be integer, if you want to add suffixes to
 # %{release}, append them after %{gcc_release} on Release: line.
-%global gcc_release 3
+%global gcc_release 4
 %global _unpackaged_files_terminate_build 0
 %global multilib_64_archs sparc64 ppc64 s390x x86_64
 %ifarch %{ix86} x86_64 ia64 ppc ppc64 alpha
@@ -143,7 +143,6 @@ Requires(preun): /sbin/install-info
 AutoReq: true
 
 Patch0: gcc45-hack.patch
-Patch1: gcc45-build-id.patch
 Patch2: gcc45-c++-builtin-redecl.patch
 Patch4: gcc45-java-nomulti.patch
 Patch5: gcc45-ppc32-retaddr.patch
@@ -157,8 +156,7 @@ Patch12: gcc45-cloog-dl.patch
 Patch14: gcc45-pr38757.patch
 Patch15: gcc45-libstdc++-docs.patch
 Patch17: gcc45-no-add-needed.patch
-Patch18: gcc45-pr44542.patch
-Patch19: gcc45-pr44942.patch
+Patch18: gcc45-pr45055.patch
 
 Patch1000: fastjar-0.97-segfault.patch
 Patch1001: fastjar-0.97-len1.patch
@@ -471,7 +469,6 @@ GNAT is a GNU Ada 95 front-end to GCC. This package includes static libraries.
 %prep
 %setup -q -n gcc-%{version}-%{DATE}
 %patch0 -p0 -b .hack~
-%patch1 -p0 -b .build-id~
 %patch2 -p0 -b .c++-builtin-redecl~
 %patch4 -p0 -b .java-nomulti~
 %patch5 -p0 -b .ppc32-retaddr~
@@ -489,8 +486,7 @@ GNAT is a GNU Ada 95 front-end to GCC. This package includes static libraries.
 %patch15 -p0 -b .libstdc++-docs~
 %endif
 %patch17 -p0 -b .no-add-needed~
-%patch18 -p0 -b .pr44542~
-%patch19 -p0 -b .pr44942~
+%patch18 -p0 -b .pr45055~
 
 # This testcase doesn't compile.
 rm libjava/testsuite/libjava.lang/PR35020*
@@ -512,7 +508,7 @@ echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
 
 # Default to -gdwarf-3 rather than -gdwarf-2
 sed -i '/UInteger Var(dwarf_version)/s/Init(2)/Init(3)/' gcc/common.opt
-sed -i 's/\(may be either 2 or 3; the default version is \)2\./\13./' gcc/doc/invoke.texi
+sed -i 's/\(may be either 2, 3 or 4; the default version is \)2\./\13./' gcc/doc/invoke.texi
 
 cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h
 
@@ -632,7 +628,7 @@ CC="$CC" CFLAGS="$OPT_FLAGS" CXXFLAGS="`echo $OPT_FLAGS | sed 's/ -Wall / /g'`"
 	--with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap \
 	--enable-shared --enable-threads=posix --enable-checking=release \
 	--with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \
-	--enable-gnu-unique-object \
+	--enable-gnu-unique-object --enable-linker-build-id \
 %if !%{build_ada}
 	--enable-languages=c,c++,objc,obj-c++,java,fortran,lto \
 %else
@@ -1962,6 +1958,18 @@ fi
 %endif
 
 %changelog
+* Fri Jul 30 2010 Jakub Jelinek <jakub at redhat.com> 4.5.0-4
+- update from gcc-4_5-branch
+  - PRs c++/43016, c++/44996, c++/45008, c/45079, debug/45015, fortran/30668,
+	fortran/31346, fortran/34260, fortran/40011, testsuite/38946,
+	tree-optimization/44900, tree-optimization/44977
+  - fix vectorizer ICE (#6617492, PR tree-optimization/45047)
+- use --enable-linker-build-id in configury instead of patching
+  --build-id support in
+- VTA backports
+  - PRs debug/45055, rtl-optimization/45137, debug/45003,
+	debug/45006, bootstrap/45028
+
 * Fri Jul 16 2010 Jakub Jelinek <jakub at redhat.com> 4.5.0-3
 - update from gcc-4_5-branch
   - PRs ada/43731, fortran/44773, pch/14940, testsuite/44325
diff --git a/gcc45-pr45055.patch b/gcc45-pr45055.patch
new file mode 100644
index 0000000..8465ccb
--- /dev/null
+++ b/gcc45-pr45055.patch
@@ -0,0 +1,248 @@
+2010-07-30  Jakub Jelinek  <jakub at redhat.com>
+
+	PR debug/45055
+	PR rtl-optimization/45137
+	* rtl.h (prev_nonnote_nondebug_insn, next_nonnote_nondebug_insn): New
+	prototypes.
+	* emit-rtl.c (prev_nonnote_nondebug_insn, next_nonnote_nondebug_insn):
+	New functions.
+	* combine.c (next_nonnote_nondebug_insn): Removed.
+	* ifcvt.c (noce_process_if_block): Use prev_nonnote_nondebug_insn.
+	* haifa-sched.c (queue_to_ready): Use next_nonnote_nondebug_insn.
+	* sched-deps.c (sched_analyze_insn): Likewise.
+	(fixup_sched_groups, deps_start_bb): Use prev_nonnote_nondebug_insn.
+	* rtlanal.c (canonicalize_condition): Likewise.
+	* postreload.c (reload_combine): Likewise.
+	(reload_cse_move2add): Use next_nonnote_nondebug_insn.
+
+	* gcc.dg/pr45055.c: New test.
+
+--- gcc/rtl.h.jj	2010-06-11 11:06:01.167282688 +0200
++++ gcc/rtl.h	2010-07-30 16:33:28.722450824 +0200
+@@ -1709,6 +1709,8 @@ extern rtx next_nonnote_insn (rtx);
+ extern rtx next_nonnote_insn_bb (rtx);
+ extern rtx prev_nondebug_insn (rtx);
+ extern rtx next_nondebug_insn (rtx);
++extern rtx prev_nonnote_nondebug_insn (rtx);
++extern rtx next_nonnote_nondebug_insn (rtx);
+ extern rtx prev_real_insn (rtx);
+ extern rtx next_real_insn (rtx);
+ extern rtx prev_active_insn (rtx);
+--- gcc/emit-rtl.c.jj	2010-06-11 11:06:01.104409599 +0200
++++ gcc/emit-rtl.c	2010-07-30 16:33:28.733479816 +0200
+@@ -3162,6 +3162,38 @@ prev_nondebug_insn (rtx insn)
+   return insn;
+ }
+ 
++/* Return the next insn after INSN that is not a NOTE nor DEBUG_INSN.
++   This routine does not look inside SEQUENCEs.  */
++
++rtx
++next_nonnote_nondebug_insn (rtx insn)
++{
++  while (insn)
++    {
++      insn = NEXT_INSN (insn);
++      if (insn == 0 || (!NOTE_P (insn) && !DEBUG_INSN_P (insn)))
++	break;
++    }
++
++  return insn;
++}
++
++/* Return the previous insn before INSN that is not a NOTE nor DEBUG_INSN.
++   This routine does not look inside SEQUENCEs.  */
++
++rtx
++prev_nonnote_nondebug_insn (rtx insn)
++{
++  while (insn)
++    {
++      insn = PREV_INSN (insn);
++      if (insn == 0 || (!NOTE_P (insn) && !DEBUG_INSN_P (insn)))
++	break;
++    }
++
++  return insn;
++}
++
+ /* Return the next INSN, CALL_INSN or JUMP_INSN after INSN;
+    or 0, if there is none.  This routine does not look inside
+    SEQUENCEs.  */
+--- gcc/combine.c.jj	2010-06-11 11:06:01.175282562 +0200
++++ gcc/combine.c	2010-07-30 16:33:28.754479788 +0200
+@@ -12680,29 +12680,6 @@ reg_bitfield_target_p (rtx x, rtx body)
+ 
+   return 0;
+ }
+-
+-/* Return the next insn after INSN that is neither a NOTE nor a
+-   DEBUG_INSN.  This routine does not look inside SEQUENCEs.  */
+-
+-static rtx
+-next_nonnote_nondebug_insn (rtx insn)
+-{
+-  while (insn)
+-    {
+-      insn = NEXT_INSN (insn);
+-      if (insn == 0)
+-	break;
+-      if (NOTE_P (insn))
+-	continue;
+-      if (DEBUG_INSN_P (insn))
+-	continue;
+-      break;
+-    }
+-
+-  return insn;
+-}
+-
+-
+ 
+ /* Given a chain of REG_NOTES originally from FROM_INSN, try to place them
+    as appropriate.  I3 and I2 are the insns resulting from the combination
+--- gcc/ifcvt.c.jj	2010-06-11 11:06:00.939658763 +0200
++++ gcc/ifcvt.c	2010-07-30 16:33:28.768458909 +0200
+@@ -2285,9 +2285,7 @@ noce_process_if_block (struct noce_if_in
+     }
+   else
+     {
+-      insn_b = prev_nonnote_insn (if_info->cond_earliest);
+-      while (insn_b && DEBUG_INSN_P (insn_b))
+-	insn_b = prev_nonnote_insn (insn_b);
++      insn_b = prev_nonnote_nondebug_insn (if_info->cond_earliest);
+       /* We're going to be moving the evaluation of B down from above
+ 	 COND_EARLIEST to JUMP.  Make sure the relevant data is still
+ 	 intact.  */
+--- gcc/haifa-sched.c.jj	2010-06-30 16:53:00.807292319 +0200
++++ gcc/haifa-sched.c	2010-07-30 16:33:28.785485355 +0200
+@@ -1997,13 +1997,9 @@ queue_to_ready (struct ready_list *ready
+   q_ptr = NEXT_Q (q_ptr);
+ 
+   if (dbg_cnt (sched_insn) == false)
+-    {
+-      /* If debug counter is activated do not requeue insn next after
+-	 last_scheduled_insn.  */
+-      skip_insn = next_nonnote_insn (last_scheduled_insn);
+-      while (skip_insn && DEBUG_INSN_P (skip_insn))
+-	skip_insn = next_nonnote_insn (skip_insn);
+-    }
++    /* If debug counter is activated do not requeue insn next after
++       last_scheduled_insn.  */
++    skip_insn = next_nonnote_nondebug_insn (last_scheduled_insn);
+   else
+     skip_insn = NULL_RTX;
+ 
+--- gcc/sched-deps.c.jj	2010-06-11 11:06:01.160283802 +0200
++++ gcc/sched-deps.c	2010-07-30 16:33:28.799486427 +0200
+@@ -1517,9 +1517,7 @@ fixup_sched_groups (rtx insn)
+ 
+   delete_all_dependences (insn);
+ 
+-  prev_nonnote = prev_nonnote_insn (insn);
+-  while (DEBUG_INSN_P (prev_nonnote))
+-    prev_nonnote = prev_nonnote_insn (prev_nonnote);
++  prev_nonnote = prev_nonnote_nondebug_insn (insn);
+   if (BLOCK_FOR_INSN (insn) == BLOCK_FOR_INSN (prev_nonnote)
+       && ! sched_insns_conditions_mutex_p (insn, prev_nonnote))
+     add_dependence (insn, prev_nonnote, REG_DEP_ANTI);
+@@ -2695,9 +2693,7 @@ sched_analyze_insn (struct deps_desc *de
+   if (JUMP_P (insn))
+     {
+       rtx next;
+-      next = next_nonnote_insn (insn);
+-      while (next && DEBUG_INSN_P (next))
+-	next = next_nonnote_insn (next);
++      next = next_nonnote_nondebug_insn (insn);
+       if (next && BARRIER_P (next))
+ 	reg_pending_barrier = MOVE_BARRIER;
+       else
+@@ -3366,10 +3362,8 @@ deps_start_bb (struct deps_desc *deps, r
+      hard registers correct.  */
+   if (! reload_completed && !LABEL_P (head))
+     {
+-      rtx insn = prev_nonnote_insn (head);
++      rtx insn = prev_nonnote_nondebug_insn (head);
+ 
+-      while (insn && DEBUG_INSN_P (insn))
+-	insn = prev_nonnote_insn (insn);
+       if (insn && CALL_P (insn))
+ 	deps->in_post_call_group_p = post_call_initial;
+     }
+--- gcc/postreload.c.jj	2010-06-11 11:06:00.856659196 +0200
++++ gcc/postreload.c	2010-07-30 16:34:14.703335670 +0200
+@@ -810,7 +810,7 @@ reload_combine (void)
+ 	  rtx reg = SET_DEST (set);
+ 	  rtx plus = SET_SRC (set);
+ 	  rtx base = XEXP (plus, 1);
+-	  rtx prev = prev_nonnote_insn (insn);
++	  rtx prev = prev_nonnote_nondebug_insn (insn);
+ 	  rtx prev_set = prev ? single_set (prev) : NULL_RTX;
+ 	  unsigned int regno = REGNO (reg);
+ 	  rtx index_reg = NULL_RTX;
+@@ -1323,7 +1323,7 @@ reload_cse_move2add (rtx first)
+ 		       && MODES_OK_FOR_MOVE2ADD (GET_MODE (reg),
+ 						 reg_mode[REGNO (src)]))
+ 		{
+-		  rtx next = next_nonnote_insn (insn);
++		  rtx next = next_nonnote_nondebug_insn (insn);
+ 		  rtx set = NULL_RTX;
+ 		  if (next)
+ 		    set = single_set (next);
+--- gcc/rtlanal.c.jj	2010-06-11 11:06:00.867421367 +0200
++++ gcc/rtlanal.c	2010-07-30 16:33:28.820478800 +0200
+@@ -4755,9 +4755,7 @@ canonicalize_condition (rtx insn, rtx co
+ 	 stop if it isn't a single set or if it has a REG_INC note because
+ 	 we don't want to bother dealing with it.  */
+ 
+-      do
+-	prev = prev_nonnote_insn (prev);
+-      while (prev && DEBUG_INSN_P (prev));
++      prev = prev_nonnote_nondebug_insn (prev);
+ 
+       if (prev == 0
+ 	  || !NONJUMP_INSN_P (prev)
+--- gcc/testsuite/gcc.dg/pr45055.c.jj	2010-07-30 16:33:28.821480043 +0200
++++ gcc/testsuite/gcc.dg/pr45055.c	2010-07-30 16:33:28.822479707 +0200
+@@ -0,0 +1,41 @@
++/* PR debug/45055 */
++/* { dg-do compile } */
++/* { dg-options "-O2 -ftracer -fsched-pressure -funroll-loops -fschedule-insns -fcompare-debug" } */
++
++int colormap[10];
++
++extern int bar ();
++
++void
++foo (int *img, int fp, int y, int *ptr, int depth, int c, int t, int xm)
++{
++  int x, color, count;
++  for (; y; y--)
++    {
++      if (depth)
++	{
++	  count = bar ();
++	  for (x = xm; x; x--)
++	    {
++	      if (c != 1)
++		count = color = -1;
++	      if (count == 0)
++		color = count = bar ();
++	      if (color)
++		t = bar (fp);
++	      *ptr++ = colormap[t];
++	    }
++	}
++      switch (*img)
++	{
++	case 1:
++	  bar ();
++	case 3:
++	case -1:
++	case -3:
++	  bar ();
++	case -4:
++	  bar ();
++	}
++    }
++}
diff --git a/sources b/sources
index ded46f1..7d22e9b 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
 2659f09c2e43ef8b7d4406321753f1b2  fastjar-0.97.tar.gz
-dc1cae2fe66fc33f29edae7aca29da65  gcc-4.5.0-20100716.tar.bz2
+70ea3784e66a23f1e3761cd8e58a7e76  gcc-4.5.0-20100730.tar.bz2


More information about the scm-commits mailing list