cc/gcc: backport upstream patches for GCC bug 54369
authorFlorian Fainelli <f.fainelli@gmail.com>
Wed Sep 19 10:35:32 2012 +0200 (2012-09-19)
changeset 3049f0ae157444dc
parent 3048 2858a24a5846
child 3050 4b4b765305da
cc/gcc: backport upstream patches for GCC bug 54369

See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54369 for more information
This bug has a serious effect on Linux/MIPS and SPARC kernel builds.

Add the fix for these versions of gcc: 4.6.0, 4.6.2, 4.6.3, and 4.7.0.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
patches/gcc/4.6.0/000-gcc-bug-54369.patch
patches/gcc/4.6.1/000-gcc-bug-54369.patch
patches/gcc/4.6.2/000-gcc-bug-54369.patch
patches/gcc/4.6.3/000-gcc-bug-54369.patch
patches/gcc/4.7.0/000-gcc-bug-54369.patch
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/patches/gcc/4.6.0/000-gcc-bug-54369.patch	Wed Sep 19 10:35:32 2012 +0200
     1.3 @@ -0,0 +1,45 @@
     1.4 +Author: ebotcazou
     1.5 +Date: Sun Sep  2 10:37:49 2012
     1.6 +New Revision: 190860
     1.7 +
     1.8 +URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=190860
     1.9 +Log:
    1.10 +    PR rtl-optimization/54369
    1.11 +    * config/mips/mips.c (mips_reorg): Invoke cleanup_barriers before
    1.12 +    calling dbr_schedule.
    1.13 +    * config/sparc/sparc.c (sparc_reorg): Likewise.
    1.14 +
    1.15 +Modified:
    1.16 +    branches/gcc-4_6-branch/gcc/ChangeLog
    1.17 +    branches/gcc-4_6-branch/gcc/config/mips/mips.c
    1.18 +    branches/gcc-4_6-branch/gcc/config/sparc/sparc.c
    1.19 +---
    1.20 +--- gcc-4_6-branch/gcc/config/mips/mips.c	2012/09/02 10:36:54	190859
    1.21 ++++ gcc-4_6-branch/gcc/config/mips/mips.c	2012/09/02 10:37:49	190860
    1.22 +@@ -15083,7 +15083,10 @@
    1.23 +     }
    1.24 + 
    1.25 +   if (optimize > 0 && flag_delayed_branch)
    1.26 +-    dbr_schedule (get_insns ());
    1.27 ++    {
    1.28 ++      cleanup_barriers ();
    1.29 ++      dbr_schedule (get_insns ());
    1.30 ++    }
    1.31 +   mips_reorg_process_insns ();
    1.32 +   if (!TARGET_MIPS16
    1.33 +       && TARGET_EXPLICIT_RELOCS
    1.34 +--- gcc-4_6-branch/gcc/config/sparc/sparc.c	2012/09/02 10:36:54	190859
    1.35 ++++ gcc-4_6-branch/gcc/config/sparc/sparc.c	2012/09/02 10:37:49	190860
    1.36 +@@ -9456,7 +9456,10 @@
    1.37 +   /* We need to have the (essentially) final form of the insn stream in order
    1.38 +      to properly detect the various hazards.  Run delay slot scheduling.  */
    1.39 +   if (optimize > 0 && flag_delayed_branch)
    1.40 +-    dbr_schedule (get_insns ());
    1.41 ++    {
    1.42 ++      cleanup_barriers ();
    1.43 ++      dbr_schedule (get_insns ());
    1.44 ++    }
    1.45 + 
    1.46 +   /* Now look for specific patterns in the insn stream.  */
    1.47 +   for (insn = get_insns (); insn; insn = next)
    1.48 +
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/patches/gcc/4.6.1/000-gcc-bug-54369.patch	Wed Sep 19 10:35:32 2012 +0200
     2.3 @@ -0,0 +1,45 @@
     2.4 +Author: ebotcazou
     2.5 +Date: Sun Sep  2 10:37:49 2012
     2.6 +New Revision: 190860
     2.7 +
     2.8 +URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=190860
     2.9 +Log:
    2.10 +    PR rtl-optimization/54369
    2.11 +    * config/mips/mips.c (mips_reorg): Invoke cleanup_barriers before
    2.12 +    calling dbr_schedule.
    2.13 +    * config/sparc/sparc.c (sparc_reorg): Likewise.
    2.14 +
    2.15 +Modified:
    2.16 +    branches/gcc-4_6-branch/gcc/ChangeLog
    2.17 +    branches/gcc-4_6-branch/gcc/config/mips/mips.c
    2.18 +    branches/gcc-4_6-branch/gcc/config/sparc/sparc.c
    2.19 +---
    2.20 +--- gcc-4_6-branch/gcc/config/mips/mips.c	2012/09/02 10:36:54	190859
    2.21 ++++ gcc-4_6-branch/gcc/config/mips/mips.c	2012/09/02 10:37:49	190860
    2.22 +@@ -15083,7 +15083,10 @@
    2.23 +     }
    2.24 + 
    2.25 +   if (optimize > 0 && flag_delayed_branch)
    2.26 +-    dbr_schedule (get_insns ());
    2.27 ++    {
    2.28 ++      cleanup_barriers ();
    2.29 ++      dbr_schedule (get_insns ());
    2.30 ++    }
    2.31 +   mips_reorg_process_insns ();
    2.32 +   if (!TARGET_MIPS16
    2.33 +       && TARGET_EXPLICIT_RELOCS
    2.34 +--- gcc-4_6-branch/gcc/config/sparc/sparc.c	2012/09/02 10:36:54	190859
    2.35 ++++ gcc-4_6-branch/gcc/config/sparc/sparc.c	2012/09/02 10:37:49	190860
    2.36 +@@ -9456,7 +9456,10 @@
    2.37 +   /* We need to have the (essentially) final form of the insn stream in order
    2.38 +      to properly detect the various hazards.  Run delay slot scheduling.  */
    2.39 +   if (optimize > 0 && flag_delayed_branch)
    2.40 +-    dbr_schedule (get_insns ());
    2.41 ++    {
    2.42 ++      cleanup_barriers ();
    2.43 ++      dbr_schedule (get_insns ());
    2.44 ++    }
    2.45 + 
    2.46 +   /* Now look for specific patterns in the insn stream.  */
    2.47 +   for (insn = get_insns (); insn; insn = next)
    2.48 +
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/patches/gcc/4.6.2/000-gcc-bug-54369.patch	Wed Sep 19 10:35:32 2012 +0200
     3.3 @@ -0,0 +1,45 @@
     3.4 +Author: ebotcazou
     3.5 +Date: Sun Sep  2 10:37:49 2012
     3.6 +New Revision: 190860
     3.7 +
     3.8 +URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=190860
     3.9 +Log:
    3.10 +    PR rtl-optimization/54369
    3.11 +    * config/mips/mips.c (mips_reorg): Invoke cleanup_barriers before
    3.12 +    calling dbr_schedule.
    3.13 +    * config/sparc/sparc.c (sparc_reorg): Likewise.
    3.14 +
    3.15 +Modified:
    3.16 +    branches/gcc-4_6-branch/gcc/ChangeLog
    3.17 +    branches/gcc-4_6-branch/gcc/config/mips/mips.c
    3.18 +    branches/gcc-4_6-branch/gcc/config/sparc/sparc.c
    3.19 +---
    3.20 +--- gcc-4_6-branch/gcc/config/mips/mips.c	2012/09/02 10:36:54	190859
    3.21 ++++ gcc-4_6-branch/gcc/config/mips/mips.c	2012/09/02 10:37:49	190860
    3.22 +@@ -15083,7 +15083,10 @@
    3.23 +     }
    3.24 + 
    3.25 +   if (optimize > 0 && flag_delayed_branch)
    3.26 +-    dbr_schedule (get_insns ());
    3.27 ++    {
    3.28 ++      cleanup_barriers ();
    3.29 ++      dbr_schedule (get_insns ());
    3.30 ++    }
    3.31 +   mips_reorg_process_insns ();
    3.32 +   if (!TARGET_MIPS16
    3.33 +       && TARGET_EXPLICIT_RELOCS
    3.34 +--- gcc-4_6-branch/gcc/config/sparc/sparc.c	2012/09/02 10:36:54	190859
    3.35 ++++ gcc-4_6-branch/gcc/config/sparc/sparc.c	2012/09/02 10:37:49	190860
    3.36 +@@ -9456,7 +9456,10 @@
    3.37 +   /* We need to have the (essentially) final form of the insn stream in order
    3.38 +      to properly detect the various hazards.  Run delay slot scheduling.  */
    3.39 +   if (optimize > 0 && flag_delayed_branch)
    3.40 +-    dbr_schedule (get_insns ());
    3.41 ++    {
    3.42 ++      cleanup_barriers ();
    3.43 ++      dbr_schedule (get_insns ());
    3.44 ++    }
    3.45 + 
    3.46 +   /* Now look for specific patterns in the insn stream.  */
    3.47 +   for (insn = get_insns (); insn; insn = next)
    3.48 +
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/patches/gcc/4.6.3/000-gcc-bug-54369.patch	Wed Sep 19 10:35:32 2012 +0200
     4.3 @@ -0,0 +1,45 @@
     4.4 +Author: ebotcazou
     4.5 +Date: Sun Sep  2 10:37:49 2012
     4.6 +New Revision: 190860
     4.7 +
     4.8 +URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=190860
     4.9 +Log:
    4.10 +    PR rtl-optimization/54369
    4.11 +    * config/mips/mips.c (mips_reorg): Invoke cleanup_barriers before
    4.12 +    calling dbr_schedule.
    4.13 +    * config/sparc/sparc.c (sparc_reorg): Likewise.
    4.14 +
    4.15 +Modified:
    4.16 +    branches/gcc-4_6-branch/gcc/ChangeLog
    4.17 +    branches/gcc-4_6-branch/gcc/config/mips/mips.c
    4.18 +    branches/gcc-4_6-branch/gcc/config/sparc/sparc.c
    4.19 +---
    4.20 +--- gcc-4_6-branch/gcc/config/mips/mips.c	2012/09/02 10:36:54	190859
    4.21 ++++ gcc-4_6-branch/gcc/config/mips/mips.c	2012/09/02 10:37:49	190860
    4.22 +@@ -15083,7 +15083,10 @@
    4.23 +     }
    4.24 + 
    4.25 +   if (optimize > 0 && flag_delayed_branch)
    4.26 +-    dbr_schedule (get_insns ());
    4.27 ++    {
    4.28 ++      cleanup_barriers ();
    4.29 ++      dbr_schedule (get_insns ());
    4.30 ++    }
    4.31 +   mips_reorg_process_insns ();
    4.32 +   if (!TARGET_MIPS16
    4.33 +       && TARGET_EXPLICIT_RELOCS
    4.34 +--- gcc-4_6-branch/gcc/config/sparc/sparc.c	2012/09/02 10:36:54	190859
    4.35 ++++ gcc-4_6-branch/gcc/config/sparc/sparc.c	2012/09/02 10:37:49	190860
    4.36 +@@ -9456,7 +9456,10 @@
    4.37 +   /* We need to have the (essentially) final form of the insn stream in order
    4.38 +      to properly detect the various hazards.  Run delay slot scheduling.  */
    4.39 +   if (optimize > 0 && flag_delayed_branch)
    4.40 +-    dbr_schedule (get_insns ());
    4.41 ++    {
    4.42 ++      cleanup_barriers ();
    4.43 ++      dbr_schedule (get_insns ());
    4.44 ++    }
    4.45 + 
    4.46 +   /* Now look for specific patterns in the insn stream.  */
    4.47 +   for (insn = get_insns (); insn; insn = next)
    4.48 +
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/patches/gcc/4.7.0/000-gcc-bug-54369.patch	Wed Sep 19 10:35:32 2012 +0200
     5.3 @@ -0,0 +1,45 @@
     5.4 +Author: ebotcazou
     5.5 +Date: Sun Sep  2 10:36:54 2012
     5.6 +New Revision: 190859
     5.7 +
     5.8 +URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=190859
     5.9 +Log:
    5.10 +    PR rtl-optimization/54369
    5.11 +    * config/mips/mips.c (mips_reorg): Invoke cleanup_barriers before
    5.12 +    calling dbr_schedule.
    5.13 +    * config/sparc/sparc.c (sparc_reorg): Likewise.
    5.14 +
    5.15 +Modified:
    5.16 +    branches/gcc-4_7-branch/gcc/ChangeLog
    5.17 +    branches/gcc-4_7-branch/gcc/config/mips/mips.c
    5.18 +    branches/gcc-4_7-branch/gcc/config/sparc/sparc.c
    5.19 +---
    5.20 +--- gcc-4_7-branch/gcc/config/mips/mips.c	2012/09/02 10:36:27	190858
    5.21 ++++ gcc-4_7-branch/gcc/config/mips/mips.c	2012/09/02 10:36:54	190859
    5.22 +@@ -15415,7 +15415,10 @@
    5.23 +     }
    5.24 + 
    5.25 +   if (optimize > 0 && flag_delayed_branch)
    5.26 +-    dbr_schedule (get_insns ());
    5.27 ++    {
    5.28 ++      cleanup_barriers ();
    5.29 ++      dbr_schedule (get_insns ());
    5.30 ++    }
    5.31 +   mips_reorg_process_insns ();
    5.32 +   if (!TARGET_MIPS16
    5.33 +       && TARGET_EXPLICIT_RELOCS
    5.34 +--- gcc-4_7-branch/gcc/config/sparc/sparc.c	2012/09/02 10:36:27	190858
    5.35 ++++ gcc-4_7-branch/gcc/config/sparc/sparc.c	2012/09/02 10:36:54	190859
    5.36 +@@ -10663,7 +10663,10 @@
    5.37 +   /* We need to have the (essentially) final form of the insn stream in order
    5.38 +      to properly detect the various hazards.  Run delay slot scheduling.  */
    5.39 +   if (optimize > 0 && flag_delayed_branch)
    5.40 +-    dbr_schedule (get_insns ());
    5.41 ++    {
    5.42 ++      cleanup_barriers ();
    5.43 ++      dbr_schedule (get_insns ());
    5.44 ++    }
    5.45 + 
    5.46 +   /* Now look for specific patterns in the insn stream.  */
    5.47 +   for (insn = get_insns (); insn; insn = next)
    5.48 +