diff options
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.patch | 45 |
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; + |