1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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;
|