aboutsummaryrefslogtreecommitdiffstats
path: root/toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99516.patch
diff options
context:
space:
mode:
Diffstat (limited to 'toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99516.patch')
-rw-r--r--toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99516.patch45
1 files changed, 45 insertions, 0 deletions
diff --git a/toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99516.patch b/toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99516.patch
new file mode 100644
index 0000000000..e058eb15e0
--- /dev/null
+++ b/toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99516.patch
@@ -0,0 +1,45 @@
+2011-06-09 Chung-Lin Tang <cltang@codesourcery.com>
+
+ LP:748138
+
+ gcc/
+ * cfgrtl.c (try_redirect_by_replacing_jump): Treat EXIT_BLOCK_PTR case
+ separately before call to redirect_jump(). Add assertion.
+ (patch_jump_insn): Same.
+
+=== modified file 'gcc/cfgrtl.c'
+--- old/gcc/cfgrtl.c 2011-02-08 10:51:58 +0000
++++ new/gcc/cfgrtl.c 2011-05-12 08:56:07 +0000
+@@ -835,11 +835,10 @@
+ if (dump_file)
+ fprintf (dump_file, "Redirecting jump %i from %i to %i.\n",
+ INSN_UID (insn), e->dest->index, target->index);
+- if (!redirect_jump (insn, block_label (target), 0))
+- {
+- gcc_assert (target == EXIT_BLOCK_PTR);
+- return NULL;
+- }
++ if (target == EXIT_BLOCK_PTR)
++ return NULL;
++ if (! redirect_jump (insn, block_label (target), 0))
++ gcc_unreachable ();
+ }
+
+ /* Cannot do anything for target exit block. */
+@@ -1019,11 +1018,10 @@
+ /* If the substitution doesn't succeed, die. This can happen
+ if the back end emitted unrecognizable instructions or if
+ target is exit block on some arches. */
+- if (!redirect_jump (insn, block_label (new_bb), 0))
+- {
+- gcc_assert (new_bb == EXIT_BLOCK_PTR);
+- return false;
+- }
++ if (new_bb == EXIT_BLOCK_PTR)
++ return false;
++ if (! redirect_jump (insn, block_label (new_bb), 0))
++ gcc_unreachable ();
+ }
+ }
+ return true;
+